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.
Canvas – Contains grades, class recordings, and recordings from previous offerings.
Github – For maintaining your code and collaborating on team projects.
Course Information
Syllabus – an overview of the course and course policies
Meeting Requests – For requesting meetings with the course instructor
Environment Setup
Github account setup – For setting up your git account and getting it registered with the course
Environment Git Setup – The recommended environment for developing the course, and how to download your repo (only after the Github account setup has been done)
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 (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 (linux.die.net) – Contains useful information on user terminal commands (section 1), C system calls (section 2) and C standard library functions (section 3)
Linux Man Pages (man7.org) – Contains useful information on user terminal commands (section 1), C system calls (section 2) and C standard library functions (section 3)
Other References
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.
Learn GDB in 60 seconds – 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. One last command that the video doesnt cover is bt or backtrace which will tell you which function you in and which set of function calls got you there. It is most commonly used by running your program with continue before it crashes/segmentation faults and then you type bt to see where you are in the program when it crashed.
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
Style Guide – These are the style guidelines we’ll expect your code to follow.