|Description||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.
- 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.
- Useful sites: python + java, Moodle
- Teaching assistants: Alpha Diallo