Schedule
As always, keep up with the University Academic Calendar for general important university dates.
Office hours for the instructor and TAs is listed at the bottom of this page.
The schedule is always tentative. I may shift topics around.
M/W Section / T/Th Section |
Topic |
---|---|
M January 6 / Th January 9 |
Introduction / Syllabus / What is Systems? / Starting Data Representation |
Introduction, What is Systems? [pdf] [pptx] Data Representation [pdf] [pptx] |
|
W January 8 / T January 14 |
Data Representation |
Bitwise and Logical Operations, Floating Point [pdf] [pptx] Other Resources: What Every Programmer Should Know About Floating Point IEEE-754 Floating Point Converter Examples: AbsTest.java | abs.c | FloatTest.java | broken_math.c |
|
M January 13 / Th January 16 |
Floating Point / Start Intro to C |
W January 15 / T January 21 |
Introduction to C |
Introduction to C [pdf] [pptx] | |
**M January 20 | No Class: Holiday |
W January 22 / Th January 23 |
Introduction to Memory |
Introduction to Memory, Pointers, Arrays, Strings [pdf] [pptx] | |
M January 27 / T January 28 |
Introduction to Memory II |
Continuing to look at arrays, strings, and dynamic structures. | |
W January 29 / Th January 30 |
Studying Real-World C |
We already know around 90% of the C language. With this knowledge, we will take a casual look at one of the most studied C codebases in the world. This includes its conventions, style, and bugs. Content Warning: Some cartoony violence and pixelated satanic imagery are very very briefly visible. DOOM: A Case Study [pdf] [pptx] |
|
M February 3 / T February 4 |
Memory Management: Overview |
Looking at the problems in solving memory allocation. And linked lists. Allocations, Linked Lists, malloc [pdf] [pptx] |
|
W February 5 / Th February 6 |
Memory Management: The Gritty Reality |
Looking at how malloc and free can be implemented. | |
M February 10 / T February 11 |
Buddy Allocation / Introduction to x86 Assembly |
The basics of x86 and the C ABI Introduction to x86 [pdf] [pptx] |
|
W February 12 / Th February 13 |
x86 Assembly |
Looking at control patterns in x86 and making use of the C ABI Investigating the Code [pdf] [pptx] |
|
M February 17 / T February 18 |
Debugging: Being a code detective |
Some extra reading about real world uses of the same tools to creating a profiling tool by Julia Evans | |
W February 19 / Th February 20 |
Creating Chaos: Buffer overflows and other monsters |
Smashing the stack, and other fun things which are not always fun for others. Buffer Overflows [pdf] [pptx] |
|
M February 24 / T February 25 |
Spillover day and Review (time permitting) |
Stuff provided on exam: The C ABI specifics, what many of the assembly instructions mean (know the basics), the bias and lengths of bitfields of particular IEEE754 values (know how to deal with them). | |
W February 26 / Th February 27 |
MIDTERM Regular time and place. Closed-book / No tools or calculators. |
M March 2 / T March 3 |
Linking and Loading |
How Programs Are Made [pdf] [pptx] | |
W March 4 / Th March 5 |
|
M March 9 / T March 10 |
No Class: Spring Break |
W March 11 / Th March 12 |
No Class: Spring Break |
F March 13 | No Recitations: Spring Break |
M March 16 / T March 17 |
No Class: Chaos |
W March 18 / Th March 19 |
No Class: Chaos |
M March 23 / T March 24 |
How Programs are Managed |
Topics: The lie about time, Process scheduling, CPU multiplexing, Context switching, Quantums and their effect on perceived performance, Interrupts and interrupt tables, Hardware timers | |
Downloads: [mp4] [pdf] [pptx] | |
W March 25 / Th March 26 |
How Programs Reproduce |
Topics: Process creation, Process-level concurrency, The fork and exec system calls, Tracing concurrent execution, Basic concurrency, Race conditions, Inter-process Communication, Signals and sharing data | |
Downloads: [mp4] [pdf] [pptx] | |
M March 30 / T March 31 |
Virtual Memory |
Topics: The lie about space, Physical addressing and address spaces, Virtual addresses and virtual address spaces, Segmentation, Segmentation Faults, Page Tables, Inverted Page Tables, The MMU and access control, Page Faults, Multi-level Page Tables Announcements: Lab 4 is released. |
|
Downloads: [mp4] [pdf] [pptx] | |
W April 1 / Th April 2 |
The Memory Hierarchy |
Topics: Memory hierarchy and the memory performance gap, Temporal/Spatial locality, Caches, Direct-mapped cache, Fully-associated cache, Cache performance and mathematics | |
Downloads: [mp4] [pdf] [pptx] | |
M April 6 / T April 7 |
Threading and Concurrency |
Topics: Threads, pthread library, Shared memory, Thread-safety, POSIX, Semaphores, Mutexes, Deadlock, Starvation, Livelock | |
Downloads: [mp4] [pdf] [pptx] | |
W April 8 / Th April 9 |
Sockets and Networking |
Topics: Sockets, IP Protocol, IP Addresses, TCP/UDP Protocols, DNS, Basic client-server topology, LAN/WAN Networks, Berkeley Socket Programming in C, HTTP Protocol, Web Servers | |
Downloads: [mp4] [pdf] [pptx] Examples: [echoserver.c] [echoclient.c] |
|
M April 13 / T April 14 |
Files and Directories |
Topics: Files and data, File formats, Disk organization, Disk encoding, File systems, Index nodes and file layout, Directories, Hierarchical vs. non-hierarchical storage | |
Downloads: [mp4] [pdf] [pptx] Examples: [files.c] [files_unix.c] Papers: Hierarchical File Systems are Dead | WAFL |
|
W April 15 / Th April 16 |
Distributed Storage |
Topics: Distributed Systems, Client-Server model, Consistency/Availability trade-off, NFS, Stateless vs. Stateful Protocols, File Hashing, Merkel Trees, Fixity, BitTorrent and Peer-to-peer Networks, Distributed Hash Tables, Chord, Kademlia | |
Downloads: [mp4] [pdf] [pptx] Papers: (peruse whatever catches your interest) NFS | Chord | Kademlia | IPFS |
|
Th April 23 | 8AM FINAL CL324 for Monday/Wednesday Section (CS 26790) - TO BE REPLACED WITH TAKE-HOME FINAL |
Sa April 25 | 8AM FINAL FK125 for Tuesday/Thursday Section (CS 26745) - TO BE REPLACED WITH TAKE-HOME FINAL |
Office Hours
Note: Not valid during finals week!
Gordon Lu
TBA
E-Mail: gol6@pitt.edu
Virtual Office: TBD
Alex Conway
TBA
E-Mail: lac216@pitt.edu
Virtual Office: TBD
Jon Rutkauskas
Finals Week Hours:
Wednesday: 12:00PM - 2:00PM
Thursday: 12:00PM - 2:00PM
E-Mail: jsr68@pitt.edu
Virtual Office: https://pitt.zoom.us/j/4951906131
Zack Hable
Finals Week Hours:
Tuesday: 1:00PM - 3:00PM
Friday: 11:00AM - 12:00PM
E-Mail: zack.hable@pitt.edu
Virtual Office: TBD
Instructor
Wednesday: 1:30PM - 3:30PM UPDATED
Friday: 1:00PM - 2:00PM
Location: 5413 Sennott Square
Virtual Office: Direct Message on Riot, Please. https://chat.449.wilkiepedia.org
Other: By appointment. dwilk@cs.pitt.edu Please place “CS449” in the subject line.