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.


Texts:

You can find other references in the class bibliography.

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 C and program snippets in 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.

    Weeks 1-2

    Introduction to the Course
    The C Programming Language
    Representation of Positive and Negative Integers

    Chap. 1
    K & R
    Chap. 3
    Weeks 3 - 5 More C
    Floating Point Numbers, Characters
    Assembly Language Programming
    Assembly to Machine Language Translation
    K & R
    Chap. 3
    Chap. 2
    Week 6 Review of AND, OR, and NOT Gates
    PLAs
    Computer Arithmetic
    Building an ALU
    Memory Latches
    Appendix C
    Weeks 7 Single-Cycle Datapath
    Multi-Cycle and Pipelined Datapaths
    Chap. 4
     
    Week 8 Memory Hierarchy Chap. 5
    Weeks 9 - 10 Measuring Computer Performance
    Student Presentations
    Chap. 1
    Chaps. 6 - 7
    External Reading
    Exam Week Final Exam (if necessary)  


Grades:

Grades will be based on:

Homework Assignments (approx. 10) 25%
Weekly Reflective Responses 25%
Programming Projects (3 small, 2 intermediate, 2 large) 20%
Presentation and Reflections on Others 20%
Quizzes and Tests 10%

Assignment Due Dates:

Assignments are due at the end of the day on the due date. Late assignments will accrue late penalties, or might not be accepted at all, unless you clear them with me in advance. 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.

Reading assignments, homework assignments, announcements, class notes, and other material will be made available on the COMP 230 homepage:

http://www.cs.kzoo.edu/cs230/
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:

  • 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
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.

Respect in the Community: Creating a Culture of Support

K College is committed to fostering a supportive campus community that values respect, dignity, and safety free from fears of retaliation or reprisal. We all have a role in creating a supportive and respectful culture. To create an inclusive and supportive learning environment in which everyone can participate fully, please read and follow these Community Guidelines adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan and the guidelines for creating a culture of respect and support outlined in Respect in the Community: Creating a Culture of Support.

Academic Integrity

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: The initial programming projects should be done individually; the full disassembler and assembler projects may be done either individually or in a pair. When teams are permitted, you should indicate all authors in the program documentation and turn in only one copy of the program for the team (not one for each team member). Each team member should be fully involved in developing the solution and should take full responsibility for the finished product.

    Whether working individually or in a team, you may discuss lab assignments and programming projects with classmates and give and receive help. All help should focus on sharing and promoting understanding, not just the "products" you are working on. (Understanding is, after all, the real product of this course.) You may also, of course, receive help from your instructor and from the CS teaching assistants. You must acknowledge in your program documentation any help you receive. For example, you should list anyone with whom you collaborated or from whom you received help in a With Assistance From: or Working Side-by-Side With: clause 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.

    Reflective Responses should be your own.

    Presentations will generally be done with a partner.

    Quizzes, Tests, or Exams should also 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.