Course Information
Time and Location
- Lecture: 3:00 PM-3:50 PM Monday, Wednesday, and Friday, KCK 100
Instructor
- Alan L. Cox, alc
@
rice.edu, DCH 3009
Office hours: 4:00 PM-6:00 PM Tuesday, Dandelion Cafe, O'Connor Building
Teaching Assistants (in order of office hours schedule)
- Marty Brandwein, mb156
@
rice.edu
Office Hours: 1:00 PM-3:00 PM Monday, Will Rice College Commons - Gabriel Ong, go15
@
rice.edu
Office Hours: 11:00 AM-Noon Tuesday and Thursday, Brown College Commons - Nithya Ramcharan, nr34
@
rice.edu
Office Hours: 11:00 AM-Noon Tuesday and Saturday, Lovett College Commons - Tiancheng Xu, tx10
@
rice.edu
Office Hours: 4:00 PM-6:00 PM Tuesday, Dandelion Cafe, O'Connor Building - Lynn Niu, yn23
@
rice.edu
Office Hours: 10:00 AM-Noon Wednesday, Dandelion Cafe, O'Connor Building - Bryce Liu, bsl5
@
rice.edu
Office Hours: 10:00 AM-Noon Thursday, Sid Rich College Commons
How to Contact Us
Please post your questions of a general nature to the course Piazza site. Piazza is a web-based platform that allows you to post questions about the course and to receive answers from the instructors, from the TAs, and from your fellow classmates.
Throughout the semester, check Piazza frequently for any new questions, answers, announcements, or other information. To do so, go to the course Piazza site, log in to Piazza (if you are not already logged in), and click on "Q & A" at the top of the page, (if it is not already selected). In addition to posting and finding answers to your own questions, reading other questions and answers on Piazza can help you learn additional valuable information including assignment assistance and clarifications. And if you encounter a new problem or question, you may well find an answer to it by searching on Piazza.
When using Piazza, please observe the following guidelines:
- Before posting any question, always search the existing Piazza posts first to see if your question has already been asked. If it has, and you don't think the answer(s) are clear, please follow up in that post, rather than creating a new one. As the semester progresses, you should also keep up with reading all of the postings on Piazza and all of the answers there, since this may enable you to discover the answer to some new concern you have even before you realize you need help with that!
- Note that although you can post anonymously, the staff will always be able to see who you are. Be polite, considerate, and do not ask frivolous questions or post frivolous content. Always be aware of how your statements might be perceived by others.
- When posting questions or answers on Piazza, please be careful about what you post, to avoid inadvertently violating the course's Honor Code policy. Specifically, do not include portions of your code (even if it doesn't work) in public questions or answers on Piazza. Please use Piazza for questions about the material for the course, not about how to fix your particular solution.
- If you are asking a question about the material in the class, your post should always be public. You should use private posts only when you need to talk privately with the staff. If your post is of a personal nature, you likely should bring it up with the instructors directly, rather than through Piazza. If your post absolutely requires you to include information about your solution, then your post should certainly be made private. To make your question private, select "Instructor(s)" (rather than "Entire Class") for "Post to" at the top of the posting page, so that only the course instructors and TAs can see your posting.
- Piazza is not always the best avenue to receive help in the course. It may be better to discuss some issues during office hours, for example.
Description
This course introduces students to the organization of computer systems in order that they gain an understanding of how a computer system executes their programs. Students will learn how to write small-scale programs in C, how to read the translation of those programs into assembly language, and how those programs are executed at the machine level. Specific topics covered will include data representation at the machine level, static versus dynamic memory allocation, instruction set architecture and the encoding of instructions in memory, linking relocatable object files to create executable files, pipelining within the processor, and caching within the memory system.
Learning Objectives
After completing COMP 222, you will be able to:
- Describe the organization of a computer system, including the role that the processor, memory, and I/O devices play in the execution of a program.
- Describe how the processor employs pipelining and the memory system employs caching to accelerate the execution of a program.
- Write small-scale programs in C that perform dynamic memory allocation and use pointers to construct basic data structures.
- Read the assembly language generated by a C compiler for a widely used processor.
- Describe how control flow structures and data types from C are implemented at the machine level.
- Describe the layout of code and data within the address space of an executing program.
- Describe a return-oriented programming attack and how to defend against it.
- Describe a systematic approach to diagnosing program errors.
Prerequisites
COMP 140
Textbooks
Required:
Randal E. Bryant and David R. O'Hallaron. Computer Systems: A Programmer's Perspective, Third Edition.
Suggested:
David Griffiths and Dawn Griffiths. Head First C.
This is an introductory book that teaches C programming if you feel you need more material on C. If you are looking more for a reference book, there are some listed on the Related Links page.
Exams
There will be two in-person exams. The first exam will be held from 7:00 PM to 9:00 PM on Monday, October 21, at a place to be determined. It will constitute 16% of the final score. The second exam will be held during the finals period at a time and place determined by the registrar. It will constitute 24% of the final score.
If you are unable to take an exam at its scheduled time due to exceptional circumstances and believe that you should be allowed to make up the exam, then you must email the instructor as soon as possible. For foreseeable circumstances, this email must be sent at least two weeks before the day that the exam is scheduled to take place. If your reason for missing the exam is excusable, then the instructor will schedule an alternative time for you to take the exam. This alternative time may be sooner than the originally scheduled time.
Honor Code Policy
Assignments:
See the Assignments page.
Exams:
The exams will be closed book and closed notes. During the exam, you may not use a computer or access the Internet. The only resources that you may consult are those provided with the exam.
Regrade Request Policy
If you believe that your grade on a homework assignment is incorrect and you would like it to be regraded, you must submit your regrade request within one week (7 days) from when grades for that assignment are released. Your regrade request must be submitted by email to the instructor with a "Subject:" of
COMP 222 Regrade Request
Your email must clearly specify what part of the assignment you think was misgraded and why you believe this to be so.
All regrade requests for questions on the exams must be submitted by email to the instructor and must be submitted within one week (7 days) from when the graded exams are released.
Requests for regrades made in any other way or made after the one-week cutoff for requesting regrades will not be accepted.
Students with Disabilities
If you have a documented disability or other condition that
may affect academic performance you should: Make sure this
documentation is on file with the Disability Resource Center
(Allen Center, Room 111 / adarice@
rice.edu / x5841) to determine
the accommodations you need; and discuss your accommodation
needs with the instructor.