Course Web Site:   http://www.cs.kzoo.edu/cs230/


This course provides an introduction to the basic fundamentals of computer organization, assembly-language programming, the assembly process, machine language, and number representation. We will also discuss modern trends in computer design.


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 Assembler Project
    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 Other Presentations 20%
Quizzes and Tests 10%

Attendance and Participation:

Regular attendance is expected of all students. There is a very strong correlation between attendance and grades in this class. 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.

If you are ill or pose a health risk to other people, you should wear a mask or not come to class. You should keep up as well as your condition will allow by watching class videos, working on assignments, and communicating with your instructor and/or TAs in the Collaboration Center through Teams.

To create an inclusive and supportive learning environment in which everyone can participate fully, we will 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. (See the section below on Collaboration and the Honor System.)

Assignments and Due Dates:

Reading assignments, homework assignments, projects, class notes, and other material will be made available on the Detailed Schedule page on the COMP 230 web site:

http://www.cs.kzoo.edu/cs230/
Students are responsible for checking this resource frequently. Announcements of changes or extra information will be sent via email and archived in the Announcements channel of the class site on Teams, but most information will be available on the Detailed Schedule.

Assignments should be submitted to Kit by 11:59pm. For example, if an assignment is described as due "before Thursday" on the Detailed Schedule, it should be submitted to Kit by 11:59pm on Wednesday. Weekly Reflections will be due at 11:59pm on Sundays. 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.

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 and explain 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. This includes providing comments that describe the behavior of each line in C terms.


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 CS teaching assistants in the Collaboration Center. You must acknowledge in your program documentation any help you receive. You should document authorship, group-work, and "outside" help (from the TAs, your instructor, or other groups within the class) in the comments at the top of your program using the following clauses:

            Authors(s):
            Working with or alongside lab group members:
            With Assistance From: 

    Homework assignments: You may discuss the requirements, concepts, and overall strategies related to homework assignments with your classmates, but unless the assignments are specifically described as allowing teamwork, 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.