CAS CS210 Computer Systems

Fall 2010

This page http://www.cs.bu.edu/fac/jappavoo/Home/Computer_Systems.html will be continually updated. Please check (reload) this page regularly (at least twice a week).

Important Dates: Last Day to DROP Classes without a 'W' grade is Thursday, October 7, 2010. Last Day to DROP Classes with a 'W' grade is Thursday, November 5, 2010.

Announcements : Check back here often!

Instructor

Time & Place

Course Description

Prerequisites

Class Schedule

Office Hours

Teaching Fellow

Tutoring Help

Textbooks

Online Resources

Academic Honesty

Prof. Jonathan Appavoo

111 Cummington Street
MCS 284 (Math & Computer Science Building)
Phone: (617) 358-1062
Email: jappavoo (at) cs.bu.edu


To reach me at times other than my office hours, please send me email.

Tuesdays and Thursdays 2:00 - 3:30

General Classroom Building (GCB) 207

This course assumes that students have a solid background in Java or C++ programming from  CAS CS 111 or equivalent. CS 112 is also recommended, but not essential for students with strong programming skills. A solid working knowledge of operating systems, such as Unix/Linux and Windows, is also assumed. CS 113 or MA 293 is helpful for the material on Boolean logic and data representation, but is not essential.

We will make use of C as an example of high-level language because its syntax and semantics are closer to assembly language concepts. C is more suitable for exposing low-level system details and achieving higher performance in real implementations. If you know C++, you should not be distracted by this since C is mostly a subset of C++. C and C++ both share many of the same fundamental programming constructs. C, however, lacks support for object-oriented programming. On the other hand, if you know Java, there are aspects of C, particularly pointers, explicit dynamic memory allocation, and formatted I/O, that do not exist in Java. Fortunately, the classic K&R required text is an excellent reference to the relatively small C language.

Monday 10:00-11:30 AM and Thursday 4:00-5:30 PM
or by appointment. MCS 271.

The purpose of the office hours of the Instructor and Teaching Fellow is to answer specific questions or clarify specific issues. Office hours are not to be used to fill you in on a class you skipped or to explain entire topics. Please come to class and to your discussion sessions.

Name:  Dan Schatzberg

Email:   dschatz (at) bu.edu

Office Hours: Monday 2-3pm, Thursdays 11-12pm and Fridays 9:30 - 10:30am

The Teaching Fellow will hold his office hours in the undergraduate lab EMA 302 http://www.cs.bu.edu/labs/

The Teaching Fellow will lead the discussion sessions. The objective is to reinforce the concepts covered in the lectures, and answer questions (or provide clarifications) regarding the homework and programming/lab assignments. 

The Teaching Fellow will also maintain a web page : http://cs-people.bu.edu/dschatz/

Sections: 

Monday 10-11am, 1:00-2:00pm, and 5:00-6:00pm,  
EMA 304 (third floor of 730 Commonwealth Avenue).
Students attend one of the above sessions each week. 

Grading (except for the final exam) is done by a number of class graders, under the direct supervision of the Teaching Fellow and the Instructor. If you have an issue with a grade (homework or exam), please contact the Teaching Fellow. Only if the issue is not resolved to your satisfaction, please contact the Instructor.  Grades must be appealed within two weeks of receipt.

You can get extra help during the TF tutoring hours scheduled in the CS lab.

Note that terminal assistants in the CS lab are not supposed to help with course material, but to maintain the lab environment.

Online References

[Required CMU Text] Randal E. Bryant and David R. O Hallaron, Computer Systems: A Programmer's Perspective, 2ed. Prentice Hall, 2003, ISBN-13: 978-0-13-610804-7

[Required K&R Text] Brain W. Kernighan and Dennis M. Ritchie, The C Programming Language (ANSI C), Second Edition, Pearson, 1988, ISBN-13: 978-0131103627. (A classic text that provides an excellent description of the C language.)

All books are available from the BU bookstore. A copy of each of the books will also be placed on reserve in the Science & Engineering Library. You can access this copy from the circulation desk for 2-hour in-library loans.

[optional] Brian W. Kernighan, Rob Pike, “The UNIX Programming Environment”, Prentice Hall, 1984.  (Another Classic Text).

