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.
- Travis and the TAs hold many office hours
- The Ed discussion board, where anonymous and private posts are allowed
- Travis and the TAs can be contacted directly via email
- Meetings with Travis can be scheduled here: https://www.cis.upenn.edu/~tqmcgaha/#meetings
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
Course Staff
Instructor
Teaching Assistants
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.