II. Experimental modules TC-WP and TC-E in summer term:
»Scientific programming with C++«

Part I

  1. Introduction
    1. Capabilities: »computers vs. humans«
    2. Artificial »Intelligence«, Quantum Computing vs. classical programming
    3. Programming paradigms, programming languages, Turing completeness
    4. Interpreter, compiler, just in time compilation
    5. Efficiency: language vs. algorithm vs. math
    6. Why C++?
  2. First steps
    1. »Hello world«
    2. Error messages...
    3. Variables and (builtin) types
    4. Loops and if clauses
    5. Expressions
    6. Type safety, type propagation
    7. Subroutines
  3. Templates: variable types (static polymorphism)
    1. Function and class templates
    2. Standard template library (STL) containers
    3. vector, array, list, set, map, ...
    4. Access, insert/delete complexities
    5. Explicit and implicit instantiation
    6. Algorithms and their complexities
    7. Nesting of templates
  4. Idea of object orientation (OO)
    1. 3 steps:
      1. Group builtin types together to create new abstract types (data structures)
      2. Group abstract types with methods
      3. Introduce life cycle governing methods (constructors, destructors, ...)
    2. Separation of interface and implementation
    3. Introduction of custom operators
    4. Access control
    5. Inheritance
    6. Virtual functions (dynamic polymorphism)
    7. UML diagrams
  5. Programming 5. Technical issues
    1. Organizing »large« projects
      1. File splitting (header and implementation files)
      2. Automatizing build process (make)
    2. »Compiler« pipeline
      1. Preprocessor, compiler, assembler, linker
      2. Involved stages, files, and linker symbols
    3. Interoperability with other languages
    4. Floating point issues
    5. Limits of computational power
      1. Latency, bandwidth, caches
      2. Basis linear algebra subroutines and their levels BLAS1-3
      3. Cache overruns
    6. Libraries and tools

Part II

In part II there are two projects students may chose from:

  • Project A: implementation of a (simple) molecular dynamics program with graphical visualization (OpenGL)
  • Project B: implementation of a (simple) Hartree-Fock program

Finally: join of projects A and B to a (simple) ab-initio MD program

Apart from the »experimental« work on the computer driven by the provided exercises this module includes a strong lecture type component.

The Institute for Theoretical Chemistry offers two standard experimental modules:

The experimental modules are expected to start in the 3rd or 4th week after the start of the lectures.