Course Information/Syllabus

A fancy second generation Intel chip. Some Systems programmers!

Course Description

Some sample videos helpful to the course.

Registrar Description: Introduces the basic design of computing systems, computer operating systems, and assembly language using a RISC architecture. Describes caches and virtual memory. Covers the interface between assembly language and high-level languages, including call frames and pointers. Covers the use of system calls and systems programming to show the interaction with the operating system. Covers the basic structures of an operating system, including application interfaces, processes, threads, synchronization, interprocess communication, deadlock, memory management, file systems, and input/output control.

The course Piazza page is a forum where you may ask questions. This is a forum you may ask other instructors/students clarifying questions (read: Do not ask for answers) or for helpful tips. You can ask questions anonymously or using your name. Using this resource will often be much faster than e-mailing the instructor directly.

Prerequisites: CS 1500, CS 2510, or EECE 2560.

The required textbook for this course is: Computer Systems A Programmer's Perspective (3rd Edition)

Course Objectives

By the end of this course, you will:

Schedule/Road Map

The following is our tentative syllabus for the course. I will announce in class or through e-mail any major changes.
I have also posted some videos that can be viewed before or after class as refreshers. Note that they are not substitutes for the lecture and are optional.
Unit Week Topic Assignment Due Date In-Class Activity Readings Note/Video
-- --
Getting setup on CCIS Chapter 1
9/12 PS 1 Out
C Crash Course Chapter 2 and Ch. 3 - 3.6
Program Structure
and Execution
9/19 PS 1 Due/PS 2 out
Chapter 3.7 to end of Chapter 3
What every computer scientist should know about floating-point arithmetic
9/26 PS 2 Due/PS 3 out
10/4 PS 3 Due(midnight)/PS 4 out
Chapter 5
Chapter 6 and
What Every Programmer Should Know About Memory (Section 3 on caches at a minimum)
Running Programs
on a System
10/18 PS 4 Due/PS 5 out
Chapter 7
10/26 PS 5 Due/PS 6 out
Chapter 8
11/2 PS 6 Out
Chapter 9
Interaction and Communication
between Programs
11/11 PS 6 Due Saturday at Noon/(11/13)PS 7 out
Chapter 9
Chapter 10
11/20 PS 7 Due(at midnight)PS 8 out
Chapter 11
Chapter 12
-- --
12/1 PS 8 Due/PS 9 Out
Chapter 12
PS 9 Due 12/7

Coding Environment

I will be using the Clang Compiler, which is available on almost every operating system. A pre-built binary (the executable program) can be downloaded here. Clang is available on the CCIS servers. You may also use GCC if you like, though my examples will primarily be using clang tools.

Any basic text editor will do for writing code.

Some other useful tools in this course:

Programming Assignments (PS)

Class Assignments: Each assignment is due before lecture (3:24:59pm) unless otherwise specified.


Many classes we will have an activity. You will submit your activity at the end of class, and it will be graded for effort, completeness, and contribute to your attendance/Participation score.


Please find below the grading distribution that will be used for this course. You will find the grade you earn in this course on blackboard.

Tips and Guidelines

These are some general tips for becoming a successful programmer in this course.
General Tips:

Academic Integrity and Non-Discrimination Policies

Students and instructors are to follow the Northeastern policies on these important issues.

Northeastern Non-Discrimination Policy - This classroom is a safe space for the instructor and students to talk about ideas, share viewpoints, and learn.
Northeastern Academic Integrity Policy - You only cheat yourself if you are not honest. Most often cheating occurs when an individual falls behind or perhaps has other circumstances occurring in their life. Please consult the instructor before ever considering cheating.
Student Code of Conduct: Students and instructors will follow the following guide for how we conduct ourselves. This is to create a respectful environment where everyone can learn.

Lateness and Attendance Policy

I do not take attendance, and you are not required to attend lecture. However, keep in mind your participation grade depends on how you engage during the class and with your peers. Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers.

Make-Up Policy

Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events may have the need for a make-up. Please contact me in advance of such events, so that appropriate accommodations can be made.

Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.


Part of what makes Northeastern University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Northeastern is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the University experience. If you have a disability that requires accommodations, please contact the Student Accessibility Services office at or (617) 373-2675 to make an appointment with the Disability Resource Center representatives in 20 Dodge Hall to determine appropriate accommodations.