Programming concepts in scientific computing
MATH-458
Media
Media
General Information
Classroom and Schedule
The class will be divided in lectures and labs. Usually:
Lectures are on Wednesdays from 14:15 to 16:00 in CM1103.
Labs are on Friday from 08:15 to 10:00 in CM1103.
Lectures will not be recorded.
You are expected to work about 4 more hours per week.
Important links
- GIT Repository of the class
- Recommended Virtual machine: SB-MATH-LINUX on https://vdi.epfl.ch (recommended to install the VMware client)
Teaching staff
- Teacher: Guillaume Anciaux (guillaume.anciaux@epfl.ch)
- Tutor: Gal Pascual (gal.pascual@epfl.ch)
Text Book:
- Guide To Scientific Computing in C++, Joe Pitt-Francis and Jonathan Whiteley, Springer-Verlag London Limited 2012. Also available from e-books at the EPFL library https://link.springer.com/book/10.1007/978-3-319-73132-2.
Other resources:
- C++ and Object Oriented Numeric Computing for Scientists and Engineers, Daoqi Yang, Springer-Verlag, 2000
- Parallel scientific computing in C++ and MPI, Karniadakis, G. and Kirby, R.M.,Cambridge University Press, 2003
Lecture notes: none.
Even more readings:
Lecture organization
Typically, the lectures will be organized in four parts:
- Teaching, based on assignment,
- Possible quiz and correction in class (not part of evaluation)
- New assignment: typically reading of new chapter of the book.
- Time for exercise revision (if necessary)
All the lectures are based on the book
Guide To Scientific Computing in C++, Joe Pitt-Francis and Jonathan Whiteley, Springer-Verlag London Limited 2012. Also available from e-books at the EPFL library.
On-line resources
- The moodle website http://moodle.epfl.ch is the main communication line.
- http://www.cplusplus.com is an excellent on-line reference with examples.
- http://www.cppreference.com/wiki is a quite complete wiki page and updated to the last C++11 standard.
IT
The reference operating system is Linux, the reference compilers are gnu version 7.x. We are going to use the CLion as Integrated Development Environment (IDE) dowloadable at https://www.jetbrains.com/student/Note that you are supposed to work on the linux workstations in the lab. You can of course use your own computer, but we can not give you support. Note that working with Windows or MacOSX should be fine but requires little experience with the installation of compilers.
Table of contents
This class focuses only on some aspects of C++, those that are probably most relevant for scientific computing.
- Flow control, I/O
- Pointers
- Blocks, functions, variables
- Classes, derivation and inheritance
- Templates
- Linear algebra
- Introduction to object oriented class design
Quiz
Quiz take 20-30 minutes.
The material of the class can be pulled from:
The cloning maybe done with:
git clone https://gitlab.epfl.ch/anciaux/pcsc.git
The structure of the directories is:
root -
| - lectures
| - exercise_pdfs
| - work
| - solutions
lectures = pdfs of the lectures given in class
exercise_pdfs = the exercises not in the book
work = where to do your things
solutions= where we put the solutions of the exercises
Monday
The first session is on Monday Sept. 22nd. It is devoted to:
- Introduction of the class
- Compilation
- first hands on linux, compiling.
Assignment: reading Chapter 1
Wednesday December 10th, midnight: due date for the project delivery
Friday
Exercise based on the project, 2 hours. Counts for the final grade!
Presentations of the Projects