Física (plan 2002) 2017-1
Primer Semestre, Computación
Grupo 8100, 35 lugares. 30 alumnos.
Computación
Temario
-
Conceptos generales de computación
-
Breve historia de la Computación
-
Teoría de autómatas: deterministas y no-deterministas
-
Máquina de Turing (concepto de computadora)
-
Concepto de algoritmo
-
Manejo básico de sistemas operativos (SO)
-
Definición, tipos y características de un SO: UNIX/Linux
-
Arquitectura del SO
-
Estructura del sistema de archivos
-
Creación, visualización y edición de archivos de texto
-
Introducción a la programación en Shell
-
Manejo y administración de archivos y directorios
-
Principios de lenguajes de programación
-
Paradigmas
-
Lenguaje de máquina y ejecución de programas
-
Programación imperativa
-
Programación estructurada
-
Variables, expresiones y sentencias
-
Valores y tipos
-
Variables
-
Sentencias
-
Operadores y expresiones
-
Funciones
-
Función matemática
-
Composición
-
Parámetros y argumentos
-
Scoping
-
Herramientas de programación funcional:
-
Listas por comprensión
-
Funciones de orden superior
-
Funciones Lambda
-
Datos estructurados
-
Arreglos
-
Listas simples
-
Ciclos y condicionales
-
Algoritmos iterativos
-
Recursión
-
Introducción a los métodos numéricos
-
Método del trapecio para evaluar integrales definidas
-
Método de Newton – Raphson
-
Simulación de experimentos con variables aleatorias: decaimiento radiactivo y caminantes aleatorios.
-
Mínimos cuadrados y estadística básica
-
Método de Euler (ecuaciones tipo Newton)
-
Introducción a la Física Computacional
-
Movimiento en una dimensión
-
Fuerza en una dimensión
-
Movimiento en dos dimensiones y tres dimensiones
-
Trabajo
-
Energía
-
Introducción a orientación a objetos
-
Objetos
-
Comportamiento y propiedades
-
Clases, métodos y variables de clase
-
Encapsulamiento de datos
-
Herencia
-
Polimorfismo
-
Elementos de complejidad algorítmica
-
Análisis asintótico, notación O().
-
Algoritmos de ordenamiento
-
Complejidades en tiempo y en espacio
-
Ejemplos de cálculo de complejidad.
-
Tópicos avanzados: Programación concurrente
-
Mecanismos del lenguaje para hilos de ejecución.
-
Sincronización de hilos de ejecución.
-
Terminación de ejecución.
Evaluación
Se podrá acumular hasta un máximo de 110 puntos y se evaluará de la siguiente manera:
Exámenes parciales: |
30 |
Prácticas: |
40 |
Exámenes semanales: |
20 |
Proyecto |
20 |
Evaluación teórica
Se harán tres exámenes parciales, en las fechas que se indicarán en la página.
Los exámenes semanales serán alrededor de 8 o 9 al semestre y se realizarán los jueves al final de la clase, serán breves, sobre conceptos, de aproximadamente diez minutos y servirán de repaso para el examen parcial.
Evaluación práctica
A lo largo del semestre se dejarán 9 prácticas individuales en la que se implementen soluciones a problemas que se les indicará en la página del curso.
Habrá un proyecto final en pareja y consistirá en implementar la solución a un problema físico, utilizando los conceptos y herramientas vistos en el curso.
Bibliografía:
-
Effective Java . Joshua Bloch.
-
Introduction to Computation and Programming Using Python. John V. Guttag
-
Aprenda a Pensar Como un Programador con Python. Allen Downey. Jeffrey Elkner.
-
Introduction to algorithms. Thomas H. Cormen
-
Elementary mechanics using Python. Anders Malthe Sorenssen.
-
J.E. Hopcroft, R. Montwani, Teoria de autómatas. Lenguajes y computación.
-
El lenguaje de Programación C. Dennis Ritchie.
Página del Curso:
https://sites.google.com/a/ciencias.unam.mx/computacion8101/