0% encontró este documento útil (0 votos)
3 vistas8 páginas

Programa Programación 1

El documento describe el curso de Programación I, que se centra en el aprendizaje de conceptos y prácticas de programación en Python, incluyendo estructuras de datos, manejo de excepciones y gestión de proyectos con Git. Se establecen objetivos claros para los estudiantes, así como contenidos teóricos y prácticos que abarcan desde la programación estructurada hasta la manipulación de archivos y recursividad. La evaluación se basa en un proyecto cuatrimestral que promueve el trabajo colaborativo y la aplicación de los conocimientos adquiridos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas8 páginas

Programa Programación 1

El documento describe el curso de Programación I, que se centra en el aprendizaje de conceptos y prácticas de programación en Python, incluyendo estructuras de datos, manejo de excepciones y gestión de proyectos con Git. Se establecen objetivos claros para los estudiantes, así como contenidos teóricos y prácticos que abarcan desde la programación estructurada hasta la manipulación de archivos y recursividad. La evaluación se basa en un proyecto cuatrimestral que promueve el trabajo colaborativo y la aplicación de los conocimientos adquiridos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PROGRAMACIÓN I 3.4.

071

Departamento a la que pertenece Director

Tecnología Informática Ing. Mary Fernández

Fecha de aprobación en el
Carga horaria
Consejo de Facultad y N° de Acta

68 horas

Carrera(s) en la que se dicta Código(s)Carrera(s)

Licenciatura en Gestión de Tecnología de la Información 13116


Ingeniería en Informática 1621
Licenciatura en Bioinformática 5910
Ingeniería en Informática 1608
Tecnicatura Universitaria en Desarrollo de Software 1111

Código(s) Correlativa(s) Código(s) Correlativa(s)


Código(s) Carrera(s)
Precedente(s) Subsiguiente(s)

1621 / 13116 / 1111 / 1608


3.4.074
3.4.070 13116 / 1621 / 1111 / 1608
3.4.076
1111 / 1608 / 13116

Firmas

Aprobación del Director de Departamento emisor. Aprobación Decano(s)

Ing. Mary Fernández Dr. Federico Prada


Director a cargo Decano a cargo
Departamento de Informática Facultad de Ingeniería y Ciencias. Exactas
Facultad de Ingeniería y Ciencias Exactas Fundación UADE
Fundación UADE
I. Fundamentos de la materia

Esta materia es una continuación de su correlativa precedente, Fundamentos de Informática. La


materia de Programación I se fundamenta en el aprendizaje de conceptos fundamentales y prácticos
de la programación utilizando Python. A lo largo del curso, los estudiantes exploran desde estructuras
básicas como matrices y listas avanzadas, hasta técnicas como el manejo de excepciones, el uso de
archivos y el desarrollo de proyectos basados en Python. Se enfatiza el trabajo colaborativo, la
resolución de problemas mediante algoritmos y la implementación de soluciones eficientes y robustas.
Además, se promueve el uso de herramientas como Git para la gestión de proyectos y la mejora
continua mediante evaluaciones parciales y la entrega final de un proyecto integral.

II. Objetivos

Que el estudiante sea capaz de:

• Implementar y gestionar proyectos utilizando Git, incluyendo la creación de repositorios locales y


remotos, clonación, seguimiento de archivos y operaciones de gestión como añadir, confirmar y
eliminar archivos.
• Conocer la estructura y operaciones básicas de matrices e implementar funciones que utilicen
matrices como parámetro.
• Explorar métodos avanzados de listas, así como técnicas de acceso por índice y slicing.
• Aplicar funciones lambda (map, filter, reduce) para realizar transformaciones y filtrado de listas de
manera eficiente.
• Aprender expresiones regulares, utilizando métodos para manipular y buscar patrones en cadenas
de texto.
• Manejar diccionarios, realizando operaciones de inserción, actualización y eliminación de
elementos, además de acceder a valores mediante claves y determinar la longitud del diccionario.
• Explorar tuplas como estructuras de datos inmutables, comprendiendo su creación, acceso por
índice y uso en contextos donde la inmutabilidad es deseada.
• Utilizar conjuntos para operaciones de inserción, eliminación, verificación de pertenencia y
manipulación de conjuntos de datos únicos y no ordenados.
• Introducir el manejo de excepciones, abordando la captura de errores comunes y el lanzamiento
de excepciones personalizadas. Aplicar buenas prácticas en el manejo de excepciones. Prueba
unitarias.
• Aprender el acceso y manipulación de archivos planos y JSON, incluyendo la lectura, escritura y
parseo de datos utilizando métodos y funciones del módulo json para serialización y deserialización
de datos JSON.
• Definir la recursión y sus características en problemas computacionales, diferenciando entre
iteraciones y recursividad, evaluando las ventajas y desventajas de cada enfoque.

III. Contenidos

Contenidos mínimos

Programación estructurada. Diseño Top-Down. Compilación: vinculación, ejecución y depuración de


programas. Entornos de desarrollo. Tipos de datos y operadores. Precedencia. Constantes.
Funciones. Declaraciones locales y globales. Sentencias de control de flujo. Entradas de datos. Pasaje
de parámetros por valor y por referencia. Funciones de biblioteca. Resolución de algoritmos. Arreglos
y punteros.
Contenidos conceptuales

Unidad 1: Repaso de matrices: estructura, operaciones y uso en funciones.

Matrices como arreglos bidimensionales de elementos. Uso de índices para acceder a componentes
específicos y recorrer la matriz. Comparación entre el concepto informático y matemático de matrices.
Operaciones comunes incluyen la suma, resta, multiplicación por un escalar, multiplicación de
matrices, y la transposición. Implementación del pasaje de matrices como parámetros en funciones
para manipulaciones específicas.

Unidad 2: Implementación y gestión de proyectos con Git.

Conceptos básicos de control de versiones: repositorios locales y remotos, clonación de repositorios,


seguimiento de archivos y cambios. Operaciones: añadir, confirmar, y eliminar archivos. Integración
de Git con plataformas de alojamiento como GitHub y GitLab.

Unidad 3: Listas avanzadas, cadena de caracteres y expresiones regulares.

Métodos integrados de lista: append, extend, insert, remove, pop, index, count, sort, reverse, entre
otros. Acceso a elementos individuales por índice y operaciones de slicing. Operaciones comunes
con listas: concatenación y copia. Funciones Lambda: map, filter y reduce. Implementación de
cadenas de caracteres como secuencias delimitadas. Operaciones: copia y concatenación de
cadenas, comparación de cadenas, extracción de subcadenas, y determinación de la longitud de una
cadena. Uso de métodos para la manipulación de caracteres y cadenas, incluyendo búsqueda de
patrones, transformación de mayúsculas y minúsculas, y eliminación de espacios en blanco.
Expresiones regulares: caracteres simples y metacaracteres. Anclas, escape de caracteres, clase de
caracteres, rangos y delimitación. Cuantificadores o Multiplicadores. Expresiones regulares con
Python utilizando la librería “re”.

Unidad 4: Manipulación avanzada de diccionarios, tuplas y conjuntos.

Diccionarios como colecciones clave-valor. Operaciones de inserción, actualización y eliminación de


elementos. Acceso a valores mediante claves. Longitud del diccionario. Tuplas como estructuras
ordenadas e inmutables. Creación de tuplas. Acceso a elementos por índice. Longitud de la tupla.
Conjuntos como colecciones no ordenadas y únicas de elementos. Inserción, eliminación y
verificación de pertenencia de elementos. Longitud del conjunto.

Unidad 5: Excepciones y pruebas unitarias

Introducción al manejo de excepciones. Tipos de errores y situaciones excepcionales en Python.


Estructura básica de manejo de excepciones (try, except, else, finally). Excepciones integradas en
Python (por ejemplo, ZeroDivisionError, IndexError, TypeError). Definición y uso de excepciones
personalizadas. Uso de raise para lanzar excepciones explícitamente. Buenas prácticas en el manejo
de excepciones: cuándo y cómo utilizar excepciones. Jerarquía de excepciones y manejo de múltiples
excepciones. Uso de bloques try-except para prevenir fallas y asegurar la robustez del programa.
Pruebas Unitarias: Instalación de paquetes con pip. Uso de función assert. Implementación de la
librería pytest. Introducción a los ambientes de desarrollo (desarrollo, pruebas, pre-producción y
producción).

Unidad 6: Archivos

