|
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:
-
Monday/Wednesday 11:00-12:15 and 2:45-4:00,
GA Edwards
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:
-
HMC: Joyce Greene, Olin 1258, 621-8225, joyce@cs.hmc.edu
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