1. De que va la materia#

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 algoritmos pueden ser más eficientes que otros o más fácil de escribir y/o mantener que otros, etc.

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, se utilizan también en otras disciplinas, estrechamente vinculadas a la computación como la matemática 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, escrito 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 almancenados en un disco, etc. Esta manipulación de los datos requiere que los mismos estén organizados. Esta organización de los datos se conoce como Estructuras de Datos. Podemos pensar a las estructuras como bloques donde se *pueden almacenar y manipular datos, y esos bloques se pueden combinar para generar estructuras más complejas.

1.1. ¿Porqué es necesario estudiar algoritmos y estructuras de datos?#

Primero que nada porque los algoritmos y las estructuras de datos son la base de la computación que permite que las computadoras realicen tareas cada vez más complejas, por lo tanto elegir las estructuras de datos adecuadas y aplicar técnicas de diseño de algoritmo puede ser la diferencia entre obtener un programa eficiente que resuelva una tarea o tener un programa que no funciona bien o malgasta recursos. Por otro lado el estudio de algoritmos y estructuras de datos fomenta el desarrollo del pensamiento lógico y abstracto, habilidades escenciales de un ingeniero en 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 programador. La clave está en la repetición, la creatividad y la mejora continua.

1.2. Cursada#

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 se ponen manos a la obra. Los encuentros son híbridos, a veces virtuales y otras veces presenciales.

1.2.1. Evaluaciones#

Para poder regularizar la cursada es necesario aprobar dos parciales, cada parcial se aprueba con 4 o más y presentar y aprobar un proyecto grupal, el cual 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.

1.2.2. Herramientas para cursar#

1.3. Lenguaje 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:

Sintáxis

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 el expertise 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 foco está en los sistemas integrados de hardware y software, elegimos a Go como lenguaje, porque es un lenguaje moderno, fácil de aprender y a su vez más cercano al hardware que otros lenguajes.

¡Bienvenidos a AyP2!