Course External Tools
OHQ – Office Hour Queue for most office hours. May not be used by every TA, unless said in the OH event location, your best bet is to ask the hosting TA.
Ed Discussion Board – The Ed Discussion board provides a place for students to get support from course staff. Ed is also the primary mechanism for announcements, though we will try to repeat announcements at the beginning of lecture for convenience.
Gradescope – For check-ins, exams and projects.
PollEverywhere – For in-class polls & activity. Helps Travis know how well students are following lecture and if more or less time can be spent on a topic.
Class Recordings – Lecture recordings, each recording should come out a few hours after the lecture.
Canvas – Contains grades, and class recordings.
Course Information
Syllabus – an overview of the course and course policies
Meeting Requests – For requesting meetings with the course instructor
Course Setup
Docker – The recommended environment for developing the course
Speclab: getting started – If docker doesn’t work, you should do your development here.
Penn VPN – Information for connecting to the UPenn VPN. This is necessary to access speclab from off campus.
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 (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)
C reference – a reference of features and useful utilites in C.
Other References
LearnCPP – This course covers some of the fundamentals of C++, but there is more to the language than I can talk about in this course. As a result, you may find this page especially useful if you want to learn C++ more.
Vim Basic Guide – Vim is the editor that is used by the instructor. You are not required to use it, but it is popular for a reson. This article provides a relatively short and straightfoward tutorial for getting started with vim.
GDB Tutorial – The GNU Debugger, HIGHLY recommended for this course. Another very useful command is tui enable
which allows you to more easily see the code while you debug.
Valgrind: quick start – Valgrind is a very useful tool for finding memory errors (not just leaks!) in your code. We also HIGHLY recommend valgrind.
ClangTidy Documentation – Documentation for the static analyzer used by this course. Static analyzers are very helpful for catching code that contains errors or is otherwise bug-prone. Go here to read more about it. It also links to a page that lists every check that clang-tidy does. We do not use them, but you can see descriptions for the ones we use there. Feel free to ask on Ed if you are unsure of why you are getting a specific clang-tidy error.
ClangFormat Documentation – The tool we use for making sure code is indented and generally formatted properly