CIS 3800 (Spring 2024) Home Schedule Assignments Tools & Refs Tools & References

This page lists out a bunch of useful links for navigating the course tools and information on things related to the course.

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, 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

Docker & Git Setup – The recommended environment for developing the course, and how to download your repo (only after the Github account setup has been done)

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 (though we will not cover everything in it).

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

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)

Pre-recorded Videos

Pre-recorded Lectures & Others – This links to a page on canvas that contains a collection of videos that you may find useful, especially if you potentiall want some alternative explanations to the ones provided in-class.

C refresher – A refresher on C going over a simple program, compilation, running, and debugging the program. NOTE: thislinks to part 1., hit the next arrow in the lower right corner to move on to parts 2, 3 and 4.

Git Demo – Excellent demo that showcases how to clone a git repository and check-in code to it.

GDB Debugging Tool – Excellent video that demonstrates the most important GDB commands for starters.

Project 0 Demo – TA Demo going over project 0 and demonstrating it.

Project 1 Demo – TA Demo going over prohect 1 and demonstrating it. Note that there are two parts after it, hit the next button in the lower right corner to see the next two.

Google Sanitizers – Google sanitizers is an optional tool that some find useful for identifying various memory errors in C.

Linux, Makefile and Valgrind Demo – 1 hour video recording during an optional session going over Linux, Makefiles, and Valgrind. This video is not as polished or scripted as the other tool demos

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.

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