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:

Descripción

El curso está diseñado para enseñar a los estudiantes un conjunto de conocimientos con los que puedan abordar y resolver problemas ingenieriles, mediante el el desarrollo de programas de aplicación utilizando plataformas abiertas

Contenidos

  1. 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 (Debian, Ubuntu, entre otras).
    3. Sistema de archivos, manejo de medios de almacenamiento y particiones.
    4. Uso del shell y otras herramientas de línea de comandos.
    5. Administración de usuarios, grupos y permisos.
    6. Manejo de procesos y servicios.
    7. Paquetería.
    8. Conceptos básicos de redes de computadoras, y configuración de red del sistema operativo.
    9. Control de versiones (git).
  2. Módulo 2: Programación en un lenguaje orientado a objetos (Python)
    1. Paradigmas de lenguajes de programación.
    2. Características del lenguaje: historia, filosofía, intérprete, entre otros.
    3. Sintaxis, tipos de datos y variables, objetos, estructuras de control, etc.
    4. Argumentos por línea de comandos, estructuras de datos, archivos de entrada/salida, funciones, clases, módulos y funciones del sistema.
    5. Clases
    6. Manejo de errores y debugging.
    7. Interfaces gráficas
  3. Módulo 3: Programación en un lenguaje imperativo (C)
    1. Introducción al lenguaje de programación: historia, filosofía, compilador, entre otros.
    2. Características del lenguaje: tipos de datos, estructuras de control, etc.
    3. Entorno de programación: Compiladores y herramientas para el desarrollo de aplicaciones (por ejemplo gcc, IDEs, etc.).
    4. Automatización de proyectos: Makefiles.
    5. Funciones y recursión.
    6. Entrada y salida de archivos, manejo de archivos, funciones de sistema.
    7. Punteros, punteros dobles, y manejo de memoria dinámica (Stack, Heap).
    8. Structs y enums.
    9. Introducción a estructuras de datos.

Competencias

POR DEFINIR

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