C/Unix

  1. 1.Unix FAQ (courtesy Randal E. Bryant and David R. O'Hallaron of CMU)

  2. 2.Norm Matloff's Unix/C Tutorial Center

GNU/Unix Tools

The GNU project provides online manuals for all of the GNU tools, including:

  1. 3.pico (a simple text editor).

  2. 4.Emacs (text editor) (reference card for version 21)

  3. 5.GCC (compiler driver)

  4. 6.GDB (debugger)

  5. 7.Make (program building utility)

  6. 8.Norm Matloff's GDB tutorial

  7. 9.Quick GDB reference ( pdf, txt )

Other

Some disasters due to bad numerical computations

Useful documentation on the Intel IA-32 architecture, Volumes 1 , 2 and 3 .

Course Web Page: all course material will be accessible through this course web page http://www.cs.bu.edu/~jappavoo/Home/Computer_Systems.html. You should regularly look at this page for up-to-date information regarding readings, homework assignments, etc.

Course Mailing List:  there will also be a course mailing lists, cascs210a1-l@bu.edu Registered students are automatically subscribed to this list. The Instructor or the Teaching Fellow will use it for late-breaking updates and additional information regarding the assignments. So please make sure to join this list. You can also use this list for asking questions and seeking clarifications, whether from the Instructor, Teaching Fellow, or classmates. However, since this is a broadcast medium, i.e.,  a message to this address is sent to everyone on the list, please use it wisely!

Assignments: a separate assignments web page will contain information on project and homework assignments.  

Grading Policy

There will be two midterm exams and one final exam, which will include all material covered from the beginning of the semester until the day of the exam. All exams will be closed books and closed notes. There will be absolutely no make-up exams, except for medical emergencies. In that case, blue slips from Health Services will not be accepted; you must justify your medical problem with a letter from a doctor, specifying the period of time during which you were unable to attend one of the exams.

Short quizzes may be given throughout the semester to make sure you are doing the readings on time, and also as a measure of attendance. There will also be assignments and labs, which will be a combination of "pencil and paper" problems and programming assignments. There will be about 3-4 problem sets, and 3-4 programming/lab assignments in C or Intel assembly language. Problem sets may also involve smaller scale programming/lab exercises, e.g., write or debug small programs, etc.

Grades are criterion based, not curved. You can all get A's, or all get C's. Your fellow students are not enemies, so talk to each other (see Academic Honesty below). As a useful guideline, the meanings of grades are as follows:

"A" grade means the student mastered the material

"B" grade means the student understood the material but did not master it

"C" grade means that there were significant gaps in understanding

"D" grade means that there was limited understanding or effort

"F" grade means that there was little understanding or effort

Your final grade will be determined approximately as follows:

30% by the average of the midterm exams (exam 1 on TBA, exam 2 on TBA)

25% by the final exam (FINAL EXAM on TBA)

40% by the assignments

5% by the quizzes/attendance

The midterm exam average will be tentatively weighted 60% of the best grade and 40% of the lower grade.

Unless automated and otherwise specified, the grading of programming assignments will be based on the following policy:

Program: works correctly (50%); in-line documentation (10%); design quality (10%)

Design document: how it works (5%); tradeoffs and extensions (5%)

Testing document: compilation instructions (5%); thoroughness of test cases (5%)

Submission: hard copy of design & testing documents (5%); e-submission (5%) 

We will use the CS machines -- 32-bit Intel-compatible Linux machines: csa2, csa3 -- to grade your programming/lab assignments. Although you may use your own machine, it is your responsibility to ultimately port your assignment to our CS machines to make sure they are graded correctly.  

Each assignment will have a due date. If late submissions are allowed for an assignment, there will be 10% penalty per day for late submissions. But, no late assignments will be accepted after one week from due date, and the last day to submit any late assignments is December 9, 2009. Extensions may be granted only for religious holidays and certified medical reasons.

No incompletes will be given, except for reasons of dire illness shortly before the end of the course, and only if a significant amount of work has been completed (e.g., attending lectures, handing in most assignments, and attending the midterms).

Attendance is important: I will take attendance at any time. I will depart from the textbook and its flow on occasions, and I will not provide backup lecture notes on certain additional details I will cover in class, so it is imperative that you attend all lectures and take careful notes.

Assignments must be completed individually. Discussion of issues in computer systems is encouraged, but representing the work of another person as your own is expressly forbidden. This includes "borrowing", "stealing", copying programs/solutions or parts of them from others. We may use an automated plagiarism checker. Cheating will not be tolerated under any circumstances. Handing in your own work a day or two late will affect your grade far less than turning in a copy of someone else's work on time!

See the CAS Academic Conduct Code, in particular regarding plagiarism and cheating on exams. Copies of the CAS Academic Conduct Code are also available in room CAS 105.  A student suspected to violate this code will be reported to the Academic Conduct Committee, and if found culpable, the student will receive a grade of "F" for the course. 

The use of this page and pages linked to it for lecture notes, homeworks etc. is permitted for the class CS 210 at Boston University and for non-profit educational purposes only. Any other use requires permission of the author (Jonathan Appavoo, jappavoo AT bu DOT edu).

This page was based directly on the 2009 version of the CS 210 page and links authored by Abraham Matta.  That bore the following copyright: © 2004-2009 Abraham Matta. All Rights Reserved.

This course takes a programmer's perspective to learn about the inner structure of computer systems, the design and implementation of abstractions that enable humans to use computers efficiently, the basics of C and assembly programming, the mapping between C and assembly, and between assembly and machine language, and the role of operating system software.

Our goal is to learn what a "beautiful" computer system is and how it works. Quoting an Italian painter named Carlotti:

Beauty is the summation of the parts working together in such a way that nothing needed to be added, taken away or altered.

We will also learn how to become strong (``brilliant") programmers who write fast and reliable programs. Quoting Albert Einstein:

Computers are incredibly fast, accurate, and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination.

CS 210 is a principal course for computer science majors. It provides background for courses in the systems area such as operating systems, compilers, networks, not to mention more advanced courses in computer architecture.