Skip to article frontmatterSkip to article content

Programación 1

ICOMP 2021 - B6003 - UNRN Andina

Programa Analítico de la Asignatura

Programación I - B6003 es una materia de la carrera de Ingeniería en Computación, dictada en la Escuela de Producción y Tecnología de la Sede Andina, en San Carlos de Bariloche. La asignatura forma parte del plan de estudios ICOMP 2021-V7 y se sitúa como una de las primeras materias de formación específica en el área de la programación.

Información General

Sede: Sede Andina
Localidad: Bariloche
Escuela: Escuela de Producción y Tecnología
Carrera: Ingeniería en Computación
Código Guaraní: B6003
Plan de estudio: ICOMP 2021 - V9
Ubicación en el plan: 1º año - 2º Cuatrimestre
Ciclo lectivo: 2024
Régimen de cursada: Cuatrimestral
Período de dictado: 2º Cuatrimestre

Correlativas vigentes:

Carga horaria total: 96 horas

Profesor responsable: Martín René Vilugrón
Equipo docente: Miguel Mariguin, Mauro Alejandro Fermín, Daniel Eduardo Teira

Ubicación en el Plan de Estudios y Correlatividades

Esta materia se cursa en el segundo cuatrimestre del primer año de la carrera. Para poder inscribirse y cursarla, es requisito tener la cursada aprobada de Introducción a la Ingeniería en Computación (B6001). Para rendir el examen final de Programación I, es necesario tener aprobada la materia correlativa mencionada anteriormente.


Fundamentación

La asignatura constituye un pilar fundamental en nuestra carrera universitaria. Nuestro objetivo principal es capacitar al estudiante en la adquisición de habilidades sólidas en programación, con un enfoque en la correctitud y eficiencia en el desarrollo de software de alta calidad desde los primeros pasos en la programación.

Esta materia se ha diseñado de manera incremental para garantizar una comprensión efectiva de la programación estructurada. Reconocemos que la programación es esencial tanto para el desarrollo de software como para la implementación de sistemas de hardware. Un diseño apropiado, una implementación precisa y la posterior optimización de sistemas son los cimientos de un desarrollo exitoso.

A través de esta asignatura, preparamos al estudiante para el diseño e implementación de soluciones a diversos problemas mediante la definición de algoritmos. Además, se abordan los conceptos fundamentales de programación, así como las estructuras de datos esenciales. Se introducen tipos simples, tipos definidos por el usuario y tipos de datos lineales y no lineales, que permiten abordar una amplia variedad de problemas a través de su combinación y variación.

Nuestro enfoque principal en esta asignatura es el lenguaje de programación C, que brinda una base sólida para el desarrollo de software eficiente y de alta calidad. Con Programación 1, sentamos las bases para el éxito de nuestros estudiantes en su futura trayectoria en el mundo de la programación y la informática.


Propósitos de la Asignatura

Se ha optado por enmarcar la cátedra en un enfoque actual y moderno que aborda tanto técnicas teóricas como prácticas para el desarrollo de habilidades sólidas en programación.

Nuestro objetivo es que los estudiantes adquieran competencias en programación estructurada y sean capaces de aplicar métodos de vanguardia en el campo de la informática.

Durante el curso, los estudiantes explorarán y dominarán el manejo de estructuras de datos en memoria estática y dinámica, lo que incluye el uso de arreglos de una o varias dimensiones y punteros. Estos conceptos son esenciales en la programación moderna y se promoverá su aplicación en situaciones reales.

Además, se fomentará el desarrollo de capacidades analíticas, técnicas e intuitivas en los estudiantes para que puedan diseñar y analizar la complejidad de algoritmos de manera efectiva. Se promoverá la generación de algoritmos recursivos como una herramienta fundamental para abordar una variedad de problemas. Los estudiantes también aprenderán a utilizar herramientas de depuración de algoritmos, lo que es esencial para el desarrollo de software robusto.


Contenidos Mínimos (según plan de estudio)

Que los/as estudiantes:

Tópicos principales


Propuesta Metodológica

La asignatura consistirá de clases teóricas y clases prácticas.

