This page is for the Fall 2024
course.
See this link for the current
Fall 2025 class.
Bocconi links: course synopsis, course schedule
Room: Aula 5 (Sarfatti 25, ground floor)
Office hours:
Assignments:
Resources:
| Date | Time | Topics | |
|---|---|---|---|
| 1 | Fri Sep 6 | 08:30 | Introduction |
| Part 1: How computers work | |||
| Boolean logic | |||
| Integers, characters and text | |||
| 2 | Wed Sep 11 | 10:15 (2h30) | Hardware: instructions, memory |
[Tutorial] Python formatted strings and list
comprehensions |
|||
| 3* | Wed Sep 11 | 13:45 (2h30) | [Tutorial] Boolean logic and integers, code: truthtables.py, popcount.c |
[Tutorial] Assignment 1
prep, Backus–Naur form |
|||
| 4 | Fri Sep 13 | 08:30 | Software: compilation, OSs, virtualized memory, stack |
| 5* | Fri Sep 13 | 13:45 (2h30) | Part 2: Software development |
| Compiler invocation and build tools, code: objcode.c, optimize.c, overcommit.c | |||
| 6 | Wed Sep 18 | 10:15 (2h30) | [Tutorial] Assignment 1 Q&A, executable analysis and make, files: secret.zip, in-class
files |
| 7 | Fri Sep 20 | 08:30 | Programming languages |
| 8* | Fri Sep 20 | 12:00 | Portability, ABIs |
| 9 | Wed Sep 25 | 10:15 (2h30) | Regular expressions |
[Tutorial] regular expressions, input files: t03_regex.zip |
|||
| 10 | Fri Sep 27 | 08:30 | Version control systems |
| 11 | Wed Oct 2 | 10:15 (2h30) | [Tutorial] git, commands
used in class |
| 12 | Fri Oct 4 | 08:30 | Software licenses, development methodologies |
| 13* | Fri Oct 4 | 13:45 (2h30) | Part 3: Correctness |
| Specifications | |||
| 14 | Wed Oct 9 | 10:15 (2h30) | Undefined behavior |
| 15 | Wed Oct 16 | 10:15 (2h30) | Fixed-point and floating-point arithmetic |
| 16 | Fri Oct 18 | 08:30 | Documentation, tests, fuzzing |
| (partials) | |||
| 17 | Wed Nov 6 | 10:15 (2h30) | Assignment 2 intro |
| Static and dynamic code analysis, debugging | |||
| 18 | Fri Nov 8 | 08:30 | [Tutorial] Assignment 2
troubleshooting |
| 19 | Wed Nov 13 | 10:15 (2h30) | Part 4: Performance |
| Pipelined CPUs, memory | |||
| 20* | Fri Nov 15 | 12:00 | Caches, benchmarking, instrumentation |
| 21 | Wed Nov 20 | 10:15 (2h30) | Stochastic instrumentation |
[Tutorial] performance, code: matmul_0.c, filter_0.c, solutions: perf.tgz |
|||
| 22 | Wed Nov 27 | 10:15 (2h30) | Datastructures in memory |
| Arrays, linked lists | |||
| 23 | Fri Nov 29 | 08:30 | Stacks, queues, priority queues |
| 24 | Wed Dec 4 | 10:15 (2h30) | Tries, hash, spatial datastructures |
| 25* | Fri Dec 6 | 12:00 | SIMD, threads, distributed computing, hardware acceleration, Falsehoods… |
* = deviates from regular Wednesday
10:15–12:45 / Friday 8:30–10:00 schedule.2h30 = 2h30 lecture (other lectures are 1h30)