En informática podemos entender a un algoritmo como una secuencia de pasos que se deben ejecutar para realizar una determinada tarea. Por ejemplo, existen varios algoritmos para ordenar una secuencia de elementos. Cada algoritmo de ordenamiento es una forma distinta de realizar la misma tarea. Algunos pueden ser más eficientes que otros, o más fáciles de escribir y mantener.
Los algoritmos se diseñan con una meta en particular, con un objetivo dado. Existen varias técnicas para diseñar y analizar algoritmos.
Los algoritmos no son exclusivos de la informática, sino que se utilizan también en otras disciplinas, estrechamente vinculadas a la computación, como las matemáticas y la lógica.
Cuando hablamos de eficiencia, en general nos referimos a la cantidad de recursos que necesita nuestro algoritmo para completar la tarea.
Un programa es una implementación de un algoritmo, escrita en un lenguaje de programación que la computadora es capaz de entender y ejecutar.
Los programas en general manipulan datos, toman datos como entrada, los procesan y generan salidas, ya sea en la forma de información desplegada en una pantalla o datos almacenados en un disco. Esta manipulación requiere que los datos estén organizados, lo que conocemos como Estructuras de Datos. Podemos pensar en las estructuras como bloques donde se almacenan y manipulan datos, y que pueden combinarse para generar estructuras más complejas.
1¿Por qué es necesario estudiar algoritmos y estructuras de datos?¶
En principio, porque los algoritmos y las estructuras de datos son la base que permite a las computadoras realizar tareas cada vez más complejas. Por lo tanto, elegir las estructuras adecuadas y aplicar técnicas de diseño de algoritmos puede ser la diferencia entre obtener un programa eficiente o uno que no funcione bien o malgaste recursos. Por otro lado, su estudio fomenta el desarrollo del pensamiento lógico y abstracto, habilidades esenciales para profesionales de la computación.
Aprender a programar requiere tiempo y esfuerzo; es una tarea incremental que hay que llevar a cabo con constancia y paciencia. No alcanza con entender los conceptos teóricos o apropiarse de soluciones que desarrollaron otras personas. Aprender a programar se parece a aprender a tocar un instrumento musical. Al principio, hay que aprender las notas, las escalas y los acordes básicos, pero para convertirse en un experto se necesita practicar constantemente. Cada vez que tocamos una pieza, estamos fortaleciendo los dedos, mejorando la coordinación y desarrollando el oído musical. De la misma manera, al programar, cada línea de código que escribimos, cada error que encontramos y corregimos, y cada proyecto que completamos nos acerca más a convertirnos en mejores programadores. La clave está en la repetición, la creatividad y la mejora continua.
2Cursada¶
El objetivo final de la materia es aprender las bases fundamentales de la programación, pero también desarrollar habilidades como el trabajo en equipo, el aprendizaje continuo y la comunicación efectiva.
Las clases se organizan alrededor de la práctica, por lo que es necesario que lean previamente los temas del día para no perder el ritmo. En clase se sintetizan los contenidos teóricos, se aclaran conceptos y nos ponemos manos a la obra. Los encuentros son híbridos, a veces virtuales y otras veces presenciales.
2.1Evaluaciones¶
Para poder regularizar la cursada es necesario aprobar dos parciales; cada uno se aprueba con 4 o más puntos. Además, se debe presentar y aprobar un proyecto grupal que tendrá entregas parciales y una presentación final (oral y escrita).
Para aprobar la materia además hay que aprobar un examen final. Para poder rendirlo es necesario tener aprobada Algoritmos y Programación I.
3Lenguaje de programación¶
Un lenguaje de programación es lo que nos permite comunicarnos con la computadora para que realice alguna tarea. Cada lenguaje de programación tiene su propia:
- Sintaxis
- Reglas gramaticales para escribir instrucciones válidas y que la computadora pueda comprender.
- Semántica
- Significado de cada instrucción.
Algunos lenguajes de programación, al igual que los idiomas hablados, permiten expresar mejor algunos conceptos que otros, por eso, para elegir un lenguaje de programación hay que tener en cuenta varios aspectos, como la naturaleza del proyecto y la experticia del equipo de trabajo, entre otros.
Teniendo en cuenta que esta materia es parte de la formación de ingenieras/os en computación, cuyo enfoque está en los sistemas integrados de hardware y software, elegimos Go como lenguaje por ser moderno, fácil de aprender y, a su vez, más cercano al hardware que otros lenguajes de alto nivel.