Info
Bocconi links: course
synopsis, course
schedule
Room: Aula 5 (Sarfatti 25, ground floor)
Office hours:
- drop-in: Wednesdays at 1pm (Roentgen building, room 2-c1-17)
- any other time: email me
- with TA Caicai
Chen: book appointment on yoU@B
(Roentgen building, 3-e2-fm01)
Assignments:
Notes:
Lectures and tutorials
1* |
Wed Sep 6 |
16:30 |
Intro,
Boolean logic and integers |
2* |
Fri Sep 8 |
12:00 |
Tutorial |
3* |
Mon Sep 11 |
12:00 |
Instructions
and memory |
4* |
Wed Sep 13 |
10:15 |
Compilation,
OSs, virtual memory, heap and stack |
5 |
Fri Sep 15 |
08:30 |
Compiler
invocation, tools, code: objcode.c , optimize.c , overcommit.c , commands used in class |
6* |
Fri Sep 15 |
12:00 |
Tutorial,
errata, secret.zip , commands used in class |
7* |
Mon Sep 18 |
12:00 |
Programming
languages |
8 |
Wed Sep 20 |
10:15 (2h30) |
Portability,
ABIs, APIs, Tutorial, unfinished in-class files |
9 |
Fri Sep 22 |
08:30 |
Finished
in-class files |
10* |
Mon Sep 25 |
12:00 |
Python
formatted strings, list comprehensions, Tutorial exercise: t03_ex2.py |
11 |
Wed Sep 27 |
10:15 (2h30) |
Regular
expressions, Tutorial, in-class solution files |
12 |
Fri Sep 29 |
08:30 |
Version
control systems |
13* |
Mon Oct 2 |
12:00 |
Tutorial, commands used in class |
14 |
Wed Oct 4 |
10:15 (2h30) |
Tutorial (continued), Software licenses |
15 |
Fri Oct 6 |
08:30 |
Specifications |
16 |
Wed Oct 11 |
10:15 (2h30) |
Undefined
behavior |
17 |
Fri Oct 13 |
08:30 |
Fixed-point
and floating-point arithmetic |
18 |
Wed Oct 18 |
10:15 (2h30) |
Documentation, tests, static and dynamic
code analysis, fuzzing |
|
(partials) |
|
|
19 |
Fri Nov 3 |
08:30 |
Debugging |
20 |
Wed Nov 8 |
10:15 (2h30) |
Pipelined
CPUs, memory caches |
21 |
Fri Nov 10 |
08:30 |
Benchmarking and static
instrumentation |
22 |
Wed Nov 15 |
10:15 (2h30) |
Stochastic
instrumentation |
23 |
Fri Nov 17 |
08:30 |
Tutorial,
code: matmul_0.c , filter_0.c , solutions: perf.tgz |
24 |
Wed Nov 22 |
10:15 (2h30) |
Data
structures in memory: arrays, linked lists |
25 |
Wed Nov 29 |
10:15 (2h30) |
Stacks,
queues, priority queues |
26 |
Fri Dec 1 |
08:30 |
Tries, hash
tables, spatial data structures |
27 |
Wed Dec 6 |
10:15 (2h30) |
SIMD,
threads, distributed computing, hardware acceleration, Falsehoods… |
*
= deviates from regular Wednesday
10:15–12:45 / Friday 8:30–10:00 schedule.
2h30
= 2h30 lecture (instead of regular 1h30)
Course plan
- How computers works
- L1 Boolean logic & gates
- Integers (signed and unsigned)
- L2 Characters and text (ascii,
Unicode, utf-8, utf-16)
- Structure of computer hardware (processor, memory, I/O)
- Instructions (ISAs, assembly basics)
- Memory
- L3 Compilation (static and dynamic
linking, libraries, optimizations)
- Operating systems, virtual memory, heap and stack
- Software development
- L4 Compiler invocation
- Code editors and IDEs
- Shell scripts, build systems, make
- L5 Programming languages
- Compiled vs interpreted
- Strong-vs-weak and static-vs-dynamic typing
- Memory management: manual vs automatic
- Other language features (macros, generics, OOP, functional,
declarative)
- L6 Portability
- ABIs, calling conventions
- Portable code:
- APIs
- Dependencies and packaging
- L7 Python formatted strings,
list comprehensions
- L8 Regular expressions
- L9 Version control systems
- L10 Software licenses, development
methodologies
- Correctness
- L11 Specifications
- L12 Undefined behavior
- L13 Floating-point arithmetic
- L14 Software engineering
practices
- Documentation and tests, test coverage
- Static analysis
- Sanitizers, valgrind
- Fuzzing
- L15 Debugging
- Performance
- Code optimization
- L16 Pipelined CPUs, memory
caches
- L17 Benchmarking and static
instrumentation
- L18 Stochastic
instrumentation
- Data structures in memory
- L19 Arrays, linked
lists
- L20 Stacks, queues, priority
queues
- L21 Tries, hash tables, spatial
data structures
- Parallel computation
- L22 SIMD, threads, distributed
computing, hardware acceleration
Exam dates
- 2023-12-19 09:00
- 2024-01-15 14:00
- 2024-01-30 14:00
- 2024-09-05 14:00