Course Web Site:

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 schedule):
Chapter numbers refer to chapters in Patterson & Hennessy.  For a detailed time-line that will be updated throughout the term, see the course schedule.

Grades: Grades will be based on:

Homework Assignments 20%
Programming Projects 20%
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:
Students are responsible for checking this resource frequently.

Programming Guidelines:

Two documents, the CS Program Style Guide and Documentation Standards, describe the programming style and documentation standards for C programs in this course. All programs should adhere to these guidelines, including use of the Braces Line Up style pattern. You may use the C function template file that has been created to help you meet the documentation standards. Following such standards is an important step towards writing well-structured, reusable, professional programs.

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.

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.

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.