Computer Science 105
Computer Systems
Syllabus -- Fall 11

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

Lecture Times:

Lab Times:

Lab TAs/Graders:

Special Mail List:

Dept Admin:

Course Description

This course provides a programmer's view of how computer systems execute programs, store information, and communicate. 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.

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.

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 quizzes, and questions for 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 hopeflully increase your learning. The relative weighting scheme will be as follows:
Quizzes : 150 points
Labs : 500 points
Final: 100 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.

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 various Web pages will be updated as the semester progresses. 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. You can do the extra credit labs upto 100 points in place of the Final.
  • 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 extra credit labs 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 faculty. 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 new blogging system being designed for class use. We are evaluating Piazza this semester, and are interested in your comments.

    Web Page

    Obviously you should check the Web page periodically. Our plan is to keep it updated weekly, i.e., by the 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.

    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.

    List of Topics

    Mike Erlinger

    Last Modified Tuesday, 22-Nov-2011 11:05:23 PST