CIS 2400 (Fall 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 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.

General 1-on-1 Request Form – For requesting 1-on-1’s with TA’s

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 surveys (canvas can keep the surveys anonymous).

Course Information

Syllabus – an overview of the course and course policies

Meeting Requests – For requesting meetings with the course instructor

Environment Setup

Docker Setup – 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. Though, this book also contains some things we will not cover.

C reference – a reference of features and useful utilites in C. This page is pretty good and more approachable to people new to C and/or C++. Ignore the C++ specific stuff for now though. If you continue using C/C++ you should probably use the below reference as you get more comfortable with the language.

C reference (Verbose) – a reference of features and useful utilites in C. This page is the go-to webpage for C and/or C++ documentation

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

RISC-V References

RISC-V Instruction Sheet – Contains an organized table of all RISC-V instructions used in this class and their behaviour

RISC-V Instruction Encoding Sheet – Contains an organized table of all RISC-V instructions used in this class and their behaviour along with how they are encoded into 32 bits

RISC-V Single Cycle Processor – Shows an high level view of a single-cycle RISC-V processor

Control Signals Description – Lists every control signal we use for our RISC-V Processor, their possible values, and what those different values mean for each control signal.

penn-sim for x86 (windows, linux or older mac)

penn-sim for ARM (newer mac’s)

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