Ricerca di contatti, progetti,
corsi e pubblicazioni

Programming in Finance and Economics II


Gruber P.

Docente titolare del corso


Good programming knowledge 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 and Economics I, this course expands the students' capabilities in R and features introductions to Python, MySQL, the Linux operating system and smart contracts.

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

  • Setting up a personal data server in the cloud: Linux, SQL, Web scraping, APIs and Cron
  • Advanced programming: Create an R package and learn about collaboration, style, and tools such as git
  • Machine learning methods for textual data
  • Algorithmic trading with Interactive Brokers. Setting up a paper trading system
  • Writing smart contracts on the Algorand blockchain
  • Nocode programming: Create a smartphone app using the Adalo platform

Time permitting, the following topics will be added

  • Python and the Internet of Things (IoT): how to make the first steps in a new programming language
  • Outsourcing: how to write a program specification and communicate with professional programmers


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 server space for approx. CHF 25.
Students will be required to purchase an IoT kit for approx. CHF 20 (depending on optional program)

This class is generously supported by Datacamp  and Adalo.


The course has the goal to deepen the programming skills of students and to empower them to continue deepening their capabilities on their own. After this course, students should be able and confident to collaborate on a complex empirical project in economics, finance or data science or to create prototype software for a startup.

In detail, the course has the following objectives

  • Move  from barely solving problems with the computer to advanced and well-structured programming
  • Add new languages and software to the students' toolbox, including server-based software and Python
  • Introduce students to important concepts such as databases or the blockchain
  • Learn how to choose the appropriate programming environment, including nocode programming
  • Learn how to manage IT projects, including self-management


Modalità di insegnamento

In presenza

Impostazione pedagogico-didattica

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 a short video tutorial and reading material before the course starts. 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.

The goal of the lessons is not to cover every detail of a topic but rather to get students started with a new concept and to lay the foundations that allow them to deepen independently the topic.

Modalità d’esame

Grading is based on project work. Students perform the following.

  • Work individually on small individual tasks, writing three one-page summaries  
    These count for 1/3 of the grade Small individual tasks (write three one-page summaries)
    Criteria: completeness, own contribution + insights, structure+readability, literature
  • Collaborate in groups on two or three larger programming projects.
    These count for 2/3 of the grade
    If students submit three projects, the best two count for the grade
    Criteria: correctness+completeness, programming style, quality of documentation, difficulty/complexity/comprehensiveness

Offerta formativa