Computer Systems -- CS 105


Syllabus Fall 2012

Professor: Mike Erlinger
Office: Library, 2nd floor cube
Phone: 18912
E-mail: mike@cs.hmc.edu

Lecture Times:

Lab Times:

  • Friday, 1:00-2:45, Beckman B105 & Beckman B102

Office Hours:

  • Wednesday, 4:15-5:30, 2nd floor of library

Lab TAs/Graders:

    Sean Campbell, David Ersek, Jordan Ezzell, Jess Hester, Mary Rachel Stimson, Jason Wang

Mail List:

    Class: cs105@cs.hmc.edu
    Help: cs105help

Dept Admin:

Course Description

This course provides a programmer's view of how computer systems execute programs, store information, and communicate, i.e., Systems. It enables students to become more effective programmers, especially in dealing with issues of performance, portability, and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, processes and concurrent computation, and networking technology and protocols.

Course Text

We ordered texts through Huntley Bookstore, but as usual the numbers may not be correct. There are obviously other places to purchase books, e.g., Amazon, bookpool.com, so do what is best for you. Also, there is a Kindle version of the book.

Computer Systems, A Programmer's Perspective, by Randal E. Bryant and David O'Hallaron Prentice Hall, Second Edition ISBN 978-0-13-610804-7

Other Related Texts

The C Programming Language, by Brian W. Kernighan and Dennis M. Ritchie Prentice Hall, ISBN 0-13-110370-9.
The Joy of C - by Lawrence H. Miller and Alexander E. Quilici Wiley, ISBN: 0-471-1233-X.
The Little Book of Semaphores - by Allen B. Downey, http://www.greenteapress.com/semaphores/

What Is This Course About?

There are many ways to approach the subject of computer systems. This course investigates computer systems from the viewpoint of the programmer at the interface between the hardware and software. Basically we bounce around the interface of the underlying hardware and low level software.

The lectures WILL ASSUME that you have read related material from the text and thus that you come to class with questions and some knowledge. Lectures will include discussion of problems from the book, unannounced closed book, closed notes quizzes, and questions directed to students.

Requirements and Grades

We have make great efforts to encourage you to submit material on time. Make sure to read the late policy. We have made some changes for this semester, which will hopefully increase your learning. The relative weighting scheme will be as follows:
Quizzes : 150-200 points
Labs : 500-600 points
Final: 150 points

Quizzes

Quizzes are designed to encourage you to keep up with the material. In particular, reading the chapters and paying attention to lecture. There will be about one quiz each week. They will always be unannounced; they will be closed book and closed notes; Material for the quizzes will come from the lectures or the book (in particular, practice problems), so keep up with the readings. Also, as an alternative to previous quizzes, there will be a few Abstracts , and a few 'long' quizzes.

Laboratory

The laboratory aspect of this course is fun and challenging. Lab time will be used to get you started on the various experiments. We DO NOT intend that you complete the labs during the lab time, but rather that you get started and that you understand the details of each lab. The labs are done in a pair programming paradigm. One member of each team MUST be experienced in C or C++, in particular pointers. Also, adequate performance on ALL the labs is REQUIRED to get a passing grade in the course.

Tests

There will be only one test. It should be noted that the test comes both from the class lecture material and from the book. Historically, the quizzes and tests have been the differentiator in assigning grades because the labs are usually finished by all teams.

Extra Credit

  • There are extra credit labs, ECLs. The total points available in ECLs is equivalent to the number of points in the Final. Thus, you can do all the ECLs instead of the Final, but you cannot mix and match Final and ECLs (i.e., you have to make a choice).
  • You are free to choose a new partner for the extra credit labs.
  • There will be a demo period at the end of the semester in which you need to demo your ECLs to me or to a grutor.

    Inexperience in C and/or Unix

    C++ and Unix are covered or used in various introductory courses at HMC. Those who have no experience face a steep startup in CS 105. There are a few pointers to assist such students.

    Collaboration Policy

    Collaboration is encouraged. This means that you may discuss approaches to solving problems with anyone in the class, including faculty and grutors. However, COPYING solutions from any source (web page or person or book) is DISALLOWED. All students are expected to conduct themselves in accordance with the Harvey Mudd Honor Code. If you have any questions about what is appropriate or inappropriate collaboration, please talk to me. The NO "copying of code" applies to everything (especially) including the Labs.

    Getting Help

    If you need help with assignments outside of class or lab, then use Piazza . This is a blogging system being designed for class use. We used Piazza previously and it was a nice way to maintain discussion threads.

    Web Page

    Obviously you should check the Web page periodically. My plan is to keep it updated weekly, i.e., by each Sunday night details for the upcoming week will be complete and subsequent weeks partially complete. Things way out may move, but they do show you the course direction. The current version of the Calendar reflects what I hope to accomplish this semester.

    Returned Classwork

    Classwork, e.g., quizzes, is returned to you so that you may learn from it. It is a violation of the HMC honor code to file such work in dorm repositories.

    Course Grades

    Course Grading

    List of Topics

    • Course Overview - Tour of Computer Systems; Chapter 1
    • Representing & Manipulating Info; Chapter 2
    • Machine-Level Representation of Programs; Chapter 3
    • Optimizing Pgm Performance; Chapter 5
    • Memory Hierarchy, Caching; Chapter 6
    • Virtual Memory; Chapter 9
    • Exceptions (briefly); Chapter 8
    • Processes; Chapter 8
    • Concurrent Programming; Chapter 12
    • System Level I/O; Chapter 10
    • Network Programming; Chapter 11
    • 64 Bit Architecture; Chapter 3
    • Linking (maybe); Chapter 7

    Mike Erlinger

    Last Modified Monday, 17-Dec-2012 11:45:19 PST