Course Schedule

The following is a tentative schedule for the course (subject to change).

Topic Deadlines & Materials
Week 1: January 22 – 28

Course Overview

Beginning C

  • Lab 0 Due ⋅ January 27

Week 2: January 29 – February 4

Pointers and Arrays

Strings and Input/Output Streams

  • Lab 1 Due ⋅ February 1

Week 3: February 5 – 11

File I/O

Structs and Dynamic Memory Allocation

  • Lab 2 Due ⋅ February 8

  • Quiz 1 ⋅ February 7

Week 4: February 12 – 18

Structs and Dynamic Memory

Review Day

  • cat, echo
  • Number conversions
  • Setting Wordle requirements
  • Project 1
  • Recording
  • Lab 3 Due ⋅ February 15

Week 5: February 19 – 25

Project Work Day

String Tokenization

  • Project 1 Due ⋅ February 24

Week 6: February 26 – March 4

Grading & Playing Wordle

Thurs: Class Cancelled (Baby)

  • Lab 4 Due ⋅ February 27

  • Quiz 2 ⋅ February 28

Week 7: March 5 – 11

Linked Lists, Building Malloc

Finishing P2

  • Project 2 Due ⋅ March 10

Week 8: March 12 – 18

Spring Break!

Week 9: March 19 – 25

System Calls

Building a Shell

Week 10: March 26 – April 1

Inter-Process Communication

  • Lab 5 Due ⋅ March 29

  • Quiz 3 ⋅ March 30

Week 11: April 2 – 8

Threads

  • Lab 6 Due ⋅ April 5

Week 12: April 9 – 15

Measuring Performance

Shell Work Time + Grading

Week 13: April 16 – 22

Critical Sections, Mutexes

Condition Variables

  • Quiz 4 ⋅ April 20

Week 14: April 23 – 29

Concurrency Bugs

Network Programming with Sockets

  • Project 3 Due ⋅ April 26

Concurrency

Socket Programming

Week 15: April 30 – May 6

Proof of Work and Bitcoin

Bit Manipulation and Mining Server Design

Week 16: May 7 – 13

P4 Work Day (Tues)

  • Quiz 5 ⋅ May 11

Week 17: May 14 – 20

Final Quiz: Tuesday, May 16 ⋅ 3:00 PM – 5:00 PM