This course has been designed for students with the following skillset:
- Basic algorithmic thinking (pseudocode, use of loops, if-then-else structures, arrays, derived data structures);
- Basic logical thinking (boolean algebra, truth tables);
- Intermediate programming using any programming language (preferably but not mandatory Python and Java);
- Intermediate mathematics (basic probability, statistics, set operations and graphs).