Scientific Computing and Programming

6 EC

Semester 1, period 2

52548SCP6Y

Owner Master Chemistry (joint degree)
Coordinator prof. dr. L. Visscher
Part of Master Chemistry (joint degree), track ATOSIM, year 1

Course manual 2017/2018

Course content

This course consists of 4 modules that together provide 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.

The ‘Introduction to Unix/Linux Systems’ and ‘Scientific Scripting with Python’ are compulsory, while students can choose between ‘Scientific Software Development in Fortran’ and ‘Scientific Software Development in C'. A brief description of topics treated is given below.

1) Introduction to Unix/Linux Systems (Required)

Includes logging in; directories and files; grep and regular expressions; editing with vi; sed and awk; shells and shell programming.

2) Scientific Scripting with Python (Required)

Includes introduction to scripting and automation; introduction to Python; running scripts; loading modules; variables; functions; opening/closing files; reading data; extracting data from strings; writing data; running external programs; working with structured data (eg XML, SQL databases); classes and object-oriented programming.

3) Scientific Software Development in Fortran (Choice)

Includes flavors of Fortran; compiling; 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).

4) Scientific Software Development in C (Choice)

Includes compiling with gcc; variables; control structures (eg loops); data types and functions; input/output; pointers; basic algorithms. Includes introduction to High-Performance Computing (HPC) systems; introduction to computer architecture; introduction to parallelization with MPI.

Study materials

Other

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

Objectives

At the end of the course students will have a broad understanding of the use of computers in scientific research and will have acquired practical skills in scientific programming and scripting.

Teaching methods

  • Lecture
  • Self-study
  • Computer lab session/practical training

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

Zelfstudie

100

Practica

56

Hoorcolleges

12

Attendance

The programme does not have requirements concerning attendance (OER-B).

Assessment

Item and weight Details Remarks

Final grade

0%

Unix exam

MandatoryA pass score is required to pass the course, but the pass/fail score is not weighted into the final mark.

0%

Python assessment

Mandatory, Allows retake

0%

C assessment

Mandatory, Allows retake

0%

Fortran assessment

Mandatory, Allows retake

Each module will be assessed separately. Assessment requires completion of assignments for each module taken.

Students will be assessed based on an assignment undertaken upon the completion of a
given module. For the compulsory Unix module the grade will be passed / not passed. In
case of not passed, a re-exam is offered during the course. Having obtained a passing
grade for Unix is a prerequisite for passing this course as a whole. The final mark is the
average of the marks of two remaining individual modules that are chosen (Python and C
or Python and Fortran).

Assignments

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.uva.nl/plagiarism

Course structure

Weeks Subject
31-10  Unix
7-11 Unix 
14-11 Python 
21-11 Python 
28-11 Python 
5-12 Fortran/C 
12-12 Fortran/C 

Timetable

The schedule for this course is published on DataNose.

Contact information

Coordinator

  • prof. dr. L. Visscher