Overview
OverviewΒΆ
The lecture notes cover a number of topics assuming that students already have some programming experience: the lecture notes do not cover introductory programming content. Students that feel that they need to understand more basic programming techniques are refered to chapters 1.2, 1.3, 1.4 and 1.5 of the introductory book Composing Programs by John DeNero.
The first topic relates to algorithms and their execution time behaviour. It does not introduce new programming concepts. We use expressions, commands and function definitions. We do spend some time to introduce recursion. We often refer to the course book Algorithms Illuminated, and at some points we link to some of the videos that the author, Tim Roughgarden, has made avalilable. The book does not use any programming language and describes algorithms using so called pseudo code and English. We complement the book implementing everything in Python, testing the concepts in practice. Hopefully this not only gives practice in Python but shows how to proceed from an algorithm to a program that implements the algorithm.
The next topic is about data structures. Data structures are closely related to algorithms and their execution time, so we also use the course book as a reference and we implement everything in Python.
The third topic is about two libraries, one for linear algebra (think matlab) and one for tabular data (think excel), that are often used with Python in the context of machine learning. These two libraries, NumPy and Pandas, are used with a programming style that we can call point-free. These lecture notes put some emphasis on this programming style and study some consequences for execution time. The notes refer to the book Principles and Techniques for Data Science, specially chapter 6.
Finally, the last topic is about using a distributed file system in order to use cloud based services via Python. The notes focus on the dataflow framework implemented in the Apache beam package.