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.