Machine Learning

Understand and apply machine learning techniques in Python

What are these courses about?

Our core courses are Introduction to Machine Learning 1 and 2. These courses are intended to provide a comprehensive introduction to the current field of machine learning. Both courses are built around programming and experimentation as the primary means of understanding machine learning algorithms. You will progress from implementing basic learning algorithms to creating more advanced neural networks. In addition, you will dive into the math behind these algorithms, and we will discuss the societal impact of applying such methods in practice.

To complement the Machine Learning courses, you will need to at least take Scientific Programming 2 as well. This course covers some more advanced Python topics that are not part of most introductory Python courses, like: designing larger programs, writing more efficient code, using the Numpy and Pandas libraries to write vectorized code, and designing your own classes. If your do not yet have a good grasp of writing Python code from scratch, you should take more of our programming courses, as described below.

How we teach

The machine learning courses consist of programming notebooks, theory videos, and written assignments. Programming notebooks will be the main component of each module, where you'll build and experiment with the ML algorithm covered that week. The office hours for the courses mainly consist of laptop practicals in our lab, where you can come and ask any questions you have about the theory or specifics of the programming assignments. Machine Learning 1 and 2 conclude with a written final exam. Programming courses generally have code-writing exams.


These courses are primarily aimed at students who have already taken Python programming courses, as well as good introductions to Calculus, Linear Algebra, and Statistics. Note that none of these courses are hard entry requirements, but you should expect to spend more time if you still need to study some of these topics on your own. For the maths topics we provide self-study modules, and there are several programming courses that you can take in parallel, as listed below.

If you intend to follow ML1 and ML2 without prior Python programming experience, or you still feel a bit uncomfortable programming, we would recommend that you register for the minor AI instead. The minor will cover most of the same material as our electives, but we can offer more support and supervision for students learning both programming and machine learning at the same time. However, it does require full-time attendance and it's Dutch-only.

What it is not

The elective courses below do not add up to 30EC, and cannot be considered an official minor program. But you may be able to combine them with other courses as electives in your bachelor. Ask your study adviser to help you get permission to put them on your diploma. Also realise that our courses cannot be used to fulfill entry requirements to the Master AI at the UvA.


Below are the courses offered as Machine Learning electives. In most circumstances you will not need permission from your own program to take any of these courses; however, if you would like to use the courses for your diploma, please contact your own program's study adviser to plan ahead.

Introduction to Machine Learning 1 (6EC)

Workload: 160 hours total makes 20 per week / Course code: 50821ITM6Y

In this course you will become familiar with the fundamentals of artificial intelligence and machine learning. We will cover a number of basic machine learning algorithms, and you will implement these yourself using Python. This is a broad introductory course, which means that we will also discuss the mathematics, mainly calculus and statistics, that are the driving force behind these algorithms. We will also discuss the philosophical and societal consequences of applying these learning systems.

Introduction to Machine Learning 2 (6EC)

Workload: 160 hours total makes 20 per week / Course code: 50822ITM6Y

In this course we continue our discussion of machine learning models and algorithms. While the focus in Introduction to Machine Learning 1 was on programming basic models, here we will make more use of libraries that provide ready-made algorithms, and the focus will mainly be on how to combine these parts into more complex models, like neural networks. You will apply these advanced models to real-life data sets. We will also cover common preprocessing operations for data.

Scientific Programming 1 (3EC)

Workload: 80 hours total makes 10 per week / Course code: 50621SCP3Y

This course is a basic introduction to Python. Assuming you have prior Python experience, this course will not cover new material. If you intend to follow ML1 and ML2 without prior programming experience, we would recommend you register for the minor AI instead (Dutch only), which offers both programming and machine learning simultaneously. Students without prior programming experience following an elective track can also register for SP1 and SP2 separately, and then register for the ML electives the semester after. See the SP electives for more details.

Scientific Programming 2 (3EC)

Workload: 80 hours total makes 10 per week / Course code: 50622SCP3Y

This course is useful to most students taking ML1 and ML2, as it covers more advanced Python topics that are needed for ML programming, but are not part of most introductory Python courses. Topics include: designing larger programs, writing more efficient code, using the Numpy and Pandas libraries to write vectorized code, and working with object-oriented code by writing your own classes. This course contains material relevant for the programming assignments of both ML1 and ML2, but can be started simultaneously with ML1.

Data Processing (6EC)

Workload: 160 hours total makes 20 per week / Course code: 5062DAPR6Y

This course focuses on programming with larger data sets. This includes aspects like gathering data, representing that data in code, processing it and ultimately visualizing the results. The course does not cover techniques required for ML programming, but can be very useful if you want to start working on your own ML project.


You can earn a certificate or course credit by registering for one or more of the courses. Make note of the entry requirements for each course and feel free to e-mail us for advice on compiling a good course package. After considering your options below, before continuing, fill in the registration form.

  • Are you a regular UvA bachelor's or master's student? You can self-register through GLASS. You can do this even after courses start. Make sure to register for the right semester! Registration for the next semester starts during the usual course registration periods.
  • Are you a UvA employee, including PhD students? In many cases the university will pay for your course registration. Do keep in mind the workload. If you'd like to register, or if you have questions, please send an e-mail so we can help you out!
  • Are you a Dutch student registered for a bachelor's programme at a Dutch university and do you have a regular vwo diploma? You can register as an "electives" student at the UvA (choose Informatiekunde as your bachelor), and when that's completely done, register for courses through GLASS.
  • Are you a student at a Dutch master's programme? In that case you cannot register as an "electives" student because these are bachelor's level courses. You might consider registering by paying course fees directly, so check the next option for that.
  • If there's no option for you to register as a regular student, you may consider to do our courses by paying course fees directly. If you'd like to do that, or if you have questions, please send an e-mail so we can help you out!

Always take the course workload and the course periods into account when registering! When starting a course you must finish during the same semester to get credit.


Have questions? Send us an e-mail at One of the teachers or assistants will help you out.

Copyright 2020-2023 Programming Lab / Universiteit van Amsterdam. Alle rechten voorbehouden. Icons made by Eucalyp from