Description Registration Lectures Tools and tutorials Exercises


Computational thinking can be defined as an approach for encompassing the thought processes involved in formulating problems and expressing their solutions in such a way that a computer can execute them. Such solutions are expressed in terms of algorithms, which are in turn written in some programming language compiled and executed on computing devices, e.g, a desktop computer, a data centre server, a tablet, a smartphone, etc.

While this approach is essential for software development, its scope goes far beyond programming. Just like math is not only useful to mathematicians, computational thinking and algorithmic principles are applicable to everyone, not just computer scientists, and can be used to support problem solving across all the disciplines.

This approach includes a number of characteristics, such as breaking down problems into smaller parts (modularisation), developing step-by-step instructions for solving problems (algorithms), observing regularities in data (pattern recognition), mastering various levels of abstractions (encapsulation), dealing with complexity and open-ended problems, etc.

In this course, you will learn and exercise computational thinking by studying and solving typical computational problems, both from an algorithmic viewpoint (concepts) and from a programming viewpoint (practice). You will also learn how to navigate from high-level concepts, such as iteration, recursion, higher-order functions, objects and classes, to their practical implementation in terms of memory and computer architecture.

More precisely, the following notions will be presented:
  • algorithms and their complexity,
  • computers and their intrinsic limits,
  • programming languages and their expressiveness,
  • software architectures and their modularity.

The course is given in French but most of the course written material is in English. Moreover, English-speaking students can ask their questions in English and will be answered in English. The Course starts sharp at 8:00 A.M. The Course will be managed through this website including course material distribution, coordination and updates. However, you need to register on the Moodle page for administrative requirements. 

TP Update: Group A | Group B

Additional information

  • Les cours ont lieu dans la salle 351 (Amphimax): Mardi, de 8:00 à 10:00
  • Séances d’exercices:
    • 3ème année de Bachelor à HEC Lausanne: les exercices ont lieu dans la salle 143 à Internef (localisation): Jeudi, de 8:30 à 10:00
    • 1ère année de Bachelor en Science Forensiques: les exercices ont lieu dans les salles 140-146 à Amphipôle (localisation140, localisation146) les après-midis indiqués dans le calendrier ci-dessous
  • Liens utiles: slides et exercices
  • Forum Moodle
  • Liens utiles: python + scala + swift
  • Assistants:
  • Assistants principaux: Vaibhav Kulkarni


  • Lectures will take place in room 351 (Amphimax): Tuesday, from 8:00 à 10:00
  • Exercise sessions:
    • HEC Lausanne third year Bachelor Students: they will take place in room 143 at Internef (location): Thursday, from 8:30 à 10:00
    • Forensic Science first year Bachelor: they will take place in rooms 140-146 at Amphipôle (location140, location146) according to the group repartition (please check the calendar given below)
  • Course material: slides and exercises
  • Useful sites: python + scala + swift
  • Moodle forum
  • Teaching assistants:
  • Senior assistants: Vaibhav Kulkarni