What are the requirements to solve algorithms

Program clever algorithms

For the course 2019/2020

Dr. D. Come on, Dr. T. Kohn, Dr. J. Závodný

The course about clever solution strategies and how to implement them in a program. For all students aged 15 and over; every Wednesday evening at 6 p.m. at ETH Zurich.


The registration window for the 2019/2020 course is open. If you are interested, please contact Jakub Závodný by email.

Why is?

  • You have a basket full of ancient coins in front of you and you can choose any three coins and keep them. Then the question arises: What is the fastest way to find the three most valuable coins from the entire collection? And what changes in your strategy if you are not allowed to take more than three coins out of the basket at any time?
  • At the next exam, you can take a large 1500-page book with you and look up everything. The problem is the time: In order to pass the exam, you have to find all the pages in the book that mention the term “crumble cake”, for example. What are the best notes for you to take? How do you find the terms you're looking for so quickly? And how can Google even search billions of websites in a split second for the term "crumble cake"?
  • Mice always find their way through a maze, get the cheese and find their way out again. How would you move yourself in a maze? Could you find the cheese and then the exit without getting lost? Maybe a program like that of the train will help you: This program finds the fastest route through a labyrinth of train stations and connections in a split second.

Are you interested in clever strategies to solve such problems? Would you like to know how to write a program that will give you the solution as quickly as possible? Do you like to tinker with the perfect solution strategy? Or do you want to represent Switzerland at the International Computer Science Olympiad one day?

In this course we are looking for efficient, fast, surprising and, above all, clever solution strategies to problems that you can solve with a computer. The strategy or the algorithm is more important to us than the actual solution. Of course, we not only discuss clever algorithms in theory, but also implement them directly with a program. We use Python as the programming language.

Who is the course aimed at?

Do you already know how to program something? Are you familiar with the basic concepts like functions, variables and loops? If you then bring along curiosity and interest, then you are well prepared for our course. You don't need to be a professional programmer to already know everything. Perhaps you have worked with C ++, Java, Haskell or another programming language and do not yet know Python. Then you still have everything you need. We'll teach you the rest.

Because we want to examine programs and analyze them in detail, you should of course also have a little pleasure and interest in math.

The course is the ideal preparation if you want to train for the computer science Olympiad or later study computer science. But this is absolutely not a prerequisite: You are just as welcome if you just want to participate in programming out of interest and fun.

To take part in the course, you are between 15 and 20 years old and are attending high school or doing an IT apprenticeship.

When and where does the course take place?

The course runs every Wednesday evening from 6 p.m. to around 7.30 p.m., at ETH Zurich. You are in 10 minutes from the main train station at ETH. Depending on the number of participants, the course may only take place every two weeks.

The exact dates, times and places will be published on the current course page.

What does the course cost and how do I register?

The course is free for all participants. So that we can plan the rooms and send you information about the course, you should write us a short e-mail if you want to participate (). We would be grateful if you would register two days before the course.

When you sign up, you are not making any commitments. You can also just take a sniff and then decide whether you really want to participate. It is also not a problem if you should be absent and you can unsubscribe at any time. If you take part in the course, you should still be there as regularly as possible.

What are the specific contents?

The focus is on algorithms (solution strategies) and their implementation in programs. For example, there are dozens of different algorithms for sorting numbers. First, you will learn about some of these algorithms. But then it comes down to questions like: What are the advantages and disadvantages of the individual algorithms? What is the best way to program a specific sorting algorithm in Python? Why are the theoretically best practices not always the most practical?

We not only discuss what good algorithms are, but also what good programming techniques are. By combining different algorithms and techniques, you will learn over time to solve problems in computer science very quickly and easily. You will also see that clever algorithms will take you much further than programming tricks.

Of course, we can't do everything: For example, we don't discuss how to program an app or how to hack a network.


To register for the course or a first lesson, write a short email to Jakub Závodný.

  • Dennis Come:
  • Jakub Závodný:


If you are interested in computer science, the following pages could also help you: