CS 361: Computer Systems

Introduction

CS 361 is a course which covers how system software is created.

News

  • The first lab will be on Monday the 28th
  • We'll use clickers starting the 3rd week of class. Don't forget to bring yours!
  • First homework posted (see below)
  • Readings for the week will be posted by Sunday noon
  • Lecture slides posted to blackboard, as will be lecture recording
  • Please no email! Use Piazza to write to us.
  • Course web sites
    • Piazza for discussion of assignments and other course material
    • Blackboard for turn in and autograde
    • Gradescope for automatic grading
    • Github

Readings

  • 1/15: 7.1-5 (lecture notes: 1-linking 1-15)
  • 1/17: 7.6-9 (lecture notes: 1-linking 16-36)
  • 1/22: 7.10-15 (lecture notes: 1-linking 37-48); 8.1-3 (lecture notes: 2-ecf-procs)
  • 1/24: 7.11-12 (Shared libraries)
  • 1/29 8.4
  • 1/31 8.5-

Teaching Assistants

All TA office hours in SEO 120.
Teaching Assistant Office hours
Shaika Chowdhury Thur 12:00-2:00, Fri. 12:00-2:00
George Dill Mon 3:00-5:00, Thur. 9:00-3:00
Vinay Manchundiya Tues 11:00-1:00, Wed. 11:00-1:00

Syllabus

  • Linking
  • Exceptions and processes
  • Signals
  • I/O
  • Virtual Memory
  • Memory allocation: explict and garbage collection
  • Concurrent programming

Programming assignments

Workload and needed background

This course covers the second half of Bryant and O'Halloran.

Course work

The course work consists of:

  • 7 Programs (45%)
  • Lab participation (5%)
  • Class participation (10%)
  • 1 test (15%)
  • 1 final (25%)

Tests will cover conceptual issues from system aspects and programming techniques covered.

Academic integrity

Students who are caught cheating will immediately fail the course, and have the cheating recorded in their record. For 1st year graduate students (because this is a 5 hour course), this usually results in expulsion from the program. Students who already have been caught cheating will go through disciplinary hearings, with the goal of having them expelled from the university.

Students who fail to demonstrate on tests an understanding of the programs they have handed in will fail the course.

You are not to show your program to anyone nor to look at anyone else's program. You may discuss programming concepts but only in general term.

Covered topics

This course covers network programming and systems programming from the operating system viewpoint. Special emphasis is given on standards based APIs, with explanation of typical interfaces.

Required Text

  • Computer Systems: A Programmer's Perspective, Randal E. Bryant and David R. O'Hallaron, Third Edition.

Recommended Text

  • The C Programming Language, Brian W. Kernigan and Denis M. Ritchie, Prentice Hall.