Home » Advanced Programming in Science and Technology

Advanced Programming in Science and Technology


The purpose of the course is to give the students an introduction to advanced scientific programming using C++.


This course requires good knowledge in programming in either C, Fortran or Python. Introduction to Programming in Science and Technology + Computational Python or equivalent to this

General aims of the course

In computational science it is often necessary to combine many different software packages into a workflow. This often requires the knowledge of several languages and tools for implementing an efficient and flexible workflow. Today many use shell scripting to accomplish these workflows relying on fragile parsing of output from executables or input files. There are today several methods, tools and languages that can make this process more efficient and flexible. This course aims to provide the students with the tools to improve their existing scientific workflows in an efficient way.

  • Write modularized software using C++
  • Implement and test object-based numerical C++.
  • Conduct object-oriented analysis of problems in computational science and engineering.
  • Implement tools for interactive visualization.
  • Use tools such as Swig to provide a Python based interfaces to existing numerical codes.
  • Use tools such as make and CMake to efficiently build software
  • Introduction to distributed workflows using the ARC C++/Python library
  • Use version control systems such as subversion and git.
  • Use these insights in practice in solving problems of relevance of her/his PhD-project

Course contents (tentative)

Day 1 – C++ numerical computing

Day 2 – Object-oriented concepts in C++

Day 3 – Matrix computing with C++ using the Armadillo library

Day 4 – Basic OpenGL / Build tools and C++ / Python integration

Day 5 – Intro to federated computing using ARC / Work on project assignment

Course schedule

The course consists of:

1 week pre-study exercises 7-11 September 2015
1 week of lectures and hands-on 14-18 September 2015 at Lund University
1 week project assignment 21-25 September 2015

Course literature

C++ and Object-oriented Numeric Computing – for Scientists and Engineers (Springer – ISBN 978-0387989907)
Design Patterns – http://en.wikipedia.org/wiki/Design_Patterns_(book)
Fortran 95/2003 Explained
Lärobok i Fortran 95
Fortran 90 for the Fortran 77 Programmer


Jonas Lindeman, LUNARC, Lund University
E-mail: jonas.lindemann at lunarc.lu.se


Deadline for application: