CSCI 2400:  Computer Systems

Fall 2019

Department of Computer Science, University of Colorado at Boulder


Course Summary

This course introduces students to Computer Systems. The course will cover key aspects of how a software program executes on a modern computer, namely modern CPU hardware. In particular, the following major concepts will typically be studied:
In addition, the class will gain familiarity with important software tools such as debuggers, compilers, editors, and virtual machines.

General Information

See the Moodle class Web page at

Schedule & Location: 3 sections, either MWF or TTH.  See also the registrar's Web site
Course number: CSCI 2400
Prerequisites: CSCI 2270

Professors Rick Han, Shivakant Mishra and Henry Tufo
Offices, Office Hours and Contact Info:


Other useful references:

TAs: Sandesh Dhawaskar, Saurabh Mishra, Steven Kordonowy, Insoo Lee, Sepideh Goodarzy, Kamal Chaturvedi, Hoang Truong, Prashanth Thipparthi, Jinpeng Miao, Pramod Kulkarni
TA Office/Hours:  Weekly recitation sections, and more as needed.  See moodle for more details.
TA Email: typically {First.Lastname
} will work, but see moodle for more details.

class Web site:
See the Moodle class Web page at http://moodle.cs.colorado.eduAssignments, lecture slides, and announcements can be found there.  The moodle has a variety of useful features, including a forum for posting questions.  Each student should establish an account on the moodle and then subscribe to our class on the moodle using the special enrollment key given out in class.

Jupityr Notebook:
The TAs will provide instructions for installing the class programming environment for doing the labs.  The moodle will also provide more information.

Course Assistants:
Allen Fu, Rhett Hanscom, Zack Jorquera, Story Kiser, Justin Reiss, and Weiyao Tang will be our CAs offering assistance with 2400.  See moodle for more information.


The lab assignments constitute 45% of your grade.
Two to three midterms exams and the final exam are together worth 45% of your grade.
The quizzes are worth 5%.
The recitation questions make up the remaining 5%.

Grading for Lab Assignments:

Your primary assignments will be your "Lab Assignments," given every 2-3 weeks, each of which will be followed by a grading meeting to review your solution with the TA.  The TAs will release an interview scheduler on the moodle before the assignment due, and you must sign up for a grading time slot (typically 12-15 minutes) before the assignment deadline.  The grading meetings will then begin after the due-date of each Lab, typically the following week.

The grades for each lab will be based 40% upon the Task Success (i.e. "does it work") and 60% upon your explanation of your code/assignment and answering questions about the lab and its concepts. Historically speaking, students that have completed the assignment themselves usually have little problem passing the Q&A portion of the grade.

Students may work in teams of up to two for the labs only, but each student will still be responsible for scheduling their own grading meeting with the TA for each lab.  You may help others only to the extent of answering typical questions that arise during compiling, debugging, and executing your lab assignments. 

All assignments are due by the deadline stated.  Extensions will not be granted except at the instructor's discretion in documented cases of extreme hardship, emergency, etc., unless otherwise noted.

Unless otherwise noted in the labs, the default programming language for all labs is C and the default execution environment is the Jupityr Notebook.

More information on the grading policy may be posted as needed on the moodle as the semester progresses.

Default Grading Policy:

All work should be your own on all assignments unless otherwise indicated.

Plagiarism policy.

Additional Policies:

Disability Policy

Religious Observances Policy

Discrimination and Sexual Harassment Policy

Classroom Behavior Policy