CIT 5950 (Spring 2023)

Welcome to CIT 5950! We’re super excited to have you here this term!

Due Next

Calendar

Wellness and Inclusion

It is very important to us that you succeed in CIT 5950. We provide many extra resources to help you.

It is also very important to us that you maintain your mental wellness throughout the course. A few points are not worth losing sleep over. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary. You can also visit counseling services if you find you need help beyond the course staff. If you have a temporary health condition or permanent disability (either mental health or physical health related), you should contact the Weingarten Center if you have not already. Additionally, if there is something we can do to make your experience better, please let us know.

All participants in the course have a right to a learning environment that feels safe, where you are treated with respect and feel that you can contribute ideas constructively. Put another way, you have the right to an inclusive learning environment.

We want every student to feel that they have a safe and healthy learning environment, and if at any point you feel like this is not the case in any way, we encourage you to let course staff know so that we can help.

Tools

Ed Discussion OHQ Poll Everywhere Gradescope Grades Zoom

Course Staff

Instructor

any/all
Book a meeting!
Levine 269 A
tqmcgaha@seas.upenn.edu

Teaching Assistants

Chandravaran
he/him
kunjeti@seas
Donglun
they/them
donglun@seas
Eddy
he/him
eddyyang@seas
Heyi
she/her
heyiliu@seas
Jialin
She/Her
caijia@seas
Kevin
he/him
kbernat@seas
Mati
he/him
matidav@seas
Shufan
he/him
shufanwl@seas

References

The following is a list of references that you might find helpful throughout the course.

Course Information

Syllabus – an overview of the course and course policies

Meeting Requests – For requesting meetings with the course instructor

Course Setup

Course Codio – Link to join the course Codio, use the add code winter-riviera if asked

Course Texts

Dive Into Systems Textbook – An optional textbook that contains well written information on most things covered in the class. Chapters 13 and 14 being most relevant to us (though we will not cover everything in it).

C reference – a reference of features and useful utilites in C.

C++ reference (cppreference.com) – a reference of features and useful utilites in C++. Contains a lot of technical detail (arguable more than necessary) and has translations into other languages

C++ reference (cplusplus.com) – a reference of features and useful utilites in C++. An alterantive to the above, usually easier to read for beginners

Linux Man Pages – Contains useful information on user terminal commands (section 1) and C standard library functions (section 3)

Schedule