En las clases teóricas se desarrollarán los temas del programa de la asignatura, incluyendo múltiples ejemplos que faciliten la asimilación de los contenidos conceptuales. Mediante ejemplos prácticos se relacionarán cada uno de los temas vistos. Se fomentará la interacción del alumno con el objetivo de que logre una actitud activa para, a través de su propio razonamiento, logre crear soluciones creativas a problemas planteados durante las clases.

Mientras que en las clases practicas, se propondrán distintas prácticas para favorecer la asimilación de los conceptos vistos en la materia. Al inicio de cada práctica el profesor hará una breve explicación de práctica donde se propondrán ejemplos similares a los ejercicios propuestos en la práctica.

La distribución de los ejercicios, así como su revisión esta pensado para utilizar la herramienta git junto al servicio GitHub. Así como la utilización de un espacio de discusión sobre la plataforma para facilitar las comunicaciones de manera asíncrona.

Para facilitar el cursado de los alumnos, se grabaran todas las clases para que estas puedan ser seguidas en cualquier momento.

Accesibilidad

La UNRN implementa políticas de accesibilidad académica, incluyendo acompañamiento docente y configuraciones de apoyo específicas.


Unidades de Aprendizaje

Unidad 1: Lenguaje C base

Semanas: 1–2
Contenidos: Introducción al lenguaje C, compilación, tipos de datos, control de flujo, funciones y documentación.
Prácticas: Repositorios 1 y 2.
Bibliografía: Kernighan & Ritchie (1991).

Unidad 2: Arreglos y cadenas

Semanas: 3
Contenidos: Arreglos unidimensionales, cadenas, modelo de memoria y uso en funciones.
Práctica: Repositorio 3.
Bibliografía: Kernighan & Ritchie (1991); Schildt (2004).

Unidad 3: Punteros

Semanas: 4
Contenidos: Concepto, aritmética de punteros, relación con arreglos, punteros a función.
Práctica: Repositorio 4.
Bibliografía: Kernighan & Ritchie (1991); Schildt (2004).

Unidad 4: Repaso general #1

Semana: 5
Contenidos: Repaso de unidades previas y correcciones.
Práctica: Revisión de prácticas 1–4.

Unidad 5: Matrices y estructuras

Semana: 6
Contenidos: Declaración, inicialización y operaciones con matrices. Estructuras (struct, typedef).
Práctica: Repositorio 5.

Unidad 6: Archivos

Semana: 7
Contenidos: Archivos de texto, lectura, escritura, errores, argumentos del programa.
Práctica: Repositorio 6.

Unidad 7: Memoria dinámica

Semana: 8
Contenidos: Regiones de memoria, malloc, realloc, free, punteros void*, ALV.
Práctica: Repositorio 7.

Unidad 8: Repaso general #2

Semana: 9
Contenidos: Repaso previo al segundo parcial.
Práctica: Revisión prácticas 5–7.

Unidad 9: Estructuras basadas en nodos

Semana: 10
Contenidos: Listas enlazadas, pilas y colas. Uso dinámico de estructuras.
Práctica: Repositorio 8.

Unidad 10: Algoritmos recursivos

Semana: 11
Contenidos: Recursión, condiciones base, divide y conquista.
Práctica: Repositorio 9.

Unidad 11: Análisis y diseño de algoritmos

Semanas: 12–13
Contenidos: Complejidad, eficiencia, notación O(), análisis de casos.
Práctica: Repositorio 10.

Unidad 12: Algoritmos de búsqueda y ordenamiento

Semanas: 14–15
Contenidos: Búsqueda secuencial y binaria, ordenamientos clásicos (burbuja, inserción, selección, merge, quick, bogosort).
Práctica: Trabajo integrador final.

Unidad 13: Recuperatorios y cierre

Semana: 16
Contenidos: Exposiciones finales y examen recuperatorio.


Evaluación

Evaluación Formativa

Evaluación Sumativa

Promoción

Modalidad Libre

  1. Resolver ejercicio base en C indicado por la cátedra.

  2. Desarrollar y justificar el código en examen oral.

Requisitos de Aprobación

Fechas Tentativas


Bibliografía General