EECS 370: Introduction to Computer Organization

Winter 2009

Home / Announcements | Course overview | Lectures | Staff and hours
Homeworks | Projects | Exams | Phorum / Resources | Discussions

Course Overview

Class Home Page: http://www.eecs.umich.edu/courses/eecs370
Class Newsgroup: http://phorum.eecs.umich.edu
Class Syllabus: syllabus_w09.pdf

Office hours are subject to change to adapt to the needs of students and the instructors. Check the class home page for current office hours.

Course Overview

This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software process of how you and the computer work together to have the computer carry out a task. In your introductory programming courses (e.g. EECS 280), you learned how to express a task in terms of a high-level programming language such as C/C++. In EECS 370, you will see how a low-level language is executed by the hardware, and you will see how to put together basic hardware building blocks to form the functional units of a computer.

To achieve these goals, you will design and "build" simple computers at various levels of detail. In this course, building will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finite-state machines, and hardware simulators (written in C). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.

Prerequisites

Students must have taken EECS 280. From that course they should have learned and be comfortable with programming C++ on Unix. A brief overview of C vs. C++ will occur during the first discussion section of the semester. Also you can go to GSI office hours for additional help.

Course Material

The required text for the course is Computer Organization and Design: The Hardware/Software Interface (3rd Edition OR 3rd Edition Revised), by Patterson and Hennessy. Either version of the book is acceptable; the only difference is the partition of material between the book and CD. The lecture notes are posted on the course web page.

Class Projects

Four projects will be assigned during the term, each of which will require a substantial time commitment on your part. Many students find the work load in this course to be heavy.

The most common reason for not doing well on the projects is not starting them early enough. You will be given plenty of time to complete each project. However, if you wait until the last minute to start, you may not be able to finish. Plan to do some work on a project every day. Also plan to have it finished about 2 days ahead of the due date - many unexpected problems arise during programming, especially in the debugging phase. The computing sites can become quite crowded as deadlines approach, making it difficult to get a computer. Plan for these things to happen. Your lack of starting early is not an excuse for turning in your project late, even if some unfortunate situations arise such as having your computer crash.

There are many sources of help on which you can draw. Many questions can be submitted to the course staff and your fellow classmates via the class phorum. These will typically be answered within the day, often more quickly during working hours. However, some types of questions cannot be answered without seeing your project. If you have detailed questions on your program, speak to a GSI or professor in person during office hours.

Students are also encouraged to help one another on the course concepts (but not the implementation of the projects). One of the best ways for you to make sure that you understand a concept is to explain it to someone else. Keep in mind, however, that you should not expect anyone else to do any part of your project for you. The project that you turn in must be completely your own.

Many computing sites have consultants who are available to help you at the site. They are fine sources of help with questions regarding the computers and installed software (such as Unix and the C compiler). However, they are not likely to be able to help you with questions about computer programming, the C language, or specific errors in your program.

The policies for using the class phorum are posted on the web and are the first posting in the phorum.

Turning in Projects

Projects are due at 6:00 pm on the due date. To account for short-term unexpected events like computer crashes, submission problems, and clock skew, we will allow 5 hours and 59' of slack and accept projects until exactly 11:59 pm.

Sometimes unexpected problems make it difficult to get a project in on time. For this reason, each person will have a total of 3 free late days to be used for projects throughout the semester. These late days should only be used to deal with unexpected problems such as illness. They should not be used simply to start later on a project or because you are having difficulty completing the project.

