Curso de teleformación de C y sus herramientas

C es un lenguaje muy importante en el «mundo real». Se utiliza en muchísimas aplicaciones realmente interesantes, que abarcan cosas como los microcontroladores, las redes de sensores, los sistemas en tiempo real, los sistemas operativos y los juegos, por poner algunos ejemplos.

Sin embargo, el C que se utiliza no es la introducción básica a la programación que se enseña con C, que emplea cosas como cin, cout, y una serie de «trucos» para no «ver» cosas como los punteros. Los punteros están ahí, y no puedes evitarlos: para que C sea útil como lenguaje, tendrás que usar sus punteros. Y no se estudian en Programación I ni en Programación II. De hecho, la gran sorpresa de los alumnos de este curso cuando lo comienzan es que se dan cuenta hasta qué punto desconocen C.

El problema de usar las características de C que lo han hecho -y lo hacen- grande es que es muy difícil de depurar. Además, los programas grandes en C tienen cientos de miles de líneas, y eso hace ingobernable el editor simple de texto. Y con frecuencia trabajan decenas de personas en el mismo proyecto.

Parece evidente que los programas en C se terminan, se terminan sin errores, incluso los más grandes y los que involucran muchas personas. Pero eso se debe a que C no es apenas un compilador: la persona que programa profesionalmente en C conoce multitud de herramientas, que le facilitan la tarea de desarrollo para obtener productividades similares a los lenguajes de más alto nivel.

Y de eso va el curso.

Mi objetivo en el curso es darte un repaso de C, para «refrescar» conceptos (o aprenderlos; pero en ese caso, el curso te llevará más tiempo que el estimado. De cualquier forma, si entras sin tener ni idea de C, tanto por la documentación del curso como por los foros y las preguntas que me hagas, puedes aprender). Después pasamos a los punteros, que son el «gran olvidado» de muchos cursos donde se aprende a programar, y se aprende con C.

Y finalmente, viene la parte «divertida»: las herramientas. Decenas de herramientas que se utilizan para:

  • Depurar código: Aplicaciones como lclint son capaces de localizar errores comunes, de forma estática, en tu código. Errores en el paso de parámetros, y el uso de punteros. Valgrind también te permite depurar programas con facilidad.
  • Optimizar código: Valgrind también genera informes muy detallados de dónde «pierde el tiempo» tu aplicación, y dónde te interesa optimizar. Esto puede incluir partes del código, o funciones del sistema que realmente sean el cuello de botella de tu aplicación.
  • Desarrollar proyectos grandes: Herramientas como Makefile son imprescindibles para los proyectos grandes, al permitir compilar por separado partes del código, sin obligarte a recompilar partes ya compiladas.
  • Desarrollar proyectos entre varios: Sistemas de control de versiones como CVS o Subversion, que te permite saber quién ha hecho qué en cada momento, y hacer y deshacer según tus necesidades.
  • Hacer código portable: Herramientas como autoconf y automake te permitirán hacer código portable, e independiente de la plataforma.
  • Acelerar las compilaciones: Mediante herramientas como ccache y distcc, podrás acelerar las compilaciones en órdenes de magnitud.
  • Interpretar archivos de configuración: lex y yacc sirven para más cosas que para hacer compiladores: con una fracción del lex y el yacc, puedes leer e intepretar archivos de configuración muy complejos, con poco trabajo.

Además de todo esto, te enseñaré bibliotecas que me han sido de mucha utilidad y me han permitido desarrollar aplicaciones en el «mundo real» en muy poco tiempo, suponiendo mejora de eficiencia por utilizar estas bibliotecas una ventaja respecto a mi competencia. Dentro de estas, veremos RPC, que permite hacer aplicaciones cliente-servidor en red con una facilidad pasmosa (y sin tocar un socket); a intercomunicar procesos en una misma máquina con las bibliotecas de System V, y también te enseñaré algunos trucos y técnicas para hacer tus programas más seguros en C, así como a usar el splint para buscar agujeros de seguridad.

El curso será por teleformación. El curso requiere una base mínima: saber programar en algún lenguaje de programación -no explicaré qué es un bucle ni qué es una función; sí como se hacen en C-.

En el curso cubro muchísimas herramientas, por lo tanto. Todas las documento; y te responderé las dudas que tengo sobre todas ellas. Como en todos los cursos que imparto, me gusta dar mucho valor por el curso que ofrezco, y le podrás dedicar mucho tiempo al aprendizaje de muchas cosas útiles. Como en el caso del curso de LaTeX y el de Perl, tengo que acotar la parte necesaria para obtener el certificado de aprovechamiento a 25 horas; por lo que solo serán cuatro las actividades para el certificado de aprovechamiento. La lectura del material relativo a dichas práctica, su estudio y la ejecución de dichas prácticas debería llevarte aproximadamente 25 horas; aunque depende de tu nivel previo el tiempo efectivo que tardes. El resto de las prácticas serán opcionales, y te recomiendo que las realices para aprender más y sacar el máximo partido a este curso.

La Universidad de Málaga convalida dos créditos de libre configuración por curso para los alumnos de titulaciones de plan antiguo, y un crédito ETCS para los de plan nuevo (grados) . El curso costará 50€ a alumnos de la Universidad de Málaga, y 70€ a alumnos del curso que no pertenezcan a la UMA. La matriculación, por lo tanto, está abierta a gente de todo el mundo, y quizás os interese el curso.

Con el curso te llevas su documentación: un manual propio, en formato PDF, con más de seiscientas páginas de documentación original sobre C, herramientas para programar en C, y algunos de sus APIs más importantes.

