Universidad de Costa Rica
|
I Semestre 2008 | Profesor Adolfo Di Mare |
CI-1101 Programación I | Horas: | 4 |
CI-1104 Estructuras Discretas I | Créditos: | 4 |
Proveer al estudiante la formación básica necesaria para su desempeño eficiente como programador de herramientas (PH) y como programador de aplicaciones (PA) de poca complejidad que requieran equipos de programación y el uso eficiente y efectivo de ambientes de programación orientados a objetos, cuyo uso apropiado implica la reutilización de software.
Al finalizar el curso el estudiante será capaz de:
El curso integra la teoría y la práctica. La teoría es relativamente fácil de digerir, y está bien explicada en los libros de texto. La parte práctica es más difícil de dominar, pues requiere de una exposición en carne viva a problemas reales.
Como complemento a las prácticas, durante el curso se hará especial incapié en aplicar el concepto de abstracción, según está definido en [LG-1986]. El curso consta de varios ingredientas altamente relacionados. Primero se exponen los conceptos de abstracción y especificación en el marco del lenguaje C++, y se discuten en el contexto de la programación por objetos. También se revisan algunas técnicas generales para depuración de programas. Durante todo el curso se estudian algunos tópicos básicos de estructuras de datos.
Con el fin de introducir muchos de los algoritmos y estructuras de datos que serán usados en el curso siguiente (CI-1303 Estructuras de datos y análisis de algoritmos), en muchos casos las tareas cortas incluirán uso de listas, colas, pilas y árboles. Para esto en el curso se cubrirá el equivalente de los dos primeros capítulos de [AHU-1984]. Durante el curso el estudiante trabajará en diversos proyectos para que logre fluidez en conceptos como punteros, uso de archivos, manejo de pantallas y ventanas, y recursividad. El estudiante conocerá las herramientas básicas del programador profesional. Se espera del estudiante un buen dominio del C++. Se hará especial énfasis en lograr que el estudiante domine los conceptos de abstracción y especificación, y se hará un extenso uso de herramientas diversas de programación.
Las tareas escritas consistirán en "premios", esto es,
asignaciones cortas que cada estudiante debe cumplir. Antes de que
termine el lunes de cada semana el estudiante debe instalar en una
única página Internet al menos 8 filminas en las que
resuma el material cubierto en la semana anterior. También
debe enviarle al profesor la dirección Internet en donde
dejó sus fichas de estudio, las que le servirán
luego al estudiante y a todos sus compañeros para repasar
la materia cubierta. Siempre debe usar formato HTML para las
filiminas.
Las filminas son responsabilidad individual de cada estudiante. Si al revisarlas se detectan copias, perderá los puntos tanto el alumno que copió como el que se dejó copiar. |
Al finalizar cada lección el estudiante debe revisar el libro de texto y también el libro de Bjarne Stroustrup para determinar los capítulos y secciones en donde se discute cada uno de los temas cubiertos en la lección. Como resultado de esta investigación cada estudiante debe incluir en sus filminas un reporte con 5 secciones claramente delimitadas y que contenga los siguiente:
|
Los estudiantes deberán hacer al menos un programa grande (de más de 1500 líneas), y durante todo el semestre tendrán asignaciones cortas programadas. Después de tomar el curso, cada estudiante sabrá como hacer la documentación de un programa.
Este curso requerirá de un gran esfuerzo de programación. Al terminar el curso, el estudiante será capaz de a producir programas de alta calidad.
Exámenes P1 - P2 - P3 Final |
Tareas #1 - #2 - #3 - #4 #5 - #6 - #7 - #8 |
Acumulador
Fechador
CSV_line
para procesar archivos de formato CSV
Tareas, proyectos, quices 20% (Prof. Di Mare) Examen Parcial #1 10% Viernes 18 de abril Examen Parcial #2 10% Viernes 2 de mayo Examen Parcial #3 25% Viernes 30 de mayo Examen Final 35% Miércoles 25 de junio
Como lenguaje de programación se usa C++, por lo que conviene que el estudiante adquiera un buen libro de texto para el lenguaje, como por ejemplo el de Deitel & Deitel, que está escrito en lengua inglesa, aunque la versión en español también se puede usar, pese a que no toma en cuenta todos los cambios y detalles que forman parte del C++ estándar. Es conveniente que cada estudiante tenga acceso al libro de Bjarne Stroustrup sobre C++, que es el lenguaje que se usar como marco de referencia en todo el curso. Este libro tiene un costo de unos $ 45, y se puede conseguir en Internet. Algunos estudiantes encontrarán necesario consultar el libro de Musser & Saini sobre la biblioteca STL de C++, aunque puede ser que el libro Nelson sea más asequible. Gran parte de la teoría del curso se está descrita en el libro de Liskov & Guttag. En los proyectos programados es necesario que los alumnos apliquen convenciones de programación, como las de Adolfo Di Mare o las de Sun Microsystems, Inc. Cada estudiante es responsable de conseguir sus libros. Además, en el sitio Internet del curso habrá material adicional (como los FAQ's).
http://www.di-mare.com/adolfo/p/adts-91.doc
http://www.di-mare.com/adolfo/p/Rep.htm
http://www.di-mare.com/adolfo/p/Doxygen.htm
http://www.research.att.com/~bs/3rd.html
http://www.genamics.com/visualj++/csharp_comparative.htm
ftp://ftp.prenhall.com/pub/deitel/C++_HTP/C++HTP2e/c++htp2e_examples.zip
ftp://ftp.prenhall.com/pub/deitel/C++_HTP/C++HTP2e/c++htp2e_examples.zip
http://www.deitel.com/
http://deitelandassociates.com/oldsite/books/2001/cpphtp3/cpphtp3_examples.zip
http://www.deitel.com/
http://www.deitel.com/books/cppHTP4/cppHTP4_examples.zip
http://deitelandassociates.com/oldsite/books/gsvcpp_mfc/MFC_examples.zip
http://www.di-mare.com/adolfo/p/convpas.htm
http://www.di-mare.com/adolfo/p/adts-91.doc
http://www.di-mare.com/adolfo/p/Rep.htm
http://www.di-mare.com/adolfo/p/Doxygen.htm
http://www.di-mare.com/adolfo/binder/index.htm
http://java.sun.com/docs/codeconv/CodeConventions.pdf
http://home.comcast.net/~lancehunt/CSharp_Coding_Standards.pdf
http://www.cs.rpi.edu/~musser/stl-book/
http://windows.oreilly.com/news/hejlsberg_0800.html
http://www.awl.com/cseng/titles/0-201-63398-1
ftp://butler.hpl.hp.com/stl/stl.zip
http://ootips.org/yonat/4dev/smart-pointers.html
http://www.research.att.com/~bs/3rd.html
http://java.sun.com/docs/codeconv/CodeConventions.pdf
Adolfo Di Mare <adolfo@di-mare.com>
|