Lecture 1 | Introduction, and a bit about dynamic memory allocation. |
Lecture 2 | Amazon EC2, Subversion, and starting on malloc. |
Lecture 3 | hw1, malloc boundary tags and free lists |
Lecture 4 | hw1 solution, malloc performance enhancements, and start of virtual memory |
Lecture 5 | virtual memory, several major benefits and a few drawbacks |
Lecture 6 | mmap by example, intro to garbage collection |
Lecture 7 | preprocessor, compiler, assembler, linker |
Lecture 8 | .a and .so libraries, position independent code |
Lecture 9 | dynamic linking with the GOT and PLT |
Lecture 10 | class expectations, hw3 solution, and hw4 intro |
Lecture 11 | process abstraction, interrupts, system calls |
Lecture 12 | signals, and some experiments with the same |
Lecture 13 | midterm prep, hw5 demo, fork() |
Lecture 14 | hw5 essentials - fork(), execve(), pipe(), dup2() |
Lecture 15 | process I/O - low-level and buffered |
Lecture 16 | understanding file systems and the VFS |
Lecture 17 | introduction to the Internet |
Lecture 18 | Internet structure discussion, basic socket programming example |
Lecture 19 | Start of server programming |
Lecture 20 | More on nc/telnet, server programming + start of select |
Lecture 21 | event-driven programming with select() example |
Lecture 22 | multiple clients with select(), and email |
Lecture 23 | socket programming with UDP vs TCP |
Lecture 24 | multiple clients with fork(), and beginning of concurrency |
Lecture 25 | race conditions |
Lecture 26 | mutual exclusion |
Lecture 27 | deadlock, semaphores |
Lecture 28 | barriers and other synch primitives using semaphores |
Lecture 29 | reusable barrier, producer consumer, readers-writers start |
Lecture 30 | midterm 2 discussion |
Lecture 31 | hw9 discussion, hw8 solution, and finishing readers-writers |
Lecture 32 | condition variables |
Lecture 33 | user space implementation of locks using Linux futexes & atomic operations |
Lecture 34 | user space implementation of locks, part 2 |
Lecture 35 | user space implementation of locks, code example |
Lecture 36 | futex wrap-up, beginning of lockless datastructures |
Lecture 37 | instruction reordering by optimizer and CPU, compiler/memory barriers |
Lecture 38 | dangers of mutual exclusion, continuation of lockless datastructures |
Copyright 2016 The Board of Trustees of the University of Illinois.webmaster@cs.uic.edu |
WISEST Helping Women Faculty Advance Funded by NSF | ![]() | ![]() |