Si tienes interés en saber como es el material, mándame tu nombre, tus apellidos, y tu correo electrónico, y te mandaré un par de capítulos y unas hojas del curso de ejemplo, para que veas la calidad del material y decidas si te interesa o no el curso. El correo es irbis arroba orcero.org, cambia el «arroba» por el signo @ para obtener el correo.

La matriculación puedes hacerla aquí: curso de C. Si estás con dudas, te recomiendo que preguntes a otros alumnos sobre los otros cursos que han realizado conmigo (el de LaTeX, este de C, el de informática forense, o el de Perl) y que te cuenten cómo les ha ido.

Además de este curso, también oferto otro curso de teleformación sobre LaTeX: curso de LaTeX.

Espero verte en el curso.

Curso de teleformación de LaTeX

Después del éxito del curso de LaTeX los últimos años, con más de dos centenares de matriculados, y realimentaciones muy positivas, este año voy a repetir el curso. El curso está teniendo especial éxito entre alumnos que quieren hacer su proyecto fin de carrera, su trabajo fin de grado o su tesis doctoral usando LaTeX; y hay alumnos matriculados de biología, matemáticas, de ingeniería ambiental, ingeniería industrial, informática y telecomunicaciones.

El curso está siendo por teleformación. Se compone de diez prácticas; de las cuales hay que realizar las seis primeras para obtener el certificado. Es una práctica por bloque temático; la primera es instalar LaTeX, la segunda convertir un documento sencillito de word a LaTeX, y luego aprendemos a estructurarlo como artículo, o como libro… aprendemos en este curso también a hacer ecuaciones, cartas y presentaciones en LaTeX, así como a incorporar fuentes, colores, y gráficos.

El curso está preparado para que te aporte mucho valor. Por un lado, tienes la parte para asegurar el certificado de aprovechamiento, El tiempo estimado para leer la parte obligatoria del material, hacer los ejemplos y realizar las prácticas obligatorias es de 25 horas de trabajo personal de promedio. Durante las prácticas tú tomarás el documento word que elijas (una práctica de alguna asignatura, un proyecto fin de carrera, o una tesis doctoral), la pasarás a LaTeX, e irás «enriqueciéndola», y mejorando su formato, hasta cubrir los seis primeros objetivos. Pero el curso no termina ahí si no quieres, y tienes muchísimo más material, para poder profundizar y dedicar todo el tiempo adicional que quieras para aprender mucho más LaTeX. Hasta llegar a definir la presentación de tu proyecto fin de carrera o tu tesis doctoral, y darle un formato fino, de gran calidad, y que se ajuste a lo que quieres.

El material que te envío está maquetado en formato de libro, de forma que cuentes con un «libro» en formato pdf con más de cuatrocientas páginas de documentación de LaTeX.

La Universidad de Málaga convalida dos créditos de libre configuración por curso para los alumnos de titulaciones de plan antiguo, y un crédito ETCS para los de plan nuevo (grados) . El curso costará 50€ a alumnos de la Universidad de Málaga, y 70€ a alumnos del curso que no pertenezcan a la UMA. La matriculación, por lo tanto, está abierta a gente de todo el mundo, y quizás os interese el curso.

Si tienes interés en saber como es el material, mándame tu nombre, tus apellidos, y tu correo electrónico, y te mandaré un par de capítulos y unas hojas del curso de ejemplo, para que veas la calidad del material y decidas si te interesa o no el curso. El correo es irbis arroba orcero.org, cambia el «arroba» por el signo @ para obtener el correo.

Pero… ¿No sabes qué es LaTeX?

LaTeX es un es un sistema de autoedición completo, que es muy conocido por matemáticos y físicos -ya que se utiliza de forma intensiva para la redacción de artículos científicos-. También es muy popular para la redacción de proyectos fin de carrera, disertaciones de maestría y tesis doctorales.

Es filosóficamente muy diferente al word: LaTeX en principio es compilado (aunque existen editories tipo Word para LaTeX). Utiliza etiquetas, como hace HTML. Esto permite que nosotros indiquemos en el cuerpo de texto solo qué se destaca, qué es nombre de capítulo, qué es pié de página… LaTeX usará la información de la cabecera para maquetar automáticamente el texto, generando un pdf ya con calidad profesional. Podemos confiar en los estilos de LaTeX, por lo que el trabajo será mínimo; o montárnoslo por nuestra cuenta, y mejorar el estilo para que LaTeX genere exactamente lo que queremos. Esto permite, por ejemplo, centrarnos en el contenido al principio, y solo cuando hemos terminado decir qué queremos que nos genere y con qué formato, y LaTeX hará el trabajo pesado de maquetación.

LaTeX ha sido muy popular en física y matemáticas por la sencillez para editar ecuaciones matemáticas extremadamente complejas. También tiene un tratamiento automatizado de bibliografía muy potente, y permite hacer cosas como transcripciones fonéticas en IPA con facilidad, y sin problemas de fuentes. Además, los que hacéis el proyecto fin de carrera conmigo sabéis que todos lo tenéis que hacer en LaTeX; principalmente porque soy muy vago, y no me gusta trabajar inútilmente contra el word para conseguir el formato deseado.

Vamos a ver en el curso tanto lo que en principio se suele dar -artículos, libros, proyectos fin de carrera y tesis en LaTeX- como otras cosas que no por menos conocidas son menos útiles: estudiaremos como hacer presentaciones, cartas, mailing masivos, generación automática de documentos con calidad profesional y todos los parámetros de formato de página.

La matriculación puedes hacerla aquí: curso de LaTeX. Si estás con dudas, te recomiendo que preguntes a otros alumnos que han hecho este curso el año pasado, y que te cuenten lo que aprendieron, el nivel de dificultad, la calidad del material, y si merece la pena.

Además de este curso, también oferto otro curso de teleformación sobre C y sus herramientas: curso de C.

Espero verte en el curso.