General

La pagina del curso es: http://www.cmat.edu.uy/cmat/cursos/introcomp
Esta pagina es para ir poniendo un poco lo que vamos dando clase por clase, asi como para discutir alguna otra cosa.

Información del Teórico

24 de Agosto

En el teórico del martes pasado presente el tema de computabilidad. Presente diversos modelos de computacion, empezando por automatas finitos, siguiendo por automatas a pila y terminando con máquinas de Turing. El objetivo es que ellos tengan claro que el concepto de "procedimiento efectivo" es una idea intuitiva y como tal no se puede formalizar, pero que se han propuesto diferentes formulaciones alternativas a la máquina de Turing que probaron ser equivalentes. Luego presente la tesis de Church. No tuve tiempo para mostrar un ejemplo sencillo de indecidibilidad.

Habia unas 50 - 60 personas en clase.

31 de Agosto

En el teorico di un ejemplo de un problema no decidible y empece a trabajar en el tema "De problemas a programas". Alcance a presentar el ejemplo de los semaforos y presente el modelo de grafos y el problema de colorear un grafo. Comente que el problema es NP Completo.

7 de Setiembre

Termine de presentar los temas de la clase anterior. Comente sobre Tipos Abstractos de Datos y presente refinamiento sucesivos en relacion al problema de colorear un grafo. Presente que es Analisis de Algoritmos y Complejidad Algoritmica y presente lo que son Algoritmos Aproximados. Tambien comente sobre correctitud de programas y Estructura de Datos + Algoritmos = Programas

14 de Setiembre

???

21 de Setiembre

En el teorico empece a trabar el tema de tipos. Defini que es un Tipo Abstracto y defini que es un tipo. Comente 3 maneras que para definir el conjunto subyacente al tipo, y comente sobre que es la sintaxis y la semantica de las operaciones del tipo. Di algunos ejemplos (enteros y booleanos), y deje varios otros tipos para que lean por su propia cuenta. Comente tambien la importancia entre definir una funcion y la de "esconder" la implementacion y representacion de los tipos abstractos y funciones. Al final comente brevemente tambien "overloading" de operadores, y el problema que esto puede ocasionar (por ejemplo el uso de +, -, *). Ademas aclare otra vez la diferencia entre error de compilacion y error de ejecucion. Lo importante es que entiendan porque es importante tener tipos, y para que se usan.

El martes qeu viene presentaria brevemente vectores, matrices y registros y luego daria seleccion, secuencia, iteracion, pero creo que NO me va a dar una clase para dar todo esto.

28 de Setiembre

Di estructuras de control. Presente secuencia y di estructuras alternativas. Presente el if-then y el if-then-else. Al final presente el case. Aproveche a presentar ideas relacionadas con condiciones de error en los datos de entrada y el manejo de excepciones. Este tipo de situaciones se maneja generalmente usando estructuras del tipo if <dato invalido> then ...

5 de Octubre

Presente estructuras iterativas. Discuti a fondo el while y di varios ejemplos. Luego sobre el final presente repeat y el for. Di rapidamente la definicion de vector, aunque hay que retomar el tema. Comente todo lo relacionado con la condicion de finalizacion del while, con inicializacion de variables y con el uso adecuado de las condiciones, para evitar entrar en loop. Di varios ejemplos y los discutimos.

Aproveche y converse un poco sobre el obligatorio, su estructura, y sobre su dinamica. Esto fue al comienzo del teorico y me permitio presentar estructuras iterativas.

12 de Octubre

???

19 de Octubre

???

26 de Octubre

???

9 de Noviembre

???

12 de Noviembre

???

16 de Noviembre

???

23 de Noviembre

???

30 de Noviembre

???

Información del Práctico

Primer Semana

Segunda Semana

Tercer Semana

Cuarta Semana

Quinta Semana

Sexta Semana

Septima Semana

leerConfig(...);
repeat
    contagiar(...); {este proc. a su vez llama a otro para sortear a cada vecino}
    copiarmatriz(ant,sig);
    dibujar(...);
until(not termine(params)); {termine es una fn. booleana}

Octava Semana

Novena Semana

procedure contagiar(...);
begin
solidificar(...);      {este cambia (1,x,0) a (0,x,1) donde las coords son (g1,g2,s) segun los vecinos}
copiarmatriz(ant,sig); {los copiar matriz se pueden poner dentro de solidificar y mover}
mezclar(...);          {o intercambiar, mezcla los dos gases}
moverarribaabajo(...); {copia la fila de abajo de ant en sig para g1 y g2 al reves}
copiarmatriz(ant,sig);
solidificar(...);
copiarmatriz(ant,sig);
mezclar(...);
moverizqder(...);
copiarmatriz(ant,sig);

Decima Semana

Decimo Primer Semana

Decimo Segunda Semana

Decimo Tercer Semana

Decimo Cuarta Semana

Decimo Quinta Semana

Ideas para el laboratorio

El primer laboratorio quedo pronto, trata sobre simulaciones con automatas celulares estocasticos. En particular sobre 3 modelos:

El segundo laboratorio es sobre backtracking y soluciones de laberintos.


Alfonso estuvo mirando un poco en la web y yo tambien y encontramos un inconveniente... google. Buscar "conway game of life pascal" da links paginas que tienen codigo fuente del programa (una implementacion particular, pero capaz es malo el facil acceso a una solucion del problema). Algunas ideas que se me ocurren:

Cronograma tentativo de Practico

  1. Presentar conceptos de computacion, programas y lenguajes. Programa básico en Pascal.(1 clase)
  2. Variables y constantes. Tipos de datos. Asignación y operaciones basicas. (2 clases)
  3. Representación interna de datos. Entrada y salida. Formato. (1 clase)
  4. Algebra booleana. Expresiones condicionales. If, else, case. (2 clases)
  5. Estructuras Iterativas. While, repeat, for. (2 clases)
  6. Tipos de datos compuestos. Enumerados, Rangos, Sets, Arreglos. (2 clases)
  7. Procedimientos y funciones. Pasaje de parámetros. Scope de variables. Diseño descendente. (2 clases)
  8. Registros. Registros con variantes. (2 clases)
  9. Inducción y Recursión. Divide & Conquer. Backtracking. (2 clases)

  10. Punteros. Manejo de memoria dinámica. (2 clases)
  11. Tipos de datos abstractos. Listas, árboles. (4 clases)
  12. Mas TAD: queue, stack, hash.
  13. Algoritmos Greedy. Programacion Dinamica.
  14. Aplicaciones a la matemática. Cálculo numérico.

como haces para contar hasta 31 con una sola mano?

Comentarios Generales y discuciones

Esta seccion es como para poner ideas, algun ejercicio, comentarios, algo del laboratorio, etc...

Ideas para el Curso 2005

IntroComp (última edición 2004-12-08 18:29:32 efectuada por )