C++ for Scientific Computing: 2019-2020
Timetable - Trinity 2020
Prior to Spring 2020 lockdown conditions in the UK this course was due
to run for Week 1 of Trinity term 2020 as a special topic module on an
Under new MSc regulations the course will not be lectured and is
not available for credit on the MSc. However keen students
are welcome to download lecture slides, exercises and any other resources
that they find here.
If you use things you find here for self-study and you struggle to understand any concepts in the lectures or
exercises then you should drop me email with joe.pitt-francis@cs... (preferably in the first few
weeks of Trinity Term).
- Basic coding of numerical methods in Matlab, Python or another high-level language.
- Basic linear algebra such as matrix-vector
- C++ level
- No previous knowledge of C++ is expected. (The course is intended for programmers/mathematicians who are beginner
or novice C++ programmers.)
- C++ level
- A more precise idea of the content of the course can be gauged from the
syllabus below or from
contents of the recommended
book. Note that there are differences: in particular, the material in Chapter 11 (MPI) is not covered in
Producing almost any numerical software requires writing codes that manipulate matrices and vectors, making Matlab a natural choice as an introductory programming language for scientific computing. However, the ease of programming in Matlab comes at a cost: the codes take a relatively long time to execute; and the software is commercial. While the use of procedural languages such as Fortran and C will overcome these limitations, they do not allow the straightforward coding of operations between matrices and vectors permitted by Matlab. An alternative approach is to use an object-oriented language such as C++ , where vectors and matrices can be represented as classes. Writing subroutines for these classes that have the same syntax as employed by Matlab allows code developed in Matlab to be translated with minimal effort into C++ code. Such an approach combines the ease of development in the Matlab environment without the associated drawbacks.
C++ programming fundamentals.
Object orientation in C++
Variables and expressions
Input and output
Flow of control: if, switch, while, for
Pointers and references
Concept of a class
Private, public and protected class members
Function overloading - templates
Defining functions that may take default values
- A description of the
assessment report is available, but there is no
assessment or credit for the course in 2020.
If you would like a bit more C++
programming practice you might like to look at this exercise
which is needed