Skip to main content Skip to navigation

Introduction to Modern Scientific Programming

To follow this course please make sure you have an IT services account! You can go to the IT-services helpdesk if you have not yet such an account.

Lectures: Luca Sbano (Matlab), Markus Kirkilionis (C++), Martin Eigel (Practicals)


Lecture notes Assignments Supplemental files
Matlab notes
C++ notes 1-4 Exercise 1 Files 1
  Exercise 2 Files 2
  Exercise 3 Files 3
  Exercise 4 Files 4
    boost headers

Course abstract:

A first course in modern scientific programming, providing a beginner's introduction to the MatLab environment and the powerful C++ programming language for scientific computing.
Over the last decade the C++ programming language evolved into being the most widely used universal language for scientific software development and application development in general. As a multi-paradigm language with vast object oriented capabilities, it features concepts for clean an reusable software design of large projects on the one hand while being versatile and fast on the other. C probably has the broadest support in terms of development environments (IDEs, editors, debuggers, profilers and other tools) and freely available scientific libraries (numerics, visualisation etc.).
The course is aimed at presenting the language structure, its main features and some advanced concepts. This will provide knowledge of useful data structures and methods for real world programming tasks like the use of the standard template library STL. This trail is then continued by presenting libraries relevant for scientific computing: OpenGL (the open graphics library) for visualisation and one framework for linear algebra routines (boost ublas or MTL or blitz ).

References:
UNIX/LINUX
[1] UNIX Shell Introduction
 
C++
[2] Thinking in C++
[3] C/C++ Reference++
[4] STL Reference
[5] Bjarne Stroustrup: The C++ Programming Language, Addison Wesley.
     See also: Bjarne Stroustrup's page
[6] C++ FAQ Lite
[7] C++ Tips: (a) (b) (c)
[8] The boost libraries (uBlas)
[9] OO numerics page (blitz )
 
OpenGL
[10] OpenGL headquarters
[11] OpenGL Red Book and examples
[12] OpenGL Reference
[13] GLUT Tutorial
[14] NeHe's OpenGL Tutorials
 
MatLab
[15] MatLab reference and tutorial (also built-in of course)
[16] MatLab Tutorial 1
[17] MatLab Tutorial 2
 
Schedule:
UNIX environment and MatLab introduction
Week 2 Tuesday 15:00 - 16:00 Introduction UNIX shell, MatLab environment, Vectors/Matrices, functions, plotting MS.04
  Tuesday 16:00 - 17:00 Pratical A0.01
Week 3 Tuesday 15:00 - 16:00 MatLab programming language, debugging, advanced graphics MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Introduction to Object-Oriented Programming (OOP) with C++
Week 4 Tuesday 15:00 - 16:00 Concepts of OO (classes, encapsulation, data abstraction, constructors/destructors), namespaces, scoping, new/delete, basic data types, strings, STL basic containers, basic streams MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Week 5 Tuesday 15:00 - 16:00 Control structures, pointers, operators, functions, more on OO (object layout and access control, inheritance and composition, polymorphism, method and operator overloading), iterators MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Week 6 Tuesday 15:00 - 16:00 Introduction to concepts of generic programming (templates), STL algorithms, common data structures MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Week 7 Tuesday 15:00 - 16:00 Exceptions, assertions, linear algebra with C , MTL/uBlas MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Introduction to OpenGL programming
Week 8 Tuesday 15:00 - 16:00 OpenGL overview, data types, state machine, geometry, transformations, lighting and shading MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Week 9 Tuesday 15:00 - 16:00 OpenGL material, texture mapping and curves MS.04
  Tuesday 16:00 - 17:00 Practical A0.01
Week 10 Tuesday 15:00 - 16:00 Scenegraph management, buffer tests and blending MS.04
  Tuesday 16:00 - 17:00 Practical A0.01