Search for contacts, projects,
courses and publications

Programming II


Gruber P.

Course director



Programming I

Keen interest in programming and quantitative problem solving


Good knowledge of a programming language is a powerful tool for researchers and practitioners. It is also a valuable skill in the labor market. This course introduces the students to advanced and powerful programming techniques. Building upon the foundation of Programming in Finance I, this course uses mostly R, but adds other tools where useful and necessary.

The course has the following goals:

  • Learn how to collaborate on R programs, write packages and contribute to the open source community
  • Learn how to deploy programs in cloud and parallel computing environments
  • Understand advanced optimization algorithms
  • Learn how to set up a data server and create a data science toolchain
  • Learn the basics of a second programming language: Python

After this course, students should be able to collaborate on a complex empirical project in finance and/or data science.

Description / Program

The course is structured along computational concepts, not applications. The topics include

  • Advanced programming: Style, Organization, collaboration, deployment
  • Advanced elements of the R language: packages and parallel computing
  • Open source software and collaborative development using git
  • Advanced and stochastic optimization
  • Setting up a data server in the cloud: Linux, SQL, Web scraping, APIs
  • From raw data to result – Setting up a replicable data science toolchain
    (finding, storing, validating, selecting, visualizing and modelling data)
  • Python and the Internet of Things (IoT): how to make the first steps in a new programming language
  • *Machine learning methods for textual data (optional, time permitting)

Learning Method / Style of Lessons

The course is organized in seven blocks of four hours. Each block introduces a new concept and employs learning-by-doing to move from theory to practice. Students start with short tutorial or reading before each class (flipped classroom). The course block itself starts with a presentation of a new concept. Next, we study a sample program that illustrates this concept and try to understand the underlying ideas. Most of the time will be devoted to discussing practical implications and implementation details.

Grading is based on project work. Students perform small individual tasks (mostly writing summaries) and collaborate in groups on three larger programming projects.

Exam Style

33% Small individual tasks

67% Programming projects in small groups

Requested Material

Students should bring a laptop with R and R Studio installed to all classes. Further software (Python, SQL, Terminal) will be installed together or will be used on a server.

Students will be required to purchase an IoT kit for approx. CHF 20.

Students will be required to purchase server space for approx. CHF 15-25.

This class is generously supported by Datacamp.

To be discussed in the first lecture.