You are here: TWiki> Cimec Web>CursoProgCPP (2017-09-11, MarioStorti)

Curso de Posgrado: Programación en C++ para Ciencia e Ingeniería

Novedades

[New] NEWS:

  • [2017-07-24] El curso se dicta en el Aula Este del edificio CIMEC (Cómo llegar?), miércoles 1300-1600hs (TENTATIVO). Primera clase y reunión para tomar contacto Miércoles 16/8 1300hs.


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

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 Boost y Eigen. 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 Boost:
    • uBlas: álgebra lineal básica para matrices densas y ralas.
    • Graph: Algoritmos y components para programación genérica con grafos.
    • Geometry: componentes y algoritmos geométricos, area, longitud, perimétro, centroide, convex hull, intersección, inclusión de punto en polígono, distancia, envolvente (bounding box).
    • MultiArray, MultiIndex.
    • Odeint: resolución de ecuaciones diferenciales ordinarias.
  • 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.

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
  • Msc. Victorio Sonzogni Investigador Independiente CONICET. Profesor Titular UN Litoral. Áreas de Especialización: Mecánica Computacional; Cálculo Paralelo
  • 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

ESTOS HORARIOS SON TENTATIVOS

  • Comienza: Miércoles 16/8 1300hs
  • Horario: Miércoles 1300-1600hs
  • Lugar: Aula ESTE CIMEC (Cómo llegar?)

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://www.mindviewinc.com/downloads/TICPP-2nd-ed-Vol-one.zip
  • 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)
  • Boost Graph Library: User Guide and Reference Manual. Jeremy G. Siek, Lie-Quan Lee, Andrew Lumsdaine. Pearson Education. (en 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,
Topic attachments
I Attachment Action Size Date Who Comment
zipzip cpp.zip manage 43.4 K 2015-04-16 - 15:24 MarioStorti Fuentes que aparecen en los slides
elsehpp ver1.hpp manage 3.2 K 2015-08-12 - 17:20 MarioStorti  
Topic revision: r36 - 2017-09-11 - 18:33:07 - MarioStorti
 

TWIKI.NET
This site is powered by the TWiki collaboration platformCopyright � by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback