Course Schedule

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

Topic Deadlines & Materials
Week 1: January 19 – 25

Course Overview

VM Setup

Week 2: January 26 – February 1

SSH, Beginning C

Dev Environment Setup

C Data Types, Command Line Arguments

Week 3: February 2 – 8

Pointers

Arrays

Strings, I/O

  • Lab 1 Due ⋅ February 3

Week 4: February 9 – 15

Finishing Stream I/O, Quiz Study Guide

Quiz, Lab Work

File I/O

  • Lab 2 Due ⋅ February 10

  • Quiz 1 ⋅ February 12

Week 5: February 16 – 22

Structs

Dynamic Memory Allocation

  • Lab 3 Due ⋅ February 17

Week 6: February 23 – March 1

Struct, Malloc Practice

/proc, openat

Quiz Study Guide, P1 UI

Week 7: March 2 – 8

CPU Usage, String Tokenization

Quiz 2, Interactive Grading

Debugging, Q&A

  • Lab 4 Due ⋅ March 3

  • Lab 5 Due ⋅ March 5

  • Project 1 Due ⋅ March 7

  • Quiz 2 ⋅ March 5

Week 8: March 9 – 15

Spring Break!

Week 9: March 16 – 22

Linked Lists, malloc

Malloception, System Calls

Week 10: March 23 – 29

Processes, Quiz 3 Study Guide

Building a Shell

  • Quiz 3 ⋅ March 26

Week 11: March 30 – April 5

Inter-Process Communication

Week 12: April 6 – 12

Wrapping up IPC

Shell Project, Study Guide

Containers

  • Lab 6 Due ⋅ April 7

  • Lab 7 Due ⋅ April 9

Week 13: April 13 – 19

Container Lab

Quiz

Easter Break

  • Lab 8 Due ⋅ April 14

  • Quiz 4 ⋅ April 16

Week 14: April 20 – 26

Threads

Critical Sections, Mutexes

Condition Variables

  • Project 2 Due ⋅ April 21

Week 15: April 27 – May 3

Cryptocurrency

Bit Manipulation

Network Programming with Sockets

  • Lab 9 Due ⋅ April 28

Week 16: May 4 – 10

Semester Wrap-up

  • Lab 10 Due ⋅ May 5

  • Quiz 5 ⋅ May 7

Week 17: May 11 – 17

Final Quiz: Monday, May 12 ⋅ 10:00am – 12:00pm