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 2022/2023

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 Fortran programming language (NB: the modernized form of this language) and practice their skills with increasingly complex programming assignments. This period is ended with a larger assignment in week 6 and 7 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. The last week is reserved for finalizing this assignment and preparing for and taking the exam.

Concise list of topics

Get familiar with programming languages (modern Fortran); 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 and online resources will be provided.

Objectives

  • To achieve broad understanding of how computers are utilized in scientific research.
  • Get familiar with the Fortran program language.
  • Be able to design and document a scientfic software program.
  • Get familiar with code development tools (editors, compilers, revision control).
  • Know the factors that influence software performance and be able to write computationally efficient code.

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

1 (100%)

Tentamen

Students will be assessed based on the written exam (50%) and the mark for the programming assignments (50%).

There are five assignments in total, the exercises of the first week are meant as practice and will not count for the total. Assignments in week 2, 3, 4, 5 have a weight of 10%, the final assignment of week 6, 7 has a weight of 20%. This gives 60% in total, so the lowest scoring of the 5 assignments will not count (or only for 10% if the last assignment had the lowest score).

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-7 Programming project
8 Exam

Timetable

The schedule for this course is published on DataNose.

Contact information

Coordinator

  • prof. dr. L. Visscher

Staff

C. Chibueze (c.s.chibueze@vu.nl)

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

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

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