Descripción
El curso de programación bajo plataformas abiertas está diseñado para enseñar a las personas estudiantes de Ingeniería Eléctrica, un conjunto de conocimientos de tipo teórico-prácticos, con el fin de brindar la preparación para abordar y resolver problemas ingenieriles, mediante el uso de herramientas y el desarrollo de programas de aplicación utilizando plataformas abiertas.
El curso se enfoca en dos objetivos. Por un lado, la instalación, utilización y administración de plataformas abiertas, en particular, sistemas operativos GNU/Linux (Ubuntu). En segunda instancia, el aprendizaje de lenguajes de programación multipropósito, en particular C.
Al finalizar el curso, las personas estudiantes estarán preparadas para incursionar en temas más avanzados de programación que les permitirá desarrollar soluciones a problemas afines a la carrera.
Contenidos
Módulo 1: Plataformas abiertas: GNU/Linux
- Introducción: Historia, comunidad, filosofía y distribuciones
- Instalación y configuración básica de GNU/Linux como una máquina virtual y/o real usando distintas distribuciones (Ubuntu, entre otras).
- Herramientas: firefox, gimp, gedit, libreoffice,etc.
- Sistema de archivos, manejo de medios de almacenamiento y particiones.
- Uso del shell y otras herramientas de línea de comandos.
- Administración de usuarios, grupos y permisos.
- Manejo de procesos y servicios.
- Paquetería
- Control de versiones (git).
Módulo 2: Programación en un lenguaje imperativo
- Introducción al lenguaje de programación: historia, filosofía, compilador, entre otros.
- Paradigmas de lenguajes de programación: imperativo (C) , orientado a objetos (Python/C++), funcional (Lisp), lógico (Prolog), etc.
- Características del lenguaje: tipos de datos, estructuras de control, etc.
- Entorno de programación: Compiladores y herramientas para el desarrollo de aplicaciones (por ejemplo gcc, IDEs, etc.).
- Automatización de proyectos: make, cmake, autotool.
- Funciones y recursión.
- Entrada y salida de archivos, manejo de archivos, funciones de sistema.
- Punteros, punteros dobles, y manejo de memoria dinámica (Stack, Heap).
- Structs.
- Enums
- Lista enlazada simple y doblemente enlazada.
Competencias
POR DEFINIR