Computer Systems CS 5007

"No more magic" -- Your Instructor
Computer Systems Computer Systems
Computer Systems
Computer Systems
Computer Systems

Course Information

  • Course Number: CS 5007
  • Semester: Summer 2018
  • Hours: 5:00pm-8:00pm
    • Thursday Schedule: Lecture | In-Class Activity | Lab
  • Location: Behrakis Health Sciences Cntr 320
  • Piazza: Forum Board


  • Instructor: Mike Shah
  • E-mail: mikeshah( a t )Northeastern
  • Office: Nightingale 132A
  • Office Hours: Wednesday: 3-5:30pm or by Appointment arranged by e-mail.

Teaching Assistant

  • Name: Aayush Jain
  • E-mail: jain.aa (a t)
  • Office Hours: 132 Nightingale Hall
    • Wed: 5-8pm
    • Fri: 3-6pm
  • Name: Yang Wu
  • E-mail: wu.yang1 (a t)
  • Office Hours: 132 Nightingale Hall
    • Mon: 2-4pm
    • Tue: 2-5pm
    • Sun: 2-5pm

Course Description

In short, we are going to learn how to work in the terminal, program in C, program in Assembly, and understand how a computer works. This course is heavily project based, meaning we will be spending time building programs and using tools to understand how a computer works.

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; the use of system calls and systems programming to show the interaction with the operating system; and the basic structures of an operating system, including application interfaces, processes, threads, synchronization, interprocess communication, deadlock, memory management, file systems, and input/output control.

Course Objectives

By the end of this course, you will be ready to:

  • Be comfortable managing memory in the C language
  • Be comfortable using the terminal
  • Understand various tradeoffs made within a computer for performance
  • Position yourself to be successful for future systems courses or perhaps jobs as a systems programmer!


There will be no required textbook for this course. However, these resources are recommended.

C programming Free OS Book


  • You should have a working knowledge of some high-level programming language
  • You should have experience compiling, writing, and debugging programs in your favorite text editor.
  • You should be familiar with your operating system and comfortalbe performing many basic tasks.

Additional Course Prerequisites

  • You should have basic knowledge in github, using any text-based editor, and how to compile, run, and debug programs.
  • Academic Integrity and Non-Discrimination

    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.
      • If you are caught cheating I have to report the violation. My official policy is you receive a 0 in the course. Always remember, if you use any external sources, you must cite them.
    • 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.

    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.

    Lateness and Attendance Policy

    Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not attended are a zero.

    Assessment/Course Polices

    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.

    • In-Class Activity: (1% each, ~6-7 total)
    • In-Class Labs:     (2% each, ~6-7 total)
      • Labs are due before class of the following week.
    • Exam/Quiz:         (1 total for 20%)
    • Assignments:       (Remaining % / Assignments)

    • The grade system follows the University Grading System.
      • A  = 95 – 100
      • A- = 91 – 94
      • B+ = 87 – 90
      • B  = 83 – 86
      • B- = 80 – 82
      • C+ = 77 – 79
      • C  = 73 – 76
      • D+ = 67 – 69
      • D  = 63 – 66
      • F  =  0 – 62
    • In the event of a sick/snow day (i.e. we miss a lab or in-class activity) the weight of each assignment increases (There may also be shuffling of course material if we are interrupted).
    • The expectation is that the assignments are fair but difficult, so you should start early!
    • Late Submissions of Assignments receive 20% off per day submitted late (up to 3 days max, then 0% received)
    • Assignments that do not compile/open receive no credit Simply put, programs that do not compile do not do anything.
    • There are no "re-grades" or points awarded one week after your grade is posted. "re-grades" can result in a higher or lower score.
    • If you are currently waitlisted, you must submit your homework on time. That is the gamble! If you do not have blackboard access, you will submit by e-mail or other course mechanism.
    • There are no extra credit assignments. I reserve the right to add points to assignments that do go above and beyond however.
    • I reserve the right to modify the grading scale in your favor if you show exemplary proficiency in any of the catagories. I will never modify the scale to lower a students grade.
    • Everyone needs to come see me in office hours (or by appointment) at least one time during the semester to introduce yourself. The purpose is so that you:
      • Know where my office is.
      • Get used to coming to office hours.
      • Let me know how I can help you achieve your goals.
    • No Facebook, no cell phones. Not only does it distract you, it distracts others!

    Schedule/Road Map

    The following is our tentative syllabus for the course, some small changes should be expected throughout the semester. I will announce in class or through e-mail any major changes.

    • To get all of the assignments/labs for the course, you must first click the following link: CS 5007 Monorepo Do not do a 'git pull' until class starts (Occasionally I make changes/spelling corrections)
    Slides/Readings/Code/etc Assignments Note(s)
    1 Thursday, July 5, 2018 Lecture 1 - An Overview of Computer Systems, Introduction and Linux Crash Course
    Assignment 1 Shell Due July 14 at 5pm
    -- --
    2 Thursday, July 12, 2018 Lecture 2 - The C Programming Language
    Assignment 2 due July 22 @ 11:59PM
    -- --
    3 Thursday, July 19, 2018 Lecture 3 - Assembly and Machine Representation, CPU Architecture, and Operating Systems
    Assignment 3 due August 1 @ 11:59pm
    Mike Away for conference. Recorded Lecture played in class+In Class Lab
    4 Thursday, July 26, 2018 Lecture 4 - Compilers, Linkers, and Code Generation
    -- --
    -- --
    5 Thursday, Aug. 2, 2018 Lecture 5 - Processes and The Memory Hierarchy
    Assignment 4 due August 10 @ 11:59pm
    -- --
    6 Thursday, Aug. 9, 2018 Lecture 6 - Concurrency
    Assignment 5 due August 16 @ 11:59pm
    -- --
    7 Thursday, Aug. 16, 2018 Lecture 7 - Trace, Final Exam, (Optional)Networking with Sockets Lab, Feedback, class picture
    Study Guide
    -- --