20875 - Software Engineering

Laurent Poirrier - Fall 2024

Info

Bocconi links: course synopsis, course schedule

Room: Aula 5 (Sarfatti 25, ground floor)

Office hours:

Assignments:

Resources:

Lectures and tutorials

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
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


* = deviates from regular Wednesday 10:15–12:45 / Friday 8:30–10:00 schedule.
2h30 = 2h30 lecture (other lectures are 1h30)

Exam dates