Projects received after the due date (assuming that you have no late days left) will lose 10% of the grade on the first late day, 20% on the second, 40% on the third, 80% on the forth, and 100% on the fifth day. Try to save one or two late days for the last project. Weekend days are counted in exactly the same way as weekdays (e.g., if the project deadline is Friday and you turn it in Sunday, that's two days late).

You will be submitting your projects electronically by running a program called submit370. Your projects will be graded automatically using an autograder program. You are allowed to submit your programs as frequently as you wish. However, to deter you from using the autograder as a debugger, you will only receive autograder feedback only TWO TIMES a day. That is, only the first 2 submissions will be graded and returned to you with your score on any given day. Additional submissions beyond the initial 2 will be graded and recored, but you will not receive any email feedback from them. For each project, your final score will be derived from your best submission to the autograder.

Extensions

Extension requests (other than the use of free late days) should be made before the original due date. Extensions will only be granted for medical or personal emergencies. Be prepared to substantiate any extension request you make with written proof, for example a written note from your doctor. Extensions are not granted for reasons such as: the printer went down, you erased all your files, you lost your listing, the terminal room was crowded and you couldn't get a terminal, you had other course work or job commitments which interfered, etc.. You can avoid all these problems by starting the projects early and keeping backup files. If you are having trouble understanding the material or designing a program, please come to office hours for help right away.

Project Grading

The projects will be graded primarily for correctness (doing all the required tasks, simulating at the correct hardware level, and giving correct results). All grading questions should first be discussed with your GSI. If you cannot resolve a problem with the GSI, bring the project to the instructor.

Doing Your Own Project

All projects and exams in this course are to be done on your own. Any violation will result in a zero on the project or exam in question and initiation of the formal procedures of the LS and A or Engineering Honor Councils.

We will be using a sophisticated automated program to correlate projects, including those submitted in previous semesters.

We do encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. You may give or receive help on any of the concepts covered in lecture or discussion and on the specifics of C syntax. You are allowed to consult with other students in the current class to help you understand the project specification (i.e. the problem definition). However, you may not collaborate in any way when constructing your solution - the solution to the project must be generated by you working alone. You are not allowed to work out the programming details of the problems with anyone or to collaborate to the extent that your programs are identifiably similar. You are not allowed to look at or in any way derive advantage from the existence of project specifications or solutions prepared in prior years (e.g. programs written by former students, solutions provided by instructors, project handouts).

If you have any questions as to what constitutes unacceptable collaboration, please talk to the instructor right away. You are expected to exercise reasonable precautions in protecting your own work. Do not leave your program in a publicly accessible directory, and take care when discarding printouts.

Exams

There will be three exams this semester. You are expected to take the exams at the scheduled times. If you do not take an exam without verifying a documented medical or personal emergency which causes you to miss an exam, you will receive a zero for that exam. If you anticipate conflicts with the exam time, talk to the instructor at least 1 month before the exam date. The exam dates are given near the beginning of the semester so you can avoid scheduling job interviews or other commitments on exam days. Outside commitments are not considered a valid reason for missing an exam.

Homework

There will be 7 homework assignments during the semester. Homeworks must have your U of M uniqname on them, be stapled (no paperclips or dog-ears), and be turned-in on time, otherwise no credit will be given.

You may not post homework answers on the newsgroup or place them in any other public forum (a webpage for example.) or share them with others. We will only take into consideration your best 6 homework grades in computing your final grade for the class. Note that homeworks constitute a very small factor in your final grade, their main purpose is to help you in getting trained for the type of questions that you find in the course exams.

Grading policy

Final grades will be based on the total points earned on homeworks, projects and exams. Factors such as class participation may be used to adjust your final grade, especially if it falls on a borderline. The tentative point breakdown is as follows: Incompletes will generally not be given. According to university policy, doing poorly in a course is not a valid reason for an incomplete. If you are having problems in the course, your best bet is to come talk to the instructor as soon as you are aware of them.

Computers

You may use any Linux workstation that runs gcc. However, we will only support problems which occur on a CAEN machine.If you are not an engineering student (or declared CS-major), we recommend you to get a CAEN account. The autograder should work for submissions ITCS Linux workstations, but we cannot guarantee this.

Also, you are responsible for reading your e-mail @umich.edu. Class announcements and other e-mails may be sent there.


Home / Announcements | Course overview | Lectures | Staff and hours
Homeworks | Projects | Exams | Phorum / Resources | Discussions