Course Schedule

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

Topic Deadlines & Materials
Week 1: Jan 25 - 29

Course Overview

Beginning C & VM Setup

Week 2: Feb 1 - 5

Functions, Arguments, and Pointers

Arrays and Strings

Week 3: Feb 8 - 12

Arrays and Strings (Continued)

I/O and Command Line Arguments

Week 4: Feb 15 - 19

Structs and Dynamic Memory

  • Reading: K&R Ch 6
  • Lab 3 Due ⋅ Thurs 2/18
  • structs.c
Week 5: Feb 22 - 26

String Tokenization

Elastic Arrays (allocating, adding, sorting)

Week 6: Mar 1 - 5

Data Structures in C

System Calls

  • Exam 2: March 2
Week 7: Mar 8 - 12

Processes

fork() and exec()

Week 8: Mar 15 - 19

Spring Break!

Week 9: Mar 22 - 26

Introduction to pthreads

Critical Sections

Condition Variables

Week 10: Mar 29 - Apr 2

Concurrency Bugs, Thread Safety

  • Exam 3: March 30
Week 11: Apr 5 - 9

Networking

Week 12: Apr 12 - 16

Beginning Golang

Week 13: Apr 19 - 23

Arrays, Slices, and Maps

  • Exam 4: April 20
Week 14: Apr 26 - 30

Concurrency in Golang

Week 15: May 3 - 7

Microservices

Week 16: May 10 - 14

Distributed Systems

  • Exam 5: May 11