El curso de Ambientes de Programación
Avanzada está basado en la técnica didáctica que se conoce como Aprendizaje
basado en proyectos (POL) ya que por sus características ayudará al alumno a
desarrollar un proyecto que tendrá una duración total del semestre y con el
cual demostrará que ha sido capaz de analizar los puntos necesarios que
conformarán su proyecto e implementarlo.
En esta ocasión se analizarán los nuevos paradigmas de programación que
han sido desarrollados debido a los cambios recientes de las tendencias del
hardware:
1.
CELL
2.
GPU
Como requisito es necesario ser
programadores con experiencia en JAVA,
C++ o C#.
Se requiere tener acceso a
computadoras con tarjetas gráficas Nvidia 6800 o
superiores y sus equivalentes en ATI
(CUDA requiere al menos Nvidia 8800) y a Playstation 3.
•
Este curso cubrirá aspectos de
1. Arquitectura
a. Tendencias generales en HPC
b. Multicore
c. procesadores CELL
d. GPUs
modernos, enfocándose particularmente en su aspecto de stream processors
paralelos
2. Programación
a. GLSL, Rapidmind, CUDA
b. CELL SDK.
3. Aplicaciones gráficas y de propósito general en
a. modelado geométrico
b. simulación física
c. cálculo científico
d. inteligencia artificial
e. visión computacional
f.
robótica
g. videojuegos
•
Este curso será muy práctico, basado en lectura de artículos recientes y
con tareas de programación frecuentes y
un proyecto final.
Ser capaz de elaborar una propuesta de solución a un problema a ser resuelto por ambientes de programación HPC avanzados como Cell o GPU.
Este es un curso POL en que parte del trabajo de investigación bibliográfica y presentación de los temas estará en gran parte a cargo de los alumnos. La mecánica de la clase esta basada en los proyectos, los cuales son de la escala de los siguientes ejemplos.
- Simulación de multitudes con skinning
- Rendering Global
- Visión
- Planeación de caminos
- Redes de neuronas biológicamente plausibles
- Compresión Fractal de Imagenes
Todos ellos pueden realizarse en GPU o cell.
El profesor será un guía. El curso es muy práctico e involucra presentaciones por parte de los alumnos, tareas de programación y un proyecto final.
La calificación final se basa 100% en la presentación del proyecto final, consistente en:
1. una defensa oral incluyendo una demostración (50%)
2. un artículo (50%)
Para tener derecho a presentar este proyecto, las calificaciones en cada parcial deberán exceder o igualar el 80. Los excedentes se tomarán en cuenta como puntos extra en el final. Para determinar las calificaciones parciales se utilizará una bitácora que tome en cuenta las presentaciones y otras actividades en clase, las tareas de programación y exámenes sobre los temas cubiertos en clase de la siguiente manera:
- 30% presentaciones en clase
- 30% quizzes y exámenes
- 40% tareas y avances proyectos
2. http://gamma.cs.unc.edu/hardware/
1. http://www.cis.upenn.edu/~suvenkat/700/
2. http://courses.ece.uiuc.edu/ece498/al/Syllabus.html
3. http://cag.csail.mit.edu/ps3/
4. http://users.ece.gatech.edu/~lanterma/hpvg.html