NDAA07012U Scientific Computing
MSc Programme in Nanoscience
MSc Programme in Physics
MSc Programme in Physics with minor subject
This course teaches numerical computational techniques that are used universally throughout all branches of natural sciences and engineering. We teach the fundamental principles and derive central computational methods from scratch. Students will see how such algorithms can be invented using simple principles, and will themselves program them and apply them to problems from biology, physics, nanoscience, and chemistry.
Rather than simply teaching how to use or write down numerical algorithms in a formulaic manner, the course teaches how and why they work from the ground up, and how to understand and bound their errors. The goal is to provide students with the tools they need to understand the modern computational methods they will need for solving problems in their respective scientific fields.
At course completion, the student should be able to:
- Choose an appropriate numerical method for the solution of the problem or sub-problem. The numerical method is selected among the methods presented in the course and it should be chosen with respect to the requirements of the model.
- Evaluate the numerical method with respect to potential accuracy, computational efficiency, robustness and memory requirements.
- Understand and program the numerical method from scratch in Python/Numpy or Matlab, and solve the problem using their own programs.
- Calculate the quality of the solution with respect to the accuracy obtained and the sensitivity to model parameter variations.
- Estimate whether the quality of the solution is adequate relative to the desired use of the model.
- Analyse the reasons of a possible total failure of a method applied to a concrete problem.
The student will be able to use the methods presented in the course to perform numerical analysis for concrete problems in science, choose and program computational methods to solve them, and quantitatively bound the errors of the results obtained.
The solutions will be programmed in Python/Numpy or Matlab.
The student will know about
- ideas behind and motivation for fundamental numerical methods for the solution of: linear and nonlinear equations, linear and nonlinear optimization, eigenvalue problems, initial value problems for ordinary differential equations, partial differential equations and the fast Fourier transform.
- simple mathematical models from science and numerical analysis of them.
- methods for expressing mathematical models concisely as efficient, correct program code.
See Absalon for final course material. The following is an example of expected course literature.
Michael T. Heath: Scientific computing. An introductory survey (SIAM Classics in Applied Mathematics), http://heath.cs.illinois.edu/scicomp/
It can be purchased from Academic Books here: https://www.academicbooks.dk/da/content/scientific-computing-12
It is recommended that the student has knowledge of mathematics corresponding to the contents of the B.Sc. in physics, chemistry, mathematics, nanoscience, or computer science. In particular, linear algebra and calculus is used extensively in the course.
Academic qualifications equivalent to a BSc degree is recommended.
Linux is the recommended work environment for code development.
Windows or Mac will work with extra software installed.
See how at http://www.nbi.dk/~avery/teaching/scicomp/how-to-prepare.html
- Practical exercises
- Project work
- 7,5 ECTS
- Type of assessment
- Continuous assessment, during courseIndependent evaluation of 4 projects. The final grade is the average of the grades of each of the 4 projects.
- All aids allowed
- Marking scale
- 7-point grading scale
- Censorship form
- No external censorship
More internal examiners
Oral examination, 30 minutes.
Criteria for exam assesment
See learning outcome