Computer Science 105
Computer Systems
Syllabus -- Fall 09
Professor: Mike Erlinger
Office: Olin 1258b
Phone: 18912
E-mail: mike@cs.hmc.edu
Lecture Times: Tuesday/Thursday 1:15;
Edwards
Lab Times: Wednesday, 4:15-5:30;
Beckman 105
Lab TAs/Graders: Will Scott, Denis Aleshin
Secretary: Joyce Greene, Olin 1258, 621-8225
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.
We have created a relationship with Amazon.com
where we put a link from the Web page to Amazon.com.
Please note: Clicking on one of the Amazon links will take you directly to
Amazon.com's Web site to order that book or any other book.
Any book purchased via one of these
links will generate a commission for the Computer Science department,
which will be placed in the CS student activities fund.
The money will directly benefit
students NOT
the faculty or the department.
Using the link to order any book will
also generate the commission.
There are obviously other places to purchase books,
e.g., bookpool.com,
so do what is best for you.
|
Computer Systems, A Programmer's Perspective
by
Randal E. Bryant and David O'Hallaron
Prentice Hall,
ISBN 0-13-034074-X
|
|
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.
The
lectures WILL ASSUME that you have read related material
from the text
and that you thus come to class with
questions and some knowledge.
Requirements and Grades
We have make great efforts
to encourage you to submit material on time.
Make sure to read the
late policy.
The relative weighting scheme will be as follows:
| Participation: |
5% |
| Homeworks : |
10% |
| Labs : |
40% |
| Midterm: |
20% |
| Final: |
25% |
Participation
The
Participation aspect of this course
is designed to ensure that you have a full grasp of the concepts
presented in the text.
We will go over problems in class and lab. Student groups,
picked randomly, will present solutions.
Our goal is to get you
to understand and to absorb the major concepts and technologies
presented in the course.
Homeworks
There will be some written homeworks.
These are designed to get you to analyze your understanding
of the material.
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 you to complete the labs during the lab time,
but will establish some ground rules on the time you should spend
on each lab.
The various Web pages will be updated as the semester progresses.
The labs are done in a loose pair programming paradign.
Also, adequate performance on ALL the labs
is REQUIRED to get a passing grade in the course.
Tests
There will be two tests. It should be noted that the tests come from the
class lecture material. Historically, the tests have been the
differentiator
in assigning grades because the labs are usually finished
by all teams.
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 points to assist such
students.
-
Students who do not have the HMC experience, will NOT be
placed on the same team.
-
The CS 105 tutors are willing to help with Unix and C
questions.
-
Usually, the steep startup is only through the first two
labs (debugger lab seems to even the playing field).
-
CS 70 has an early lab (usually first week) which Unix is
the major topic. As long as the CS 70 professor is notified,
they are glad to have some other students.
-
There are numerous books on C and Unix.
A good Unix books is:
A good C book is:
Collaboration Policy
Collaboration is encouraged. This means that you may
discuss approaches to solving problems with anyone in the class,
including myself and the graders.
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 copying of code applies to everything (especially)
including the Labs.
Getting Help
If you need help with assignments, send mail to cs105help at cs.hmc.edu.
This alias is preferable to
mailing the professor directly, since it also goes to the TAs.
Web Page
Obviously you should check the Web page periodically. Our plan is to
keep it updated weekly, i.e., by Friday night the next week should
be complete and subsequent weeks partially complete.
Things way out may move, but they do show you the course direction.
NOTE:
List of Topics
-
Course Overview -
Tour of Computer Systems;
Chapter 1
-
Representing & Manipulating Info;
Chapter 2
-
Machine-Level Representation of Programs;
Chapter 3
-
Memory Hierarchy;
Chapter 6
-
Virtual Memory;
Chapter 10
-
Optimizing Pgm Performance;
Chapter 5
-
Measuring Pgm Execution Time;
Chapter 9
-
Linking (briefly);
Chapter 7
-
Exceptions (briefly);
Chapter 8
-
Processes;
Chapter 8
-
Concurrent Programming;
Chapter 13
-
System Level I/O;
Chapter 11
-
Network Programming;
Chapter 12
Mike Erlinger
Last Modified Thursday, 30-Jun-2011 12:44:43 PDT