Lecture Recordings

Screen captures and audio recordings of most lectures will be made available here. The OmniOutliner document used throughout the semester is occasionally uploaded here.

C Programming and how an executable is made

Lecture 1 Introduction to CS385
Lecture 2 Homework 1 and c/asm relationship
Lecture 3 Types, casting and pointers
Lecture 4 Function calls and the stack
Lecture 4+ Full stack dump, and local variables (addendum)
Lecture 5 gcc, make and gdb (by Tim Merrifield)
Lecture 6 stack vs. heap vs. global. memory allocation models
Lecture 7 Homework 3, preprocessor macros, unit testing
Lecture 8 A bit of subversion, structuring larger programs, and start of linking
Lecture 9 Static linking, libraries, ELF file format

Process Management and Concurrency

Lecture 10 Dynamic linking/loading, fork() and homework 4
Lecture 11 Processes/threads, scripts, pipes and I/O redirection
Lecture 12 Kernel dive: system calls, task_struct, fork() and execve()
Lecture 13 Synchronization primitives and critical sections
Lecture 14 Pthread sync primitives and the elevator homework (5)
Lecture 14+ Deadlock resolved, condition variables, and barriers (last 10/25 min optional)
Lecture 15 The "dining philosophers", deadlock, starvation, livelock and priority inversion
Lecture 16 How to spin your own threads, and hw6
Lecture 17 CPU scheduling, basic method and scheduling criteria
Lecture 18 Scheduling policies
Lecture 19 Three linux CPU schedulers: 2.4, O(1) and CFS. scheduling code: cooperative and preemptive
Lecture 20 Boot: from power-on to the first line of kernel code...
Lecture 21 Boot: .. to first user process (init) + signals and event-driven programming w/select.

Memory Management

Lecture 22 Midterm/homework review and start of memory hierarchy.
Lecture 23 Short discussion of homework 7.
Lecture 24 Virtual memory: page tables, demand paging, TLB, etc.
Lecture 25 Address space vs. virtual memory, performance experiments
Lecture 26 Memory allocation alg., binary buddy and slab allocators
Lecture 27 User-space memory allocation in malloc()
Lecture 28 More malloc, hw8 hints
Lecture 29 Physical memory fragmentation errata, memory management wrap-up.

Storage Management

Lecture 30 Introduction to storage management and file systems.
Lecture 31 File allocation table, index nodes (inodes), and the Linux VFS
Lecture 32 Directories, free-space management, and Kernel dive: VFS structs and readdir()
Lecture 33 Maintaining filesystem integrity. Journaling filesystems and RAID.
Lecture 34 B-Trees.
Lecture 35 btrfs, the b-tree file system. A look at the cutting edge of fs design.
Lecture 36 storage management and file system wrap-up.
Lecture 37 hw9 and hw10 discussion


Lecture 38 permissions management & protection
Lecture 39 user and message authentication
Lecture 40 cryptography and cryptanalysis
Lecture 41 public key crypto, key distribution and signatures
Lecture 42 exploits and vulnerabilities: variations on buffer overflow
Lecture 43 viruses, worms, and injection attacks (SQL/shell code)
Lecture 44 wrap-up lecture - marathon run-through of everything! smile
Topic revision: r45 - 2011-04-29 - 16:17:43 - Main.jakob
Copyright 2016 The Board of Trustees
of the University of Illinois.webmaster@cs.uic.edu
Helping Women Faculty Advance
Funded by NSF