Course Web Site: http://www.cs.kzoo.edu/cs230/
This course provides an introduction to computer organization, assembly-language programming, the assembly process, machine language, and number representation. We will also discuss modern trends in computer design, such as multi-core processors.
Required Text: Patterson and Hennessy, Computer Organization & Design: The Hardware/Software Interface, 5th Ed., Morgan Kaufmann Publishers, 2013.
You can find other references in the class bibliography. In particular, I strongly recommend that you get a copy of Kernighan and Ritchie's The C Programming Language, 2nd edition, published by Prentice-Hall. This is a classic book on a widely-used and influential language, and a good one for any computer scientist to have on his or her bookshelf. If you do not buy this book, you will be responsible for finding other references on the C language, as that is what you will be using for your programming assignments.
Goals: At the conclusion of this course, students should have a basic understanding of computer organization, particularly the role of the CPU, various types of memory, and peripherals. Students should also understand the fundamental design decisions and trade-offs that go into architectural design. Finally, students should be able to write programs in both C and assembly language, should have experienced the difference in style between assembly language programming and high-level language programming, and should have a basic understanding of how high-level programs are turned into machine-executable processes.
Prerequisite: COMP 210 (Data Structures).
Topics to be covered (and tentative course
Chapter numbers refer to chapters in Patterson & Hennessy. For a detailed time-line that will be updated throughout the term, see the course schedule.
Review of Simple
K & R
|Weeks 3 - 4Assembly Language Programming||Computer Arithmetic
|Weeks 5 - 6||Measuring Computer Performance
Midterm Exam (date to be announced)
|Week 7||Datapath and Control
|Week 8||Memory Hierarchy||Chap. 5|
|Weeks 9 - 10||Student Presentations||Chap. 6|
|Exam Week||Final Exam|
Grades: Grades will be based on:
|Presentations & Responses||20%|
|Exams: Midterm & Final||40%|
Attendance and Participation:
Regular attendance is expected of all students. Your grade will be partially based on in-class projects, discussions, and occasional quizzes, so your attendance will affect your grade. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up.
Assignment Due Dates:
Assignments are due at the end of the day on the due date. The time required to write and debug a program is difficult to predict, but time-management skills are critical in both college and industry. I will assign homework and projects far enough in advance that you will have some flexibility in when you schedule your work, but you are responsible for budgeting your time wisely so that you will be able to complete your assignments on time. No late assignments (including programming projects) will be accepted unless you clear it with me in advance.
Reading assignments, homework assignments, announcements, class notes, and other material will be made available on the COMP 230 homepage:
Two documents, the CS Program Style Guide and Documentation Standards, describe the programming style and documentation standards for C programs in this course. Following these standards is an important step towards writing well-structured and reusable programs. You may use the C function template file that has been created to help you meet the documentation standards.
C programs in this course will be graded on:
I may ask you to demo your programming projects for me in addition to looking at your actual code.
- program design (especially function modularity)
- functionality and correctness
- internal documentation and coding style
- external documentation as specified for the assignment
- appropriate efficiency
- thoroughness of test cases
Assembly language programs should be developed according to the style used by Patterson and Hennessy in Computer Organization and Design and the style used by me in class.
Collaboration and the Honor System:
This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.
Programming projects: Programming projects sometimes involve collaborating with others in small groups. I will try to make clear my expectations about whether a given project is meant to be the result of collaborative or individual work and what the size of a group may be, but you are responsible for consulting with me if you are in any doubt. Your program documentation should indicate all author(s) of the program. (Please hand in only one copy of each group project, not one per group member.) When you work in a group, each member of the group takes full responsibility for the finished product, and each member must be equally involved in developing the solution.
You may discuss the requirements and strategies of a programming assignment with others in the class, but you should not look at code belonging to anyone outside your group or make your code available to anyone else. If you have code-specific questions you should address them to a course TA or computer science faculty members only. You should acknowledge any help you receive in your program documentation.
Homework assignments: You may discuss the requirements, concepts, and overall strategies related to homework assignments with your classmates, but you should write the solutions individually, using your own words. Organizing and writing up the solutions on your own ensures that you really understand the material. Submitting someone else's work does not help you learn and constitutes academic dishonesty. As always, you should acknowledge your collaborative discussions with your solutions.
Exams should be entirely your own work.
Penalties for a first violation of the Honor Code in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean of Students, which may result in additional consequences, including suspension or expulsion from the College. Any subsequent violation will result in the immediate failure of the course.
Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with me as soon as possible.