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. |
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.
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:
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.
- 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.
- 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.
- 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.
- There is more to performance than asymptotic complexity. Constant factors also matter. There are systematic ways to evaluate and improve program performance.
- 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.
In addition, resources will be provided for programming in Intel assembly language.
Midterm Tests (2): | 25% |
Lab Projects: | 10% |
Homework/Projects | 35% |
Quizzes and Participation | 10% |
Final Exam: | 20% |
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.
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 daythereafter 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.
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
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.