L00 Wed, Jan 11 Introduction & C Review [ pdf ]
Course administrivia. C Pointers, Memory, Arrays.
R00 Thu, Jan 12 Recitation00: C & Setup [ slides ]
Pointers, Arrays, Codio
L01 Wed, Jan 18 C Review Cont. [ pdf ]
Structs, Heap & malloc, Function Pointers
R01 Thu, Jan 19 Recitation01: HW0 Tips [ slides ]
Debugging, Malloc, Structs, Pointers
Check-in00 (C Pointers & Structs) due @ 10:00 am on Mon, Jan 23
L02 Mon, Jan 23 Intro to C++ [ pdf ]
C vs C++, string, iostream, new/delete, const :)
Survey0 (Pre-Semester Survey) due @ 11:59 pm on Tue, Jan 24
L03 Wed, Jan 25 Intro to C++ Cont. [ pdf ]
Objects & References
R02 Thu, Jan 26 Recitation02: Intro to C++ [ slides ]
C vs C++, strings, Objects, References
HW0 (LinkedList & HashTable) due @ 11:59 pm on Thu, Jan 26
Check-in01 (C++ Intro) due @ 10:00 am on Mon, Jan 30
L04 Mon, Jan 30 Intro to the OS: Traps, System Calls & POSIX [ pdf ]
POSIX, POSIX System Calls vs LC4, POSIX File I/O
L05 Wed, Feb 01 OS & Processes [ pdf ]
POSIX Continued, Locality, Processes Intro, fork()
R03 Thu, Feb 02 Recitation03: POSIX I/O [ slides ]
read, write, open, close
Check-in02 (POSIX & Fork) due @ 10:00 am on Mon, Feb 06
L06 Mon, Feb 06 Processes Cont. & Intro to Threads [ pdf ]
Concurrency, sleep, wait, pthread_create, pthread_join
L07 Wed, Feb 08 Threads Cont. [ pdf ]
Concurrency, Threads vs Processes, pthreads, mutex start
R04 Thu, Feb 09 Recitation04: Intro to Threads [ slides ]
pthreads
HW1 (File Readers) due @ 11:59 pm on Thu, Feb 09
Check-in03 (Threads & Processes) due @ 10:00 am on Mon, Feb 13
L08 Mon, Feb 13 Threads: Shared Resources [ pdf ]
mutex continued & deadlock
L09 Wed, Feb 15 Condition Variables & Scheduling [ pdf ]
Condition Variabls & Scheduling
R05 Thu, Feb 16 Recitation05: Threads & Shared Resources [ slides ]
mutex, condition variables
Check-in04 (Threads vs Processes & Condition Variables) due @ 10:00 am on Mon, Feb 20
L10 Mon, Feb 20 Scheduling Wrap Up & Virtual Memory [ pdf ]
Scheduling Wrap Up & Virtual Memory Overview
L11 Wed, Feb 22 Virtual Memory: Details [ pdf ]
Pages, Page Frames, Page Tables, Address Translation
R06 Thu, Feb 23 Recitation06: Scheduling & VM [ slides ]
Scheduling Algos & Virtual Memory
L12 Mon, Feb 27 Midterm Review [ pdf ]
Midterm Practice Questions made by Travis
HW2 (Threads) due @ 11:59 pm on Mon, Feb 27
L13 Wed, Mar 01 Caching & C++ STL (begin) [ pdf ]
C++ vector, list, cache locality
E00 Wed, Mar 01 Midterm Exam Wed 12:00 pm - Fri 12:00 pm @ Gradescope  [exam info]
:( Mon, Mar 06 No Class
:( Wed, Mar 08 No Class
L14 Mon, Mar 13 C++ Copying & Move [ pdf ]
C++ Copy Constructor, Assignment Operator, Move
L15 Wed, Mar 15 Templates & C++ STL [ pdf ]
C++ Templates, algorithms, map, set
R07 Thu, Mar 16 Recitation07: C++ Templates & STL [ slides ]
Copy Constructor, Templates, STL
Check-in05 (vector) due @ 10:00 am on Fri, Mar 17
L16 Mon, Mar 20 C++ Smart Pointers [ pdf ]
unique_ptr, shared_ptr, weak_ptr
Survey1 (mid-semester Survey) due @ 11:59 pm on Mon, Mar 20
Check-in06 (Processes) due @ 10:00 am on Wed, Mar 22
L17 Wed, Mar 22 Processes Review & pipe [ pdf ]
Fork, Wait, Pipes, exec
R08 Thu, Mar 23 Recitation08: HW3 Overivew, Smart Pointers, Processes Review [ slides ]
Pages & Virtual Memory, shared_ptr, fork, pipe, exec
Check-in07 (pipe) due @ 10:00 am on Mon, Mar 27
L18 Mon, Mar 27 Networking Intro [ pdf ]
High Level Overview of the 7-layer OSI model.
L19 Wed, Mar 29 TCP Sockets [ pdf ]
Posix Sockets API
Survey2 (Final Exam Scheduling. [not worth any credit]) due @ 11:59 pm on Wed, Mar 29
R09 Thu, Mar 30 Recitation09: Networks [ slides ]
OSI Overview, server-side network programming
L20 Mon, Apr 03 HTTP & Review on Fork/Exec/Pipe [ pdf ]
HTTP, fork, exec, pipe, autograder example
HW3 (simplevm) due @ 11:59 pm on Mon, Apr 03
L21 Wed, Apr 05 Unix & HW4 Overview [ pdf ]
Intro to the unix terminal and overview of HW4 w/ some review on pipe, fork & exec.
R10 Thu, Apr 06 Recitation10: Boost & HTTP [ slides ]
split, replace_all, trim, HTTP Parsing
Check-in08 (Unix & Sockets) due @ 10:00 am on Mon, Apr 10
L22 Mon, Apr 10 Piping, Processes, HW4 Cont [ pdf ]
More pipe(), fork(), exec() examples & start objects
L23 Wed, Apr 12 Special Topics: Objects & Polymorphism? [ pdf ]
Dynamic Dispatch, Virtual Tables
R11 Thu, Apr 13 Recitation11: HW4 Demo, Casting & Inheritance [ slides ]
reinterpret_cast, static_cast, dynamic_cast, const_cast, virtual tables, HW5 Demo
L24 Mon, Apr 17 Special Topics: modern C++ & std::optional [ pdf ]
std::optional, structured binding
L25 Wed, Apr 19 Special Topics: Intro to Distributed Systems [ pdf ]
Thinking about concurrent puzzles, Common Knowledge, etc.
R12 Thu, Apr 20 Recitation12: Office Hours
Additional Office Hours
HW4 (pipe shell) due @ 11:59 pm on Thu, Apr 20
L26 Mon, Apr 24 Course Wrap-Up & OH [ pdf ]
L27 Wed, Apr 26 Final Exam Review [ pdf ]
Project (Multi-threaded HTTP Server) due @ 11:59 pm on Wed, Apr 26
E01 Tue, May 02 Final Exam Tue 12:00 pm - Sat 12:00 pm @ Gradescope  [more info to be released]

Credits

Credit to Professor Adam Blank (they/them), who gave Travis McGaha this website template :D
More on Adam can be found on their website here.