0019: Calendar

Detailed Class Calendar

Below follows a day-by-day calendar for the class, including reading assignments, lecture topics, and courseworks. Lecture notes will be posted immediately after each lecture.

Class meetings consist largely of discussions of readings. They are designed under the assumption that students have already read the assigned readings. If you do not read the assigned material that appears on a day of the calendar before that day's lecture, you are likely to have difficulty following the lecture and discussion.

N.B. that all assigned readings and lecture contents are examinable (unless explicitly stated otherwise by the instructor).

Monday Tuesday Wednesday Thursday Friday

8th Jan

(Class not yet started)

9th Jan

(Class not yet started)

10th Jan

Class Introduction

Lecture Notes:
Class Introduction

Unassessed Coursework 1 Out:
Defusing a Binary Bomb

due 4 PM, 18th January 2024

11th Jan

x86-64 Assembly: Introduction

Reading: CS:APP/3e 3.0 - 3.5

Lecture Notes:
x86-64 Intro

12th Jan

15th Jan

16th Jan

17th Jan

x86-64 Assembly: Control

Reading: CS:APP/3e 3.6

Lecture Notes:
x86-64 Control

18th Jan

x86-64 Assembly: Control (cont'd)

Unassessed Coursework 1 Due, 4 PM

Unassessed Coursework 2 Out:
Implementing a Debugging malloc

due 4 PM, 1st February 2024

19th Jan

22nd Jan

23rd Jan

24th Jan

x86-64 Assembly: Procedures, Data

Reading: CS:APP/3e 3.7 - 3.10

Lecture Notes:
x86-64 Procedures, Data

25th Jan

C Data Types, Pointers, Arithmetic; Undefined Behavior in C

Reading: CS:APP/3e 2.1.2 - 2.1.3, 2.1.9, 2.2 - 2.3

Lecture Notes:
C Data Types, Pointers, Arithmetic; Undefined Behavior in C

26th Jan

29th Jan

30th Jan

31st Jan

Undefined Behavior (cont'd); Dynamic Memory Allocation in C

Reading: CS:APP/3e 9.9, 9.11

Lecture Notes:
Tips on Pointers and Casts in C

Dynamic Memory Allocation in C

1st Feb

Dynamic Memory Allocation in C (cont'd)

Unassessed Coursework 2 Due, 4 PM

Assessed Coursework 3 Out:
Implementing a Bit-Level LZW Compressor

due 4 PM, 22nd February 2024

2nd Feb

5th Feb

6th Feb

7th Feb

Lempel-Ziv-Welch Compression

Reading: LZW (Welch, 1984); UCL IS login required

The Memory Hierarchy

Reading: CS:APP/3e 6.0 - 6.4

Lecture Notes:
LZW Compression

Memory Hierarchy

8th Feb

The Memory Hierarchy (cont'd)

9th Feb

12th Feb

13th Feb

14th Feb

Reading week; no lecture today!

15th Feb

Reading week; no lecture today!

16th Feb

19th Feb

20th Feb

21st Feb

CPU Caches

Virtual Memory I

Reading: CS:APP/3e 9.0 - 9.7

Lecture Notes:
CPU Caches

Lecture Notes:
Virtual Memory Concepts

22nd Feb

Virtual Memory II

Lecture Notes:
Virtual Memory Implementation

Assessed Coursework 3 Due, 4 PM

Assessed Coursework 4 Out:
Implementing Virtual Memory

due 4 PM, 7th March 2024

23rd Feb

26th Feb

27th Feb

28th Feb

Virtual Memory II (cont'd)

29th Feb

Processes and Exceptions

Reading: CS:APP/3e 8.1 - 8.4

Lecture Notes:
Processes and Exceptions

1st Mar

4th Mar

5th Mar

6th Mar

Processes and Exceptions (cont'd)

Reading: CS:APP/3e 8.5 - 8.7

7th Mar

Midterm Rubric
Midterm Exam (unmarked!)

Processes II: Pipes, Signals, Non-Local Jumps

Lecture Notes:
Midterm Prep

Lecture Notes
Pipes and Signals

Assessed Coursework 4 Due, 4 PM

Assessed Coursework 5 Out:
Implementing a UNIX Shell

due 4 PM, 27th March 2024

8th Mar

11th Mar

12th Mar

13th Mar

Processes II: signals (cont'd)

Processes: Assessing fork()

Reading: A fork() in the Road

14th Mar

Processes II: signals (cont'd)

15th Mar

18th Mar

19th Mar

20th Mar

System-Level I/O

Reading: CS:APP/3e 10.1 - 10.4, 10.6 - 10.12

Lecture Notes:
System-Level I/O

Concurrency and Locking in C

Reading: CS:APP/3e 12.3 (except 12.3.8), 12.4, 12.5 (except 12.5.5), 12.7

Lecture Notes:
Threads and Synchronization in C

21st Mar

Concurrency on x86-64; Avoiding Bugs in Threaded Code

Lecture Notes:
Threads in C: x86-64 and Programming Tips

22nd Mar

Last Day of Term 2

25th Mar

26th Mar

27th Mar

Assessed Coursework 5 Due, 4 PM

28th Mar

29th Mar

No office hours; UK Bank Holiday