Curso de Posgrado: Programación en C++ para Ciencia e Ingeniería
Short URL to this page: bit.ly/cxxprog
Novedades
NEWS:
- [2023-12-12] Durante 2024 el curso se dictará en forma virtual.
Grupo de Google
Toda la info del grupo se envía a través de este Grupo. Deben
suscribirse al mismo, desde la página o bien escribir un mail a
mario.storti at gmail.com.
https://groups.google.com/d/forum/curso-fich-prog-cxx
Videos de las clases
Los videos de las clases están disponibles en videos en
YouTube
Objetivo
El objetivo del curso es proveer conocimientos de programación en el lenguaje
C++ especialmente orientados al
Cálculo Científico. Se estudian librerías de especial utilidad como
Eigen,
HDF5,
JsonCPP. Además, los conocimientos de programación brindados son requisitos para otros cursos del doctorado tales como Cálculo Paralelo, Computación de Alto Rendimiento en Mecánica Computacional, Elementos Finitos, Métodos Numéricos en Fenómenos de Transporte.
Programa Analítico
- Introducción: El C dentro de C++. Abstracción de datos. Programación Orientada a Objetos. Encapsulando la implementación. Control de acceso a las estructuras (public/private). Friends. Inicialización y limpieza. Garantizando la inicialización con el constructor. Garantizando la limpieza con el destructor. Constructores por defecto. Sobrecarga de funciones y argumentos por defecto. Constantes. Punteros. Asignación y chequeo de tipo. Argumentos de funciones y valores de retorno. Const en clases. Funciones inline.
- Programación en C++ avanzada: Control de nombres. Namespaces. Miembros estáticos. Referencias y el constructor por copia. Punteros y referencias. El constructor por copia. Punteros a miembros de una clase. Sobrecarga de operadores. Creación de objetos, los operadores, new, delete, new[], delete[]. Agotamiento de la memoria. Sobrecargando new y delete. Composición y herencia. Lista de inicialización. Combinando composición y herencia. Orden de llamadas a constructores y destructores. Herencia múltiple. Polimorfismo y funciones virtuales. Plantillas (templates). Contenedores. Sintaxis. Programación genérica. Excepciones.
- La biblioteca estándar de C++: strings, plantillas, algoritmos genéricos, contenedores genéricos.
- Biblioteca Eigen: biblioteca de templates para álgebra lineal incluyendo matrices, vectores, solvers numéricos y algoritmos relacionados. Resolución de sistemas lineales. Descomposición LU. Factorización de Cholesky. Descomposición QR. Problemas de autovalores.
- Bibliotecas utilitarias: JsonCpp y HDF5.
- Utilidades: CMake, Git, Valgrind,
unique_ptr
Docentes
- Docente responsable: Dr. Mario Storti Investigador Principal CONICET, Profesor Asociado UNL. Áreas de Especialización: Mecánica Computacional; Mecánica de Fluidos; Cálculo Paralelo
- Dra. Laura Battaglia. Investigador Adjunto CONICET. Profesor Adjunto UTN-FRSF. Áreas de Especialización: Mecánica Computacional; Flujos con Superficie Libre
- Dr. Jorge D'Elía. Investigador Independiente CONICET, Profesor Asociado UN Litoral. Áreas de Especialización: Mecánica Computacional; Mecánica de Fluidos; Cálculo Paralelo
Horarios
- Comienza: (Tentativo) Miércoles 2024-04-03 1300hs
- Horario: (Tentativo) Miércoles 1300-1600hs
- Lugar: El dictado durante 2024 será en forma virtual
Exámenes tomados previamente
Bibliografía
*
Thinking in C++: Introduction to Standard C++, Volume One (2nd Edition) (Vol 1). por Bruce Eckel. Prentice Hall; 2 edition (March 25, 2000) ISBN: 978-0139798092. Disponible en
http://bit.ly/2HEFFN9. Online HTML:
http://bit.ly/2ZN0EC
- The C++ Programming Language. Bjarne Stroustrup, Addison-Wesley Professional; 3 edition ISBN: 978-0201889543 (ver en Amazon)
- The Boost C++ library, http://www.boost.org
- C++ template metaprogramming: concepts, tools, and techniques from Boost and beyond. Abrahams, David, and Aleksey Gurtovoy. Pearson Education, 2004. ISBN: 0321623916, 9780321623911 (en Google Books)
- Eigen, a C++ template library for linear algebra. http://eigen.tuxfamily.org
- C++ for Engineers and Scientists. Bronson, Gary. Cengage Learning, 2012. ISBN: 978-1133187844 (Google Books)
- Transparencias del curso Estos slides no cubren todo el material que se va a dar durante el curso. No incluyen STL, Eigen y Boost. A medida que se vaya generando el material lo iremos actualizando,