Programming in Finance and Economics II
Good programming knowledge is a powerful tool for researchers and practitioners. While AI pair programming makes us more efficient, it still requires basic knowledge of computing. Programming 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.
The course is structured along computational concepts, not applications. The topics are:
- Outsourcing in the age of AI (transversal topic during the entire semester)
- Setting up a personal data server in the cloud: Linux, SQL, Web scraping, APIs and Cron
- Advanced programming: Create an R or Pyhton package while learning about licenses, collaboration, style, and tools such as git
- Large Language Models: curating training data and fine-tuning models
- Algorithmic trading
- Writing smart contracts on the Algorand blockchain
- Nocode programming: Create a smartphone app using the Adalo platform
Students should bring a laptop to all classes with R, Rstudio, Anaconda, Python and Jupyterlab installed. Further software will be installed together or will be used on a server.
Students may be required to purchase server space for approx. CHF 25/year for one project.
Students may be required to pay for outsourcing services for one project.
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
- Profiting from AI pair programming and natural-language coding
- Add new languages and tools to the students' toolbox, including the LINUX toolstack
- 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 plan, manage, deploy and evaluate IT projects
Modalità di insegnamento
The course is organized in seven blocks of four hours. Each block is dedicated to one topic, with outsourcing being an additional transversal topic.
troduces 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.
Grading is based on project work. Students perform the following.
Part 1: One individual write-up and one individual presentation (33%)
- Students can choose topics about organizing program development or the larger impact of computation
- Write a one-page summary to one topic
- Give a 5-min presentation to another topic
- Criteria: completeness, own contribution + insights, structure+readability, convincing presentation
Part 2: Group work on two projects (total 67%)
- Collaborate in groups on two larger programming projects.
- Criteria: correctness+completeness, programming style, quality of documentation, difficulty/complexity/comprehensiveness, creativity of the solution