Course Schedule

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

Topic Deadlines & Materials
Week 1: January 23 – 30

Course Overview

Beginning C & VM Setup

  • Lab 0 Due ⋅ January 27

Week 2: January 30 – February 6

Input and Output (Feb 1)

Finishing Setting up VMs

  • Lab 1 Due ⋅ January 31

  • Lab 2 Due ⋅ February 4

Week 3: February 6 – 13

Functions, Arguments, and Pointers (Feb 8)

Arrays and Strings (Feb 10)

Week 4: February 13 – 20

Finishing Strings

Structs (Feb 17)

  • Lab 3 Due ⋅ February 16

  • Quiz 1 ⋅ February 15

Week 5: February 20 – 27

String Tokenization (February 22)

Dynamic Memory (February 24)

  • (See previous slides on structs!)
  • Video
  • Lab 4 Due ⋅ February 25

Week 6: February 27 – March 6

Going over Lab 4

Linked Lists (Mar 3)

Week 7: March 6 – 13

Building an Elastic Array (Mar 8)

Project 1 Work Day (Mar 10)

  • Quiz 2 ⋅ March 10

Week 8: March 13 – 20

Spring Break!

Week 9: March 20 – 27

System Calls

  • Lab 5 Due ⋅ March 22

  • Project 1 Due ⋅ March 22

Week 10: March 27 – April 3

Inter-Process Communication

Building a Shell

Week 11: April 3 – 10

Project 2 Work Day

Starting Project 3 (Lab 6)

  • Quiz 3 ⋅ April 7

  • Project 2 Due ⋅ April 5

Week 12: April 10 – 17

Introduction to pthreads

Measuring Performance

  • Lab 6 Due ⋅ April 15

Week 13: April 17 – 24

Critical Sections, Mutexes

Condition Variables, Concurrency Bugs

Week 14: April 24 – May 1

Cupcakes

Finishing P3

  • Quiz 4 ⋅ April 26

  • Project 3 Due ⋅ April 28

Week 15: May 1 – 8

Getting Go-ing: Arrays, Slices, and Runes

Maps & Concurrency

Week 16: May 8 – 15

Bit Manipulation, P3

  • Lab 7 Due ⋅ May 13

Week 17: May 15 – 22

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