Advanced Programming in Science and Technology
Purpose
The purpose of the course is to give the students an introduction to advanced scientific programming using C++.
Pre-requisites
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
Contact
Jonas Lindeman, LUNARC, Lund University
E-mail: jonas.lindemann at lunarc.lu.se
Registration
Deadline for application: