Diferencia entre revisiones de «Introducción a la Programación»

De Cuba-Wiki
Sin resumen de edición
Línea 1: Línea 1:
{{ Plan 2023 | Algoritmos y Estructuras de Datos I }}
__NOTOC__
__NOTOC__
'''Introducción a la Programación''' (anteriormente Algoritmos y Estructuras de Datos I) es una de las materias del [[Plan de la Carrera#Primer año|Primer año]] que no tiene correlativas además del [[Lista de materias de computación#Materias del CBC|CBC]].
'''Introducción a la Programación''' (anteriormente Algoritmos y Estructuras de Datos I) es una de las materias del [[Plan de la Carrera#Primer año|Primer año]] que no tiene correlativas además del [[Lista de materias de computación#Materias del CBC|CBC]].
Línea 54: Línea 56:
[https://github.com/laurabailleres/introprogramacion/blob/main/simulacroParcialPython.py Enunciado y Solución]
[https://github.com/laurabailleres/introprogramacion/blob/main/simulacroParcialPython.py Enunciado y Solución]
|}
|}
== Algoritmos y estructuras de datos ==
== Contenidos ==
<big>'''Parte I - Corrección de programas imperativos:'''</big>
*Contratos. Obligaciones y derechos del programador y del usuario
*Conceptos básicos de los programas imperativos: variables - estructuras de control - funciones - ciclos
*Corrección de programas:
# Especificación formal de contratos: tipos de datos básicos, secuencias, n-uplas, operadores de lógica condicionales (cand y cor) y sus propiedades
# Demostración de corrección parcial: precondicicón más débil. Teorema de corrección parcial para ciclos. Invariantes de ciclo.
# Demostración de terminación: Función variante
<big>'''Parte II - Algoritmos sobre secuencias'''</big>
* Buenas prácticas para el desarrollo de software. El software pensado para consumo humano.
* Fundamentos de testing estructural: cubrimiento de líneas, branches, condiciones básicas. Diagramas de flujo de control.
* Tiempo de ejecución de peor caso de un algoritmo. Notación O grande.
* Algoritmos de búsqueda sobre secuencias: búsqueda lineal, búsqueda binaria
* Algoritmos de ordenamiento sobre secuencias: ordenamiento por selección, ordenamiento por inserción, ordenamiento por burbujea, problema de la bandera holandesa
* Algoritmos sobre secuencias ordenadas: problema de apareo entre secuencias, problema del welfare crook
* Algoritmos de matching de strings: algoritmo ingenuo de búsqueda de patrones, algoritmo Knuth-Morris-Pratt
==Prácticas==
*[https://drive.google.com/file/d/14jv-nkS5yzCrp7qTBtlP9mxS7Z4XhTFi/view?usp=sharing| Prácticas 1-9 de 2020 resueltas]
*[https://github.com/yagopajarino/uba-AyEd1 Prácticas 1er cuatrimestre 2022]
*[[Media:P1-logica.pdf |Práctica 1: Lógica Proposicional y Tipos Básicos]]
** [[Práctica 1: Lógica Proposicional y Tipos Básicos (Algoritmos I) | Solución]]
*[[Media:P2-secuencias.pdf|Práctica 2: Secuencias]]
** [[Práctica 2: Secuencias (Algoritmos I) | Solución]]
*[[Media:P3-cuantificadores.pdf |Práctica 3: Cuantificadores]]
** [[Práctica 3: Cuantificadores (Algoritmos I) | Solución]]
*[[Media:P4-espec_problemas.pdf| Práctica 4: Especificación de Problemas]]
** [[Práctica 4: Especificación de Problemas (Algoritmos I) | Solución]]
*[[Media:P5-tipos.pdf| Práctica 5: Tipos]]
** [[Práctica 5: Tipos (Algoritmos I) | Solución]]
*[[Media:P6-FuncionalBasica.pdf| Práctica 6: Funcional Básica]]
*[[Media:P7-listas.pdf|Práctica 7: Listas]]
*[[Media:P8-TiposCompuestos.pdf| Práctica 8: Tipos compuestos]]
=== Primeros parciales (Especificación) ===
{| class="wikitable sortable"
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
|-
|| 2022 || Segundo Cuatrimestre || 28/11/2022 || Recuperatorio || [[Medio:AED1_1recu_28-11-2022.pdf | enunciado (pdf) ]], [[Medio:AED1_1recu_28-11-2022_r.pdf | resolución (pdf) ]]
|-
|| 2022 || Segundo Cuatrimestre || 16/09/2022 || Parcial || [[Medio:AED1_1parcial_16-09-22_danteculaciati.pdf| enunciado + resolución (pdf) ]]
|-
|| 2022 || Segundo Cuatrimestre || 16/09/2022 || Parcial || [[Medio:AED1_1parcial_16-09-22.pdf|enunciado + resolución (pdf) ]]
|-
|| 2022 || Primer Cuatrimestre || 04/07/2022 || Recuperatorio || [[Medio:AED1_1parcial_04-07-22.pdf|enunciado + resolución (pdf) ]]
|-
|| 2022 || Primer Cuatrimestre || 16/05/2022 || Parcial || [[Medio:AED1_1parcial_16-05-22_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2021 || Segundo Cuatrimestre || 15/10/2021 || Parcial Online || [[Medio:AED1_1parcial_15-10-21_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 28/06/2021 || Recuperatorio Online || [[Medio:AED1_1recu_28-06-21.pdf|enunciado (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 19/05/2021 || Parcial Online || [[Medio:AED1_1parcial_19-05-21.pdf|enunciado (pdf) ]]
|-
|| 2020 || Segundo Cuatrimestre || 27/11/2020 || Recuperatorio Online || [[Medio:AED1_1recu_27-11-20.pdf|enunciado (pdf) ]]
|-
|| 2020 || Segundo Cuatrimestre || 21/10/2020 || Parcial Online|| [[Medio:AED1_1parcial_21-10-20.pdf|enunciado (pdf) ]]
|-
|| 2019 || Primer Cuatrimestre || 10/05/2019 || Parcial || [[Medio:AED1_1parcial_10-5-19.pdf|enunciado + resolución (pdf) ]]
|-
|| 2018 || Segundo Cuatrimestre || 17/10/2018 || Parcial || [[Medio:AED1_1parcial_17-10-18.pdf| enunciado + resolución (pdf) ]]
|-
|| 2017 || Segundo Cuatrimestre || 6/10/2017 || Parcial || [[Media:primerParcialAlgo1_6-10-17.pdf|enunciado (pdf) ]]
|-
|| 2017 || Primer Cuatrimestre || 12/05/2017 || Parcial || [[Media:AED1_1parcial_12-05-17_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Segundo Cuatrimestre || 14/09/2016 || Parcial || [[Media:AED1_1parcial_14-09-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Primer Cuatrimestre || 25/04/2016 || Parcial || [[Media:AED1_1parcial_25-04-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2015 || Segundo Cuatrimestre || 18/09/2015 || Parcial || [[Media:AED1_1parcial_18-09-15.pdf|enunciado (pdf) ]]
|-
|| 2015 || Primer Cuatrimestre || 24/04/2015 || Parcial || [[Media:AED1_1parcial_24-04-15_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2015 || Primer Cuatrimestre || 24/04/2015 || Parcial || [[Media:AED1_1parcial_24-04-15.pdf|enunciado (pdf) ]]
|-
|| 2013 || Segundo Cuatrimestre || 27/11/2013 || Recuperatorio || [[Media:RPI resuEspe2C2013.pdf|enunciado (pdf) ]]
|-
|| 2013 || Segundo Cuatrimestre || 13/09/2013 || Parcial || [[Medio:espe2C2013.pdf|enunciado (pdf) ]]
|-
|| 2013 || Primer Cuatrimestre || 28/06/2013 || Recuperatorio || [[Media:RPI resuEspe1C2013.pdf|enunciado (pdf)]]
|-
|| 2013 || Primer Cuatrimestre || 17/04/2013 || Parcial || [[Media:img001.pdf|enunciado (pdf) ]]
|}
===Segundos parciales (Imperativo)===
{| class="wikitable sortable"
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
|-
|| 2022 || Segundo Cuatrimestre || 23/11/2022 || Parcial || [[Media:AED1_2parcial_23-11-22.pdf | enunciado (pdf) ]], [[Media:AED1_2parcial_23-11-22_r.pdf | resolución (pdf) ]]
|-
|| 2021 || Segundo Cuatrimestre || 19/11/2021 || Parcial Online || [[Media:AED1_2parcial_19-11-21.pdf |enunciado (pdf) ]], [[Media:AED1_2parcial_res_19-11-21.pdf|resolución (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 23/06/2021 || Parcial Online || [[Media:AED1_2parcial_23-06-21.pdf|enunciado (pdf) ]], [[Media:AED1_2parcialr_23-06-21.pdf|resolución (pdf) ]]
|-
|| 2020 || Segundo Cuatrimestre || 09/12/2020 || Recuperatorio Online || [[Media:AED1_recup_09-12-20.pdf|enunciado (pdf) ]]
|-
|| 2020 || Segundo Cuatrimestre || 19/11/2020 || Parcial Online || [[Media:AED1_2parcial_19-11-20.pdf|enunciado (pdf) ]]
|-
|| 2019 || Segundo Cuatrimestre || 15/11/2019 || Parcial || [[Media:AED1_2parcial_15-11-2019_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2019 || Primer Cuatrimestre || 24/06/2019 || Parcial || [[Media:AED1_2parcial_24-06-2019.pdf|enunciado + resolución (pdf) ]]
|-
|| 2018 || Segundo Cuatrimestre || 23/11/2018 || Parcial || [[Media:AED1_2parcial_23-11-18.jpg|enunciado (pdf) ]]
|-
|| 2018 || Primer Cuatrimestre || 22/06/2018 || Parcial || [[Media:AED1_2parcial_22-06-18.pdf|enunciado (pdf) ]]
|-
|| 2017 || Primer Cuatrimestre || 24/11/2017 || Parcial || [[Media:segundoParcialAlgo1_24-11-17.pdf|enunciado (pdf) ]]
|-
|| 2017 || Primer Cuatrimestre || 14/07/2017 || Recuperatorio || [[Media:recuSegundoParcialAlgo1_14-7-17.pdf|enunciado (pdf) ]]
|-
|| 2017 || Primer Cuatrimestre || 30/06/2017 || Parcial || [[Media:AED1_2parcial_30-06-17_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Segundo Cuatrimestre || 18/11/2016 || Parcial || [[Media:AED1_2parcial_18-11-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Primer Cuatrimestre || 27/06/2016 || Parcial || [[Media:AED1_2parcial_27-06-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2015 || Segundo Cuatrimestre || 20/11/2015 || Parcial || [[Media:AED1_2parcial_20-11-15.pdf|enunciado (pdf) ]]
|-
|| 2015 || Primer Cuatrimestre || 26/06/2015 || Parcial || [[Media:AED1_2parcial_26-06-15_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2013 || Segundo Cuatrimestre || 18/11/2013 || Parcial || [[Media:imp2C2013.pdf|enunciado (pdf) ]]
|-
|| 2013 || Primer Cuatrimestre || 24/06/2013 || Parcial || [[Media:imp1C2013.pdf|enunciado (pdf) ]]
|}
===Parciales de Funcional===
*[[Media:ParcialesFuncional.zip|Parciales de funcional]]
*[[Media:func1C2013.pdf|Parcial del 20/05/2013]]
*[[Media:recuFunc1C2013.pdf|Recuperatorio del 08/07/2013]]
*[[Media:func2c2013.pdf|Parcial del 09/10/2013]]
*[[Media:recuFunc2C2013.pdf|Recuperatorio del 04/12/2013]]
==Finales==
*[[Media:AED1_final_23-04-2019.jpg|Final del 23-04-2019]]
*[[Media:AED1_final_16-12-2020.pdf|Final Online del 16-12-2020]]
*[[Media:AED1_final_19-02-2021.pdf|Final Online del 19-02-2021]]
*[[Media:AED1_final_04-08-2021.jpeg|Final del 04-08-2021 (Marenco)]]
*[[Media:AED1_final_16-09-2021.jpeg|Final del 15-09-2021]]
*[[Media:AED1_final_09-12-2021.jpg|Final del 09-12-2021 (Marenco)]], [[Media:AED1_final_09-12-2021_resuelto.pdf|resolución]]
*[[Media:AED1_final_17-02-2022.png|Final del 17-02-2022 (Diego Garbervetsky)]]
*[[Media:AED1_final_15-06-2022.pdf|Final del 15-06-2022]]
*[[Media:AED1_final_02-08-2022.pdf|Final del 02-08-2022 (Diego Garbervetsky)]]
*[[Media:algo1_final_14-12-22.jpg|Final del 14-12-2022 (Diego Garbervetsky - Martín Urtasun)]]
== Apuntes ==
*[[Media:Labo01_CLionInstallation.pdf|Guía de Instalación de CLion IDE C++ con Licencia Estudiantil]]
*[https://docs.google.com/document/d/1b8vm_PoiRftVKyE-9Tlwa-VAs9AobXe0GOpHJkO4rEg/edit?usp=sharing Resumen de Clases Teóricas y Practicas - 1C Online 2020]
*[https://elrepositoriodefede.wordpress.com/materias/materias-de-computacion/algoritmos-y-estructura-de-datos-i/ El Respositorio de Fede]: Apuntes de las Clases Teóricas, Ejercicios y Parciales Resueltos y Material Adicional - Segundo Cuatrimestre 2019
*[[Media:LengDeEspecificacion.pdf|Apuntes del lenguaje de especificación]]
*[https://github.com/SebasAndres/Introduccion-a-la-programacion-UBA Un repositorio de la materia + algunas guias resueltas (2023)]
*[[Apuntes de Funcional (Algoritmos I)| Apuntes de funcional]]: Apuntes y resumenes de programacion en funcional.
*[https://docs.google.com/document/d/13LdC39MdqZ24atcsCaBHQylSCUIdMCNivzh8xxKeEOY/edit?usp=sharing Resumen Teórico (Incompleto)]
*[https://drive.google.com/file/d/1qt1R9clSGQJEhDvrFYCzSOc1orrlNiUi/view?usp=sharing Apunte de Testing]
*[https://github.com/igruntplay/IAP-1C2023/blob/main/NOTAS-IP.pdf Notas de introducción a la programación 1C 2023]
==Enlaces Externos==
* [https://campus.exactas.uba.ar/course/view.php?id=1479 Página oficial de la materia]


[[Category:Materias]]
[[Category:Materias]]
[[Category:Computación]]
[[Category:Computación]]
[[Category:Programación]]
[[Category:Programación]]

Revisión del 15:03 4 feb 2024

Esta página es sobre la materia del plan de estudios 2023. Para ver la materia del plan 1993, consultar Algoritmos y Estructuras de Datos I .


Introducción a la Programación (anteriormente Algoritmos y Estructuras de Datos I) es una de las materias del Primer año que no tiene correlativas además del CBC.
En ella se introduce el concepto de especificación, que define las precondiciones y poscondiciones de un algoritmo (el "qué" en vez del "cómo") usando lógica de primer orden, ayudando a eliminar la ambigüedad de las palabras. Luego se ve implementación de problemas que consiste en programar algoritmos que cumplan una especificación dada.
Según el Plan de la Carrera (2023) esta es una materia necesaria junto con Álgebra I para cursar Algoritmos y Estructuras de Datos.

Información General sobre la Cursada

Introducción a la Programación consiste de clases teóricas, prácticas y de laboratorio. Para aprobar la materia se deben rendir un examen parcial, un trabajo practico y entregar ejercicios de Laboratorio (CMS). La materia se cursa los Lunes y jueves de 9 a 14 hs, 12 a 17 hs y 17 a 22hs.

Apuntes

Prácticas

Parciales

Año Cuatrimestre Fecha Instancia Links
2023 Primer Cuatrimestre 15/06/2023 Parcial Integrador

Enunciado y Solución (PDF).

2023 Primer Cuatrimestre 15/06/2023 Parcial Integrador

Enunciado y Solución (PDF).

2023 Primer Cuatrimestre 22/06/2023 Recuperatorio Integrador Enunciado.
2023 Primer Cuatrimestre 15/06/2023 Parcial Integrador Enunciado y Solución (PDF).
2023 Primer Cuatrimestre 15/06/2023 Parcial

Enunciado (PDF), Solución (PDF).

2023 Segundo Cuatrimestre 18/08/2023 Simulacro de Parcial (Haskell)

Enunciado y Solución.

2023 Segundo Cuatrimestre 18/08/2023 Simulacro de Parcial (Haskell)

Enunciado (PDF) y Solución(.hs).

2023 Segundo Cuatrimestre 25/08/2023 Primer Parcial (Haskell)

Enunciado(PDF) y Solución(.hs).

2023 Segundo Cuatrimestre 25/09/2023 Primer Parcial (Haskell)

Enunciado y Solución

2023 Segundo Cuatrimestre 30/10/2023 Simulacro de Parcial (Python)

Enunciado y Solución