Scientific Computing and Programming

6 EC

Semester 2, period 4

52548SCP6Y

Owner Master Chemistry (joint degree)
Coordinator prof. dr. L. Visscher
Part of Master Chemistry (joint degree), track Molecular Sciences,

Course manual 2020/2021

Course content

This course provides an introduction into modern programming methods used by scientists. Emphasis lies on applications in chemistry, but the programming methods are of course more generally applicable and useful for other scientific fields as well. The study load is 4 weeks net study time (equal to 6 EC) and is spread out equally over a period of 8 weeks thereby assuming 50% availability of the students during this period.

In the first period students learn  the Fortran90 programming language and practice their skills with increasingly complex programming assignments. This period is ended with a partial exam in week 5 of the course. The final 3 weeks are dedicated to a programming assignment in which students develop a scientific software application to solve a computational chemistry problem. Contact sessions during these weeks will be organized such that students get individual feedback on their program design and implementation.

1) Scientific Software Development

Get familiar with programming languages (Fortran90, C++); compiling with gcc; variables and data types; procedures; reading/writing data; arrays; control statements; modules; user-defined types; structured programming with abstract data types (ADTs); introduction to software design. The later exercises focus on numerical methods that are often used in the chemistry domain (linear algebra, numerical integration, parallelization).

Study materials

Other

  • Course notes will be provided. Some online resources will be used.

Objectives

  • To achieve broad understanding of how computers are utilized in scientific research.
  • Learn practical skills in scientific programming and scripting.

Teaching methods

  • Lecture
  • Self-study
  • Computer lab session/practical training
  • Supervision/feedback meeting

Lectures serve to discuss the concepts used in scientific programming to design efficient and modular computer code.

Self study and practical classes are used to train students in designing, writing and debugging their own computer programs.

Learning activities

Activity

Number of hours

Lectures

8

Computer lab

28

Feedback meetings

6

Self study

124

Attendance

This programme does not have requirements concerning attendance (TER part B).

Additional requirements for this course:

We assume a basic familiarity with programming at the level of the bachelor course ‘Introduction to Scientific Programming for Chemists’. Furthermore students should have a suffciently modern laptop or desktop computer.

Assessment

Item and weight Details

Final grade

0.1 (10%)

Assignment 1

0.1 (10%)

Assignment 2

0.1 (10%)

Assignment 3

0.3 (30%)

Digitale Toets 1

NAP if missing

0.1 (10%)

Assignment 4

0.3 (30%)

Programming Project

NAP if missing

Students will be assessed based on the written exam and the programming assignment in the second period. The final mark is the average of these two marks.

Assignments

Programming assignments

  • Individual assignment in which you create a larger program to solve a scientfically relevant problem. This will test your knowledge of the programming language as well as the correct use of the complementary tools (libraries, revision control, testing procedures) relevant for scientific programming.

Fraud and plagiarism

The 'Regulations governing fraud and plagiarism for UvA students' applies to this course. This will be monitored carefully. Upon suspicion of fraud or plagiarism the Examinations Board of the programme will be informed. For the 'Regulations governing fraud and plagiarism for UvA students' see: www.student.uva.nl

Course structure

Weeks Subject
1-5 Programming assignments
6-8 Programming project

Contact information

Coordinator

  • prof. dr. L. Visscher

Staff

A. Förster (a.t.l.foerster@vu.nl)

Dr. D. Dubbeldam (D.Dubbeldam@uva.nl)

Prof. dr. L  Visscher (L.Visscher@vu.nl)