Syllabus for CS 223
Computer Architecture and Assembly Language
Fall, 2008

Professor Roger Kraft
Office: Classroom Office Building, Room 368
Office phone: (219) 989-2696
Office hours: 12:30-1:30 TR, 5:00-6:00 T and by appointment.
E-mail: roger@calumet.purdue.edu

Text: Computer Systems: A Programmer's Perspective, by Randal E. Bryant and David R. O'Hallaron, Prentice Hall, 2003.

This course is an introduction to the fundamental concepts of computer architecture, progressing from the digital logic level to the microarchitecture level and then to the instruction set level. We cover data representations, machine level representations of C programs, processor architecture, program optimizations, and the memory hierarchy. Assembly language and the assembly process will also be included.

In addition to the study of computer architecture, two other subjects will be important in this course, the C programming language and the Linux operating system. All of the programming assignments will be done using the Linux GCC C compiler running in a (virtual) Linux environment.

This course will cover Chapters 1 through 6 from the textbook. Your grade for this course will be based on approximately 8 programming assignments and two exams in the following manner:

           40%    Programming assignments,
           30%    Midterm exam,
           30%    Final exam.
Tentative dates for the two exams are
           Midterm  Tuesday, October 21,
           Final    Final exam week.
Each of the programming assignments will have a due date. To receive full credit for an assignment, it must be turned in by the due date. All programs handed in late will be marked off 5\% of the total points for each calendar day late. If an assignment is more than one week late, then I reserve the right not to accept it for credit. When you complete a programming assignment you will e-mail me your solution. In the course web site (see below) there are detailed instructions on how you are to turn in your assignments. You will be expected to follow the instructions. Also in the course web site is information on the criteria used to grade your programming assignments.

You should turn in your own work for each programming assignment. Here is what that means: You may talk with your classmates about the course material and the ideas behind each homework assignment but you should solve the problem on your own and write your own code for the solution. Turning in someone else's solution (or even a modified version of someone else's solution) is a breach of academic integrity. Similarly, giving a copy of your solution to someone else in the class is also a breach of academic integrity. If you need help with a homework assignment, come and ask me. You can ask me as many questions as you want! Please do not hesitate to ask me questions after class, in my office, in an e-mail message, over the phone, etc.

In this web site you will find more information about this course. There are links to online help and documentation for C and Linux, information about course reading assignments, and, very importantly, all of your homework assignments and their due dates will be posted on one of the web pages.

The software that you need to do all of your programming assignments are on computers in the Mathematics Computer Labs in CLO 363 and CLO 365. If you wish to work at home, I will show you in class how to install and use a couple of different C development environments and a (virtual) Linux environment. There is more information about this in these web pages.

The learning objectives for this course are as follows.

  1. Explain the reasons for using different formats to represent numerical data and be able to convert numerical data from one format to another.
  2. Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler.
  3. Explain how subroutine calls are handled at the assembly language level.
  4. Explain basic instruction level parallelism using pipelining and the major hazards that may occur.
  5. Explain the use of memory hierarchy to reduce the effective memory latency.
  6. Explain how interrupts are used to implement I/O control and data transfers.

If you are a student with a documented disability who will require academic/classroom accommodations in this course, please register with the Coordinator of Services for Students with Disabilities in the Student Support Services Office located in the Student Union and Library Building (SUL), Room 341, phone numbers: 219-989-2455, 219-989-2454(voice/TTY) or 219-989-2920.

Students are expected to comply with University regulations regarding civility, attendance, and appropriate classroom behavior. Please see the document Student Guide: Civility in the Classroom available from the Dean of Students office and the Dean of Students web site.

Ethics are an integral part of being a student and a professional. Academic integrity is the hallmark of this University. Therefore, Purdue University does not tolerate academic dishonesty in any form. If a student breaches integrity, the student risks sanctions in both the academic and conduct arenas. Academic dishonesty includes, but is not limited to, the unauthorized use of other's intellectual property (plagiarism), and lying to an instructor or any University employee. Such actions will result in a failing grade on the assignment with the strong possibility of referral to the Office of the Dean of Students for a conduct sanction (see the Purdue University Calumet Student Handbook available from the Dean of Students office and the Dean of Students web site).


Return to the CS 223 home page.



compliments and criticisms