La semana pasada se cumplía el 25 aniversario de la World Wide Web. Un cuarto de siglo en el que, gracias a la web, el conocimiento se ha hecho mucho más accesible y universal; hoy en día podemos encontrar múltiples fuentes de información con las que profundizar en los temas que nos interesan e, incluso, formarnos a distancia. Blogs, foros, podcasts, vídeos en sitios como YouTube o plataformas de formación, como las que han surgido en los últimos años, son algunas de las fuentes de referencia que podemos encontrar en la red y con las que nos podemos formar son horarios y sin tener que desplazarnos a un aula física.
La formación a través de Internet no es sinónimo de baja calidad; gracias a sitios como edX (que tuvo su origen en el MIT), Coursera (en el que hay cursos de universidades de todo el mundo) o Udacity, hoy en día podemos encontrar en la red formación de calidad y, además, de manera gratuita. Una buena forma de ampliar nuestros conocimientos o comenzar a formarnos en temas en los que tenemos un especial interés y, por ejemplo, mejorar nuestro perfil profesional.
No es la primera vez que, en Bitelia, miramos al mundo de la formación y la capacitación online; en la red hay muy buenos programas formativos en los que podemos introducirnos en el apasionante mundo del desarrollo y la programación, una buena forma de dar nuestros primeros pasos en el mundo del desarrollo de aplicaciones y, quizás, orientar así nuestro futuro profesional.
Gabriela nos habló de sitios web en los que aprender a programar de manera gratuita y, hace unos meses, hablamos de cursos gratuitos para aprender a programar; precisamente, vamos a retomar la senda de los cursos de calidad gratuitos y vamos a repasar algunas ofertas formativas que están abiertas para que nos podamos inscribir y, de esta forma, aprender a programar:
Intro to Programming (Problem Solving with Java)
Intro to Programming (Problem Solving with Java) es un programa que podemos encontrar en Udacity y que tiene como objetivo introducir al alumno en el desarrollo de software. El curso, impartido por un profesor de San Jose State University y también por un antiguo manager de Microsoft, parte de los conceptos más básicos del desarrollo del software (algoritmia, estructuras básicas...) para ir creando una base que permita al alumno entender el esquema básico de un programa, la importancia de comentar el código para poder reutilizarlo más adelante y, por supuesto, aprender a programar con un lenguaje orientado a objetos como es Java.
Para apuntarse a este curso no es necesario contar con conocimientos previos de programación; de hecho, la idea es comenzar a aprender lo básico y, así, establecer una base que permita seguir ampliando conocimientos.
Introduction to Computer Programming
Introduction to Computer Programming es un programa formativo que cuenta con dos cursos impartidos por el Instituto Tecnológico de Bombay. Cada uno de estos cursos, de unas seis semanas de duración cada uno, tiene como objetivo introducir al alumno en el mundo de la programación, eso sí, partiendo de lo más básico; no es necesario saber programar previamente pero sí que se recomienda conocimientos en cálculo o matemáticas porque sí que se introduce al alumno en algoritmia.
El programa está estructurado por una primera parte básica en la que se tratan aspectos como la algoritmia, estructuras básicas de datos, programación iterativa, matrices y tablas para pasar después al manejo de cadenas de caracteres, punteros y manejo de gráficos. El curso gira alrededor del lenguaje C y durante el curso se estudia este lenguaje y también C++ para introducir al alumno en la programación orientada a objetos.
Compiladores
Compilers es el nombre de un curioso curso que imparte la Universidad de Stanford a través de Coursera; un programa formativo con un nivel avanzado que tiene como objetivo introducir al alumno en el mundo de los compiladores. Cuando escribimos un programa en un lenguaje determinado, el código debe compilarse para llevarlo a un lenguaje de bajo nivel que permita que el programa se pueda ejecutar en cualquier máquina; el responsable de esta transformación es el compilador y, precisamente, este es el núcleo del curso.
La idea es comprender cómo funciona el proceso de compilación del código; entender el proceso de análisis de sintaxis, revisión de errores o las transformaciones intermedias que se realizan al código que hemos escrito para transformarlo en un software plenamente funcional. Para los alumnos más aventajados, el curso ofrece la posibilidad de realizar un "trabajo final" en el que el alumno desarrolle su propio compilador.
Design of Computer Programs
Design of Computer Programs es un curso que podemos encontrar en Udacity y que, en mi opinión, vale la pena que revisemos. El instructor de este curso es Peter Norvig, director de investigación de Google; un docente con bastante solvencia técnica como para entrar en un nivel avanzado de programación.
Este curso requiere conocimientos previos y es de un nivel avanzado; el enfoque es práctico y está orientado a la resolución de problemas complejos, así que es interesante haber realizado algún que otro curso previo de introducción a la programación o la algoritmia.
Programación creativa para medios digitales y aplicaciones móviles
Programación creativa para medios digitales y aplicaciones móviles es un programa formativo bastante singular que podemos encontrar en Coursera; impartido por docentes e investigadores de la Universidad de Londres, este curso aborda la programación desde una perspectiva bastante curiosa: su aplicación a los contenidos multimedia y las aplicaciones móviles.
Más que un curso orientado a aprender a programar, este curso tiene como objetivo que aprendamos a usar nuestros conocimientos técnicos en áreas creativas. Dicho de otra forma, el objetivo de este curso es que seamos capaces de poner en marcha el desarrollo de un videojuego o, por ejemplo, participar en la construcción de un sistema musical interactivo; proyectos creativos pero que tienen base tecnológica.
Programming Languages: Building a Web Browser
Programming Languages: Building a Web Browser es un curso que está disponible en Udacity y es impartido por un profesor de la Universidad de Virginia. El objetivo de este curso es introducirnos en el mundo del desarrollo de software pero con una particularidad; el enfoque será práctico y el alumno desarrollará su propio navegador web.
La idea es que el alumno se introduzca en las expresiones regulares, el análisis de estructuras de código o la interpretación de un código. Precisamente, como ejemplo de interpretación de código HTML y JavaScript, el alumno desarrollará su propio navegador para verificar que ha asimilado los conocimientos que se han impartido en el curso.
Aprendiendo a programar: elaboración de código de calidad
Aprendiendo a programar: elaboración de código de calidad es el título de un curso que encuentro especialmente interesante si, por ejemplo, quieres trabajar en proyectos de desarrollo de software. Normalmente tendemos a centrarnos en el desarrollo de aplicaciones, es decir, en aprender a programar; sin embargo, desde una perspectiva profesional, la calidad de los productos es importante.
El objetivo de este curso es introducir al alumno en la importancia de la calidad del software; es decir, una aplicación no solamente debe funcionar, también debe ser eficiente y el código debería poder entenderse sin necesidad de aplicar "ingeniería inversa". El curso, impartido por profesores de la Universidad de Toronto, es una buena base para introducirse en el mundo del testing y la depuración aunque, eso sí, es importante saber algo de programación antes de realizar este curso sobre optimización y calidad.
Software Testing: How to Make Software Fail
Software Testing: How to Make Software Fail es un curso de Udacity muy orientado a profesionales o gente que ya tiene conocimientos previos sobre programación. El curso también está orientado a calidad de software aunque, eso sí, su foco está puesto en el testing de aplicaciones.
El curso se centra en la fase final de un producto software: las pruebas que debemos realizar para verificar que la aplicación funciona adecuadamente. El objetivo de este curso, impartido por un docente de la Universidad de Utah, es aprender a *cazar bugs** y encontrar fallos antes de que, por ejemplo, pasemos una aplicación a un entorno de producción. Evidentemente, si aprendemos a cazar bugs* y a revisar software, también aprenderemos a desarrollar mejor.
Web Application Architectures
En Web Application Architectures, un curso que podemos encontrar en Coursera gracias a la Universidad de Nuevo México, encontraremos un programa formativo orientado al desarrollo de aplicaciones web. El curso está muy enfocado en la ingeniería; no es un curso para aprender HTML y desarrollar una web, su objetivo es que aprendamos a plantear la arquitectura de una aplicación en base a la superposición de capas de abstracción.
El tema es bastante complejo y, de hecho, el curso es una introducción que persigue que el alumno se interese por el tema y siga investigando por su cuenta aunque, eso sí, también tiene su parte práctica gracias al desarrollo en Ruby on Rails como framework de referencia.
Introducción a las bases de datos
No podíamos cerrar este repaso sin poner el foco en uno de los pilares básicos de muchas de las aplicaciones que usamos a diario: las bases de datos. En Introducción a las bases de datos, un curso que encontraremos en Coursera gracias a la Universidad de Stanford y que ha sido uno de los de mayor aceptación de esta plataforma, encontraremos la información necesaria para dar nuestros primeros pasos en la integración de bases de datos en nuestras aplicaciones.
El curso nos introduce en el diseño de bases de datos mediante el lenguaje UML, aprenderemos a diseñar los modelos de "entidad-relación" que forman una base de datos, se introduce al alumno en las sentencias SQL para realizar consultas u operaciones con una base de datos entre otros aspectos. Este curso es introductorio, por tanto, no es necesario tener conocimientos previos en bases de datos.