Introducción al acceso a archivos planos y estructurados (CSV, JSON, tabulados, etc.). Lectura y
escritura básica de archivos planos utilizando métodos como open, read, write, y close. Manejo de
modos de apertura de archivos (r, w, a) y operaciones de posicionamiento en archivos. Uso de “WITH”
para garantizar la gestión adecuada de recursos al trabajar con archivos. Parseo y serialización de
datos en formato JSON utilizando el módulo json. Lectura y escritura de datos JSON desde y hacia
archivos utilizando métodos (load, loads, dump y dumps). Validación y manejo de errores al trabajar
con archivos y datos JSON. Buenas prácticas en el manejo de archivos y JSON: seguridad, eficiencia
y mantenimiento del código. Aplicaciones prácticas de acceso a archivos planos y JSON en la
manipulación y procesamiento de datos estructurados en aplicaciones y scripts Python.

Unidad 7: Recursividad.

Definición de recursión. Características de los problemas recursivos. Estructura de una solución


recursiva: rama explícita y rama recursiva. Iteraciones vs recursividad. Ventajas y desventajas.
Seguimiento y depuración. Pasaje de parámetros en soluciones recursivas.

Contenidos procedimentales

• Aprender a escribir código de manera clara y eficiente en Python.


• Familiarizarse con entornos de desarrollo integrados (IDE) como Visual Studio Code, Thonny,
entre otros.
• Utilizar técnicas y herramientas de depuración para identificar y corregir errores en el código.
• Implementar y ejecutar pruebas unitarias y de integración para asegurar la funcionalidad correcta
del código.
• Utilizar sistemas de control de versiones, como Git, para gestionar y mantener el código fuente
de manera eficiente.
• Escribir documentación clara y útil para el código, incluyendo comentarios y archivos de
documentación separados.
• Integrar y utilizar bibliotecas y frameworks de terceros para añadir funcionalidad al código de
manera eficiente.
• Aplicar técnicas de resolución de problemas para abordar y solucionar desafíos de programación.
• Mejorar el rendimiento del código mediante técnicas de optimización.
• Trabajar en equipo utilizando herramientas de colaboración como repositorios compartidos.
• Desarrollar y refinar algoritmos para resolver problemas específicos.

Contenido actitudinales

• Fomentar la colaboración y el trabajo en grupo, valorando las contribuciones de cada miembro


del equipo y aprendiendo a comunicarse de manera efectiva.
• Ser responsable con las tareas y proyectos asignados, cumpliendo con los plazos establecidos y
mostrando puntualidad en las entregas y en la asistencia a clases y reuniones.
• Desarrollar una conducta ética en el manejo de información, respeto por la propiedad intelectual y
adherencia a los principios de honestidad e integridad en todas las actividades relacionadas con
la programación.
• Mostrar iniciativa y disposición para aprender de manera continua, buscar soluciones y mejorar
constantemente las habilidades y conocimientos en programación.
• Desarrollar la capacidad de enfrentar y superar desafíos, fracasos y errores sin desanimarse,
manteniendo la motivación y el esfuerzo continuo.
• Cultivar la meticulosidad y precisión en la escritura y revisión del código, asegurando la calidad y
funcionalidad del software desarrollado.
• Estar dispuesto a recibir y dar retroalimentación constructiva, utilizando los comentarios para
mejorar el propio trabajo y ayudar a otros a mejorar el suyo.
• Fomentar la creatividad en la resolución de problemas y el desarrollo de soluciones innovadoras
en el campo de la programación.
• Desarrollar la capacidad de adaptarse a nuevas tecnologías, lenguajes de programación y
metodologías, manteniéndose flexible y abierto a los cambios.
• Valorar y esforzarse por la excelencia en todos los aspectos del trabajo de programación, desde
la planificación hasta la implementación y el mantenimiento.
• Aprender a comunicar ideas, problemas y soluciones de manera clara y efectiva, tanto oralmente
como por escrito, dentro del equipo de trabajo.

IV. Estrategia de enseñanza

Fomentar la participación activa de los estudiantes en el proceso de aprendizaje. En lugar de solo


enseñar teoría, brinda ejercicios prácticos y proyectos para que los estudiantes apliquen lo que han
aprendido.

Diseñar proyectos prácticos y significativos que reflejen situaciones del mundo real. Esto ayuda a los
estudiantes a desarrollar habilidades prácticas mientras trabajan en proyectos que les interesan.

Fomentar la colaboración entre los estudiantes, ya sea a través de proyectos grupales, actividades de
resolución de problemas en equipo o discusiones en grupo. Esto les ayuda a aprender unos de otros
y a desarrollar habilidades de trabajo en equipo.

Enseñar a los estudiantes a pensar de manera crítica y a resolver problemas de manera


independiente. Anímalos a buscar soluciones por sí mismos y a experimentar con diferentes enfoques
para resolver problemas.

Inspirar a los estudiantes a ser creativos y a explorar nuevas ideas en sus proyectos. Fomenta la
pasión por la programación al mostrarles cómo pueden utilizarla para crear cosas nuevas y
emocionantes.

V. Recursos

• Aula tradicional con medios para la proyección de contenidos y acceso a Internet.


• Los estudiantes deberán contar con computadoras personales propias.
• Software necesario para la realización de los trabajos prácticos: Thonny o Visual Studio Code
como editor del lenguaje Python.

VI. Modalidad de evaluación

Modalidad de Evaluación: Proyecto Cuatrimestral por etapas. (*)


El proyecto cuatrimestral tiene como objetivo principal que los estudiantes apliquen los conocimientos
adquiridos en Programación I mediante el desarrollo de un proyecto cercano a una implementación
laboral real. Esto promueve la comprensión profunda de los conceptos, el trabajo colaborativo y el
desarrollo de habilidades prácticas en programación.

(*) en lo sucesivo se estará modificando la metodología de evaluación hacia un formato proyectual.

Desarrollo del Proyecto:


• Al inicio del cuatrimestre, se presentarán diversas propuestas de proyectos. Los estudiantes
podrán elegir un proyecto propuesto o proponer uno propio, sujeto a la aprobación del
docente.
• Los proyectos se programarán con el lenguaje Python y deben cubrir todos los temas del
programa de la asignatura.
• Los estudiantes se organizarán en equipos de 3 o 4 miembros, siendo responsables de la
planificación, ejecución y presentación del proyecto. A los fines pedagógicos se sugiere que
no se realice el trabajo de forma individual.

Evaluación del Proyecto:


• La evaluación se divide en dos componentes principales: evaluación del proceso y
evaluación de la producción.

o Evaluación del Proceso: Se evaluará la aplicación de conocimientos, habilidades


críticas y reflexivas, trabajo en equipo, participación activa y colaborativa, así como
habilidades de análisis e interpretación.

o Evaluación de la Producción: Se evaluará el producto final en términos de


funcionalidad, calidad, documentación, gestión del tiempo, creatividad y resolución
de problemas.
Requisitos para Aprobar:
• Cumplimiento de entregas parciales según el cronograma establecido por el docente. Se
requerirá un mínimo de dos entregas parciales, además de la entrega final.
• Para aprobar la cursada, es necesario cumplir con dos requisitos: obtener una calificación
mínima de 4 en cada entrega. La entrega final del proyecto y su correspondiente nota
indicará la aprobación de la materia.
• Evaluación grupal e individual basada en criterios específicos de calidad y participación.
• Oportunidad de revisión y mejora para entregas no aprobadas dentro del plazo establecido.

Presentación y Documentación:
• Inclusión de documentación detallada que cubra plan de trabajo, código correctamente
comentado, junto con sus correspondientes pruebas unitarias.
• Realización de presentación oral del proyecto final ante el docente, demostrando
funcionamiento y respondiendo preguntas.

Aspectos Éticos y Disciplinares:


• Todos los trabajos deben ser originales y realizados por el equipo, sancionándose cualquier
acto de deshonestidad académica.

Asistencia y Participación:
• Se espera que los estudiantes asistan regularmente a clases y participen activamente para
complementar su aprendizaje y desarrollo, cumpliendo con un mínimo del 75% de asistencia.

NORMAS DE SEGURIDAD:

Para el caso de los laboratorios de Informática, está terminantemente prohibido el ingreso de comida
y/o bebida.

VII. Bibliografía básica

Básica

JOYANES Aguilar, Luis: Fundamentos de Programación. 4ta. Edición. Editorial Mc Graw-Hill. ISBN
978-84-481-6111-8.

TORO BONILLA, Miguel: Fundamentos de Programación: PYTHON. 2da. Edición. Editorial


Universidad de Sevilla.

Complementaria

GONZALEZ DUQUE, Raúl: Python para todos.

Recursos digitales:
Agarwal, M. (2017). Beginners Guide/Programmers - Python Wiki. [Link].

[Link]

The Python Language Reference. [Link]


Pilgrin, Mark: Inmersión en Python 3. Traducido por José Miguel González Aguilera. Disponible en:
[Link]

VIII. Modelo de cronograma

Clase Actividad / contenido

1 Presentación de la materia. Repaso de matrices: estructura, operaciones y uso en funciones.

Desarrollo del Proyecto: Presentación de propuestas y selección de proyectos. Introducción y


2
uso de GIT.

Listas avanzadas y cadena de caracteres: métodos de lista. Desarrollo del Proyecto:


3
Planificación inicial y asignación de tareas.

Funciones Lambda: map, filter y reduce. Desarrollo del Proyecto: Planificación inicial y
4
asignación de tareas.

5 Expresiones regulares. Desarrollo del Proyecto: revisión de avances.

6 Manipulación avanzada de diccionarios. Desarrollo del Proyecto: revisión de avances.

7 Tuplas y conjuntos. Desarrollo del Proyecto: revisión de avances.

8 Excepciones: manejo básico, tipos de errores en Python.

9 Primera Entrega Parcial del Proyecto: Evaluación y retroalimentación en clase.

10 Pruebas Unitarias. Desarrollo del Proyecto: revisión de avances.

Archivos: lectura y escritura básica de archivos planos. Desarrollo del Proyecto: revisión de
11
avances.

Archivos: lectura y escritura básica de archivos con JSON. Desarrollo del Proyecto: revisión de
12
avances.

13 Desarrollo del Proyecto: revisión de avances.

14 Segunda Entrega Parcial del Proyecto: Evaluación y retroalimentación en clase.

Recursividad: definición, estructura de soluciones recursivas. Desarrollo del Proyecto: revisión


15
de avances.

16 Desarrollo del Proyecto: pre-entrega, aclaración de dudas y consultas. Cierre de proyectos.

17 Entrega Final del Proyecto: Evaluación y retroalimentación en clase.

18 Entrega Final del Proyecto: Evaluación y retroalimentación en clase.

IX. Ejes transversales


• Identificación, formulación y resolución de problemas de ingeniería en sistemas de
información/informática.

La capacidad para identificar, formular y resolver problemas es fundamental en la ingeniería de


sistemas de información y la informática. Los estudiantes aprenderán a descomponer problemas
complejos en partes más manejables, aplicar metodologías de análisis y utilizar herramientas
específicas para encontrar soluciones eficientes y efectivas. Este eje transversal fomenta el desarrollo
de habilidades críticas y analíticas, esenciales para enfrentar desafíos técnicos y desarrollar soluciones
innovadoras en proyectos de software y sistemas informáticos.

• Generación de desarrollos tecnológicos y/o innovaciones tecnológicas.

El enfoque en la generación de desarrollos e innovaciones tecnológicas impulsa a los estudiantes a


estar a la vanguardia del progreso tecnológico. Se fomentará la creatividad y el pensamiento innovador
para diseñar y desarrollar nuevas tecnologías, mejorar procesos existentes y crear soluciones que
respondan a las necesidades del mercado y de la sociedad. Este eje transversal destaca la importancia
de la investigación y el desarrollo en el campo de la ingeniería en sistemas de información,
promoviendo una cultura de innovación continua.

• Utilización de técnicas y herramientas de aplicación en la INGENIERÍA EN SISTEMAS DE


INFORMACIÓN/INFORMÁTICA.

La competencia en el uso de técnicas y herramientas específicas es crucial para el éxito en la


ingeniería de sistemas de información e informática. Los estudiantes serán capacitados en el uso de
diversas herramientas de desarrollo de software, plataformas de gestión de proyectos, y técnicas
avanzadas de programación y análisis de datos. Este eje transversal asegura que los futuros
profesionales estén bien equipados con las habilidades prácticas necesarias para enfrentar los
desafíos tecnológicos y contribuir efectivamente a sus equipos y organizaciones.

• Fundamentos para el desempeño en equipos de trabajo.

El trabajo en equipo es una habilidad esencial en la ingeniería de sistemas de información. Los


estudiantes aprenderán a colaborar de manera efectiva en equipos multidisciplinarios, desarrollar
habilidades de comunicación, liderazgo y gestión de conflictos. Se enfatizará la importancia de la
cooperación, la responsabilidad compartida y el respeto por las ideas y contribuciones de los demás.
Este eje transversal prepara a los estudiantes para trabajar en entornos colaborativos y contribuye a
su desarrollo profesional integral.

También podría gustarte