Universidad de Costa Rica

IE0117 Programación Bajo Plataformas Abiertas

Créditos:
3
Departamento:
Automática
Curso:
Troncal
Tipo:
0 - Teórico
Horas:
6h: 3h T, 3h L, 0h P, 0h T/P
Requisitos:
Correquisitos:

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

  1. Introducción: Historia, comunidad, filosofía y distribuciones
  2. Instalación y configuración básica de GNU/Linux como una máquina virtual y/o real usando distintas distribuciones (Ubuntu, entre otras).
  3. Herramientas: firefox, gimp, gedit, libreoffice,etc.
  4. Sistema de archivos, manejo de medios de almacenamiento y particiones.
  5. Uso del shell y otras herramientas de línea de comandos.
  6. Administración de usuarios, grupos y permisos.
  7. Manejo de procesos y servicios.
  8. Paquetería
  9. Control de versiones (git).

Módulo 2: Programación en un lenguaje imperativo

  1. Introducción al lenguaje de programación: historia, filosofía, compilador, entre otros.
  2. Paradigmas de lenguajes de programación: imperativo (C) , orientado a objetos (Python/C++), funcional (Lisp), lógico (Prolog), etc. 
  3. Características del lenguaje: tipos de datos, estructuras de control, etc.
  4. Entorno de programación: Compiladores y herramientas para el desarrollo de aplicaciones (por ejemplo gcc, IDEs, etc.).
  5. Automatización de proyectos: make, cmake, autotool.
  6. Funciones y recursión.
  7. Entrada y salida de archivos, manejo de archivos, funciones de sistema.
  8. Punteros, punteros dobles, y manejo de memoria dinámica (Stack, Heap).
  9. Structs.
  10. Enums
  11. Lista enlazada simple y doblemente enlazada.

Competencias

POR DEFINIR

© 2020 Escuela de Ingeniería Eléctrica, Universidad de Costa Rica.