Computer Science 281
Introduction to Computer Systems

Denison
Computer Science 281
  Introduction to Computer Systems
Fall 2011

  
Professor: Thomas C. Bressoud Phone: 587-5630
Office: Olin 207 E-mail: bressoud@denison.edu
Office Hours: See Bressoud Fall Schedule Mailbox: Olin 201
Meeting Time: MWF, 9:30-10:20 a.m., Olin 220
R Lab, 9:30-11:00 a.m., Olin 220
Final Exam: B: Sat., Dec. 17, 9:00-11:00 a.m.

Description

The Introduction to Computer Systems course provides a programmer's perspective 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 operating systems, networks, compilers, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: basic digital logic design, machine-level code and its generation by optimizing compilers, performance evaluation and optimization, representation and computer arithmetic, memory organization and management, and supporting concurrent computation.

Objectives

One objective of CS-281 is to help you become a better programmer by teaching you the basic concepts underlying all computer systems. We want you to learn what really happens when your programs run, so that when things go wrong (as they always do) you will have the intellectual tools to solve the problem.

Why do you need to understand computer systems if you do all of your programming in high level languages? In most of computer science, we’re pushed to design abstractions and stay within their frameworks. But, any abstraction ignores effects that can become critical. As an analogy, Newtonian mechanics ignores relativistic effects. The Newtonian abstraction is completely appropriate for bodies moving at less than 0.1c, but higher speeds require working at a greater level of detail.

Oversimplifying matters somewhat, our CS-110/111, 173, 271 sequence is based on a simplified model of program execution (Python, and then C++ high level languages), with subsequent courses building further layers of abstraction through abstract data types and data structures and introducing algorithm analysis.  CS-281 introduces greater detail about system behavior and operation. This greater detail is needed for optimizing program performance, for working within the finite memory and word size constraints of computers, and for systems-level programming.

The following “realities” are some of the major areas where the abstractions we teach in 173 and 271 break down:

  1. Int’s are not integers, Float’s are not reals. Our finite representations of numbers have significant limitations, and because of these limitations we sometimes have to think in terms of bit-level representations.
  2. You’ve got to know assembly language. Even if you never write programs in assembly, the behavior of a program cannot be understood sometimes purely based on the abstraction of a high-level language. Further, understanding the effects of bugs requires familiarity with the machine-level model.
  3. Memory matters. Computer memory is not unbounded. It must be allocated and managed. Memory referencing errors are especially pernicious. An erroneous updating of one object can cause a change in some logically unrelated object. Also, the combination of caching and virtual memory provides the functionality of a uniform unbounded address space, but not the performance.
  4. There is more to performance than asymptotic complexity. Constant factors also matter. There are systematic ways to evaluate and improve program performance.
  5. Computers do more than execute instructions. They also need to manage multiple threads of activity in a system and to get data in and out and they interact with other systems over networks.
By the end of the course, you will understand these “realities” in some detail. As a result, you will be prepared to take any of the upper-level systems classes at Denison. Even more important, you will have learned skills and knowledge that will help you throughout your career, be it one in industry or one in which graduate studies are a goal.

Textbooks

In addition, resources will be provided for programming in Intel assembly language.

Grade Determination

Midterm Tests (2):    25%
Lab Projects: 10%
Homework/Projects    35%
Quizzes and Participation    10%
Final Exam: 20%

Course Web Page

A web page will be maintained for this course.  The web page will include the schedule for the course, all reading assignments, programming assignments, example programs, and other useful information, including announcements to the class.  I expect you to check the web page regularly.

http://www.denison.edu/~bressoud/cs281-f11/

Policies and Student Responsibilities

Participation and Attendance
In general, we would like everyone to do their part to make this an enjoyable interactive experience. Hence in addition to attending class, we would like you to actively participate by asking questions, joining in our discussions, etc.

Your attendance is expected at each class meeting. Up to 3 excused absences will be tolerated without affecting your grade. Such absences should be communicated to me in advance.

Readings and In-class Material

You are responsible for the content of reading assignments, lectures and handouts, as well as announcements and schedule changes made in class, whether or not you are present. If you must miss a class, you are responsible to get what you missed. We cover considerable ground during class, and often the material is not available in the textbook. ... and it _will_ appear in exams.

It is very important that you keep up with the assigned reading. Read your book on a daily basis. Be especially sure to read the material in the appropriate chapter before coming to class so you will be ready to ask questions. All reading assignments are listed on the class web page. The material in the course is, by necessity, cumulative. Be warned that if you fall behind, you will not be able to catch up easily.

Exam Policy

Exams will be given in class on the day scheduled and may not be made up. On rare occasions, and with a Univeristy sanctioned excuse, I may allow an exam to be taken in advance. See me as early as possible to discuss this.

Homework Policy

There will be a number of homework/programming assignments given during the semester which will be due on the date specified. These are always due at 11:59pm. I will grade late assignments, but with the following mandatory penalty.

Lateness Penalty
for first 5 days
10% per day
thereafter
50%

With these penalties in mind, if an individual situation comes up, you can make an informed decision about turning an assignment in late. I do not grant individual extensions. If an extension is warranted for some systematic reason, it will be granted to the entire class. You are also allowed to use 3 grace/slip days, at most one per programming assignment. The use of a grace day does not incur the 10% penalty.

Any late assignments must be turned in by the last class day of the semester (May 2). Given the late penalty, you should work hard to make sure that assignments are submitted on time. Since it will most likely not be obvious how long an assignment might take, you are well advised to start early. Like other classes at Denison, it is expected that you devote at least 3 hours to these assignments for each hour of class time. Homework assignments must be typed.

You may discuss homework problems with other students in the class, but written (and typed) work must be your own. In other words, you may talk about homework problems with your peers, but when it comes time to write your solutions, you are on your own. You may have general conversations about problem strategies, but you must leave these conversations without having written anything down. Keep in mind that it is quite easy for me to tell when two students have been working too closely. In such cases, I am obliged to report the instance to the Associate Provost.

You may not get help from students outside the class. If you have questions, come see me and I will be happy to help.

You may discuss homework problems with other students in the class, but written (and typed) work must be your own. In other words, you may talk about homework problems with your peers, but when it comes time to write your solutions, you are on your own. You may have general conversations about problem strategies, but you must leave these conversations without having written anything down. Keep in mind that it is quite easy for me to tell when two students have been working too closely. In such cases, I am obliged to report the instance to the Associate Provost.

You may not get help from students outside the class. If you have questions, come see me and I will be happy to help.
Lab Policy

An important component of this class is the hands-on learning that comes from the weekly labs. I expect to use 10 to 12 labs over the semester. These are designed to be done during the two hour lab period and will include questions on the lab material. Labs are expected to be done and turned in the same day. Some students may have scheduling conflicts, and I will allow the lab reports to be turned in by no later than 8:30am on Friday, the morning following the lab. No extensions nor late grading will apply to lab assignments.

Topics

    1. Number Systems
    2. Intel Instruction Set Architecture and Assembly Language Programming
    3. Machine Language
    4. High Level Language Translation and Calling Conventions
    5. Performance
    6. Integer and Floating Point Representation
    7. Digital Logic
    8. ALU Design
    9. Multiplication and Division
    10. Datapath Design
    11. Pipelined Datapath
    12. Memory and Caches

Academic Integrity

Proposed and developed by Denison students, passed unanimously by DCGA and Denison’s faculty, the Code of Academic Integrity requires that instructors notify the Associate Provost of cases of academic dishonesty, and it requires that cases be heard by the Academic Integrity Board. Further, the code makes students responsible for promoting a culture of integrity on campus and acting in instances in which integrity is violated.

Academic honesty, the cornerstone of teaching and learning, lays the foundation for lifelong integrity. Academic dishonesty is intellectual theft. It includes, but is not limited to, providing or receiving assistance in a manner not authorized by the instructor in the creation of work to be submitted for evaluation. This standard applies to all work ranging from daily homework assignments to major exams. Students must clearly cite any sources consulted—not only for quoted phrases but also for ideas and information that are not common knowledge. Neither ignorance nor carelessness is an acceptable defense in cases of plagiarism. It is the student’s responsibility to follow the appropriate format for citations. Students should ask their instructors for assistance in determining what sorts of materials and assistance are appropriate for assignments and for guidance in citing such materials clearly.

For further information about the Code of Academic Integrity see http://www.denison.edu/about/integrity.html

Disability Accomodation

Any student who thinks he or she may need an accommodation based on the impact of a disability should contact me privately as soon as possible to discuss your specific needs. I rely on the Office of Academic Support in Doane 104 to verify the need for reasonable accommodation based on documentation on file in their office.

Have a great semester! If you need anything, please let me know.