Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Matematicas
Área: Matematicas
(Programa del año 2016)
I - Oferta Académica
Materia Carrera Plan Año Periodo
(MATERIA OPTATIVA I) INTRODUCCION A LA COMPUTACION LIC.EN CS.MAT. 03/14 2016 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
OVIEDO, JORGE ARMANDO Prof. Responsable P.Tit. Exc 40 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total C - Teoria con prácticas de aula Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
8 Hs.  Hs.  Hs.  Hs. 8 Hs. 1º Cuatrimestre 16/03/2016 26/06/2016 15 120
IV - Fundamentación
La computación juega un papel primordial en los avances de la ciencia y la tecnología en la actualidad, al permitir analizar datos (en forma numérica y gráfica); desarrollar algoritmos, modelar sistemas, y realizar simulaciones; poder crear tus propias aplicaciones, que integren diversos programas y distintos formatos de datos; automatizar tareas repetitivas, que consumen mucho tiempo y están sujetas, además, a errores humanos; entender los fundamentos que permiten almacenar grandes cantidades de datos de forma eficiente.
El programa responde a los contenidos mínimos de la carrera para la cual se dicta y el enfoque incluye clases teóricas y prácticos de aula con énfasis en demostraciones formales y aplicaciones.
V - Objetivos
1. Comprender el modelo y la organización básica de una computadora.
2. Adquirir conocimientos de programación, tanto de algorítmica como de estructuras de datos.
3. Adquirir conceptos y fundamentos sobre especificación y razonamientos formales para avanzar en la demostración de correctitud y terminación de programas.
4. Dominar diversas técnicas algorítmicas: Divide & conquer, Backtracking, programación dinámica, etc.
VI - Contenidos
Unidad 1. Lógica.
•Lógica de Primer Orden
•Lógica Trivaluada
•Lógica Proposicional

Unidad 2. Especificación de problemas
•Noción de contrato.
•Pre y postcondición.
•Formalización de las descripciones de soluciones a problemas.

Unidad 3: Modelo de Cómputo
•Organización de una computadora
•Modelo de Von Neuman, ciclo de instrucción y jerarquía de memoria
•Arquitecturas

Unidad 4: Inducción
•Principio de Inducción
•Funciones recursivas
•Demostración de terminación

Unidad 5: Búsqueda y Ordenamiento
•Búsqueda Lineal
•Búsqueda Binaria
•Noción de invariante y demostración de correctitud.
•Algoritmos de ordenamiento

Unidad 6: Técnicas algoritmicas
•Divide & conquer
•Backtracking
•Programación dinámica

Unidad 7: Tipos abstractos de datos
•Definición de tipos
•Formalización
•Manejo de excepciones
•Introducción al testing

Unidad 8: Herramientas
•Herramientas de manejo de testing
•Escritura de documentos usando Latex
•Repositorios de código

VII - Plan de Trabajos Prácticos
Los prácticos consistirán en la resolución y presentación escrita y oral de ejercicios.
VIII - Regimen de Aprobación
Para regularizar:
1. Participación activa y asistencia al 80% de las clases teóricas y de las clases prácticas.
2. Presentar en forma escrita, resueltos correctamente, todos los ejercicios que se asignen.
3. Cumplir con las exposiciones que se asignen.
4. Aprobar con una calificación no inferior a 6 (seis) dos exámenes parciales (o sus recuperaciones), de carácter teórico−práctico.
Para promocionar:
La materia no es promocional.
Examen final:
Alumnos regulares. Deberán rendir un examen de carácter teórico sobre todos los temas del programa.
Alumnos libres. Deben rendir un examen de carácter teórico-práctico sobre los todos temas del programa. De aprobarlo rendirá un examen en las mismas condiciones que un alumno regular.
IX - Bibliografía Básica
[1] Elkner, Downey & Meyers, How to Think Like a Computer Scientist - Versión en español
[2] Tutorial online de Python
[3] J.L. Balcazar, "Programación metódica", McGraw-Hill, 1993.
[4] E. Dijkstra, "A discipline of programming", Prentice Hall, 1973.
[5] A.V. Aho, J.E. Hopcroft, J.D. Ullman, "Estructuras de Datos y Algoritmos", Addison-Wesley, 1988.
X - Bibliografia Complementaria
[1] T.H. Cormen y otros, "Introduction to Algorithms", tercera edición, MIT Press, 2009.
[2] Enzo Gentile, "Notas de Algebra", EUDEBA, 1984.
[3] Raymond M. Smullyan, "First-Order Logic", Dover, 1995.
XI - Resumen de Objetivos
1. Comprender el modelo y la organización básica de una computadora.
2. Adquirir conocimientos de programación, tanto de algorítmica como de estructuras de datos.
3. Adquirir conceptos y fundamentos sobre especificación y razonamientos formales para avanzar en la demostración de correctitud y terminación de programas.
4. Dominar diversas técnicas algorítmicas: Divide & conquer, Backtracking, programación dinámica, etc.
XII - Resumen del Programa
Lógica de Primer Orden. Lógica Trivaluada. Lógica Proposicional.

Noción de contrato. Pre y postcondición. Formalización de las descripciones de soluciones a problemas.

Organización de una computadora. Modelo de Von Neuman, ciclo de instrucción y jerarquía de memoria.

Principio de Inducción. Funciones recursivas. Demostración de terminación.

Búsqueda Lineal. Búsqueda Binaria. Noción de invariante y demostración de correctitud. Algoritmos de ordenamiento.

Divide & conquer. Backtracking. Programación dinámica.

Definición de tipos. Formalización. Manejo de excepciones. Introducción al testing.

Herramientas de manejo de testing. Escritura de documentos usando Latex. Repositorios de código.
XIII - Imprevistos