Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

EECS 370: Intro to Computer Organization

Fall 2022

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 like 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).

Learning Objectives

● Understanding the basics of how computers execute programs

● Know the hardware building blocks which form the functional units of a computer

● Ability to describe computer hardware through diagrams, finite-state machines, and hardware simulators (expressed in programs written in the C programming language)

● Ability to create programs in a low-level language (expressed in Assembly language)

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 staff office hours for additional help.

In addition, students should have taken either EECS 203 or EECS 270.

Quick Links

COVID-19 Policy

Please finish ResponsiBLUE's self screening before entering the classroom every day. All students must adhere to the University of Michigan Face Covering Policy for COVID-19. Masks are required at all times when indoors. Food and drink are not allowed in classrooms. If you have medical conditions that may require food and drink at set times, you are allowed to arrive 5-10 min late or step outside to the hallway.

If at any point you become unable to complete your work due to factors related to the COVID-19 pandemic (e.g. you or a loved one becomes infected or loses their job, you lose prolonged access to the internet, etc.), please contact the staff as soon as you can. We will do our best to work with you to find a solution. If this happens near the start of term, we may encourage you to drop the course. If it occurs later, we may encourage you to take an “Incomplete” for the term to finish your work after the semester has ended.

Administrative Requests

Please let us know as soon as possible if you experience interruptions to your studies, or if you have tested positive for COVID-19 and will need accommodations for homeworks, projects, or exams. Students do not need to submit requests for lecture or discussion absences, as attendance is not required or graded. General administrative requests admin form is on the course website, also linked here:

General Requests

For Exam Conflicts (Deadline September 30):

Exam Conflict Requests

For Student Accomodations (Deadline September 30):

Student Accommodation Requests

Email [email protected] for urgent issues and please include “EECS 370” in the subject line 

Lecture Format

There are 4 sections that are traditional 80-min live, in-person lectures. Students enrolled for section 5 are encouraged to attend one of the 4 live in-person lectures. All lecture sessions will be recorded and released on the website.

All lectures will cover the same material which will help prepare you for the Homework Assignments, Projects, and Exams. Students registered for any section can go to any other section (we are assuming room space would not become a concern. If that happens, then we may have to revise this policy). Lecture worksheets will be provided online (not graded) with relevant content to that lecture alongside their solutions.  

 In the event that a lecture is held online, an announcement will be made and a zoom link will be available.

Lecture Worksheets

For each lecture there is a short lecture worksheet to test your comprehension. These are not graded and are only here for your benefit.

Discussion Format

Discussion sections will be in person unless a staff member decides to hold it remote. In the event that a discussion is held online, an announcement will be made and a zoom link will be available. Slides and worksheets will be released beforehand. Attendance is not mandatory but strongly encouraged. Any content in discussion may be tested in homeworks or exams. You are welcome to attend any discussion section that you want, regardless of the section you are signed up for.

Grading Policy

Final grades will be based on the total points earned on homework, projects and exams. The grade distribution is as follows:

Category

#

%

Notes

Projects 

4

45%

Projects split into multiple parts

Individual Homework 

6

5% (1% each)

Drop lowest score

Midterm

1

25%

 

Final exam

1

25%

 

 

Class Projects

Four projects will be assigned during the term, each of which will require a substantial time commitment on your part. The first project will be divided in three parts, each with a separate deadline. Many students find the workload 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. Office hours can become quite crowded as deadlines approach, making it difficult to get help. 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 Piazza. 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/IA or professor 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 campus 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.

Turning in Projects

Projects are due at 11:55pm Eastern time exactly on the due date.

You will be submitting your projects electronically by going to autograder.io. 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 receive autograder feedback only THREE TIMES a day. That is, only the first 3 submissions will be graded and returned to you with your score on any given day. Additional submissions beyond the initial 3 will be graded and recorded, but you will not receive any feedback about them. For each project, your final score will be derived from your best submission to the autograder.

Project Late Days

Sometimes unexpected problems make it difficult to get a project in on time. For this reason, each person will have a total of 4 free late days to be used for projects throughout the semester.

If a project is due Monday 11:55 PM, and a person submits it any time before Tuesday 11:55 PM it will use up one late day. Similarly, if they submit it after Tuesday 11:55 PM but before Wednesday 11:55 PM it will use up two late days. The same logic applies to using four late days.

Note that late days are shared across all projects, and in the case of project 1, each project part. For example, if Project 1s and 1m are due on the same day, and you use up one late day for Project 1s, and then on the same (late) day submit for Project 1m, you will end up using two late days. 

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. Thus, please plan your work accordingly so that you won't need to use any of the late days unless there is a personal emergency. 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). The projects will be compiled and tested on the CAEN Linux system. There are no private test cases so the highest score you see on the autograder is the score you will receive. A small portion of a project's grade is submitting test cases to expose bugs in an instructor made “buggy” solution. Exposing these bugs will help you debug your own code and as well give you points towards the project. All grading questions should first be discussed with a GSI or IA. If you cannot resolve a problem with them, bring the project to the instructor.

Doing Your Own Project

All projects, homeworks, and exams in this course are to be done on your own. Any suspected violation will result in the initiation of formal procedures with the College of Engineering Honor Council. Violators will receive a 0 in the project, in addition to additional grade repercussions, as recommended by the appropriate Honor Council.

We will be using a sophisticated automated program to correlate projects, including those submitted in previous semesters. This not only checks the similarity between your project code and other students project code, but also includes your test cases.

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 your work alone and the work of other students must not have contributed to your solution. 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.

Homework

There will be six individual homework assignments during the semester, and there is NO late day for homework assignments. Your homework assignments will be posted on this website and will have a deadline set at 11:55pm for the day the homework is due on Gradescope. Students can re-submit as much as they would like until the deadline. Only the last submission will be graded, and homeworks are graded for accuracy. The files can be typed up or written and then scanned. You will be able to drop one homework assignment. Late assignments (even 1 minute late) turned in within 24 hours of when they are due will generally get 50% credit. Later assignments will get a zero. Do note that you can drop one homework score.

You may not post homework answers on piazza or place them in any other public forum (a webpage for example) or share them with others. You may discuss your solution methods with other students, but the solutions you submit must be your own. Note that homework constitutes a fairly small factor in your final grade. Their main purpose is to give you examples of the type of questions that you will find in the course exams.

Exams

There will be two in-person 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 causing you to miss an exam, you will receive a zero for that exam. If you anticipate conflicts with the exam time, declare your conflict by the given due date. The exam dates are announced at 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.

If you need to request any special accommodation during any exam, please submit your request and SSD documentation through (a forum will be posted on the website shortly).

We will not be able to accommodate requests submitted after the deadline. For last-minute emergency accommodations (e.g., documented illness), please contact the staff at [email protected].

Textbook

We recommend the following textbook for reference, but it is not required:

Computer Organization and Design, Patterson and Hennessy, ARM 5th Edition.

Alternative/additional book available online via Umich Library ) https://www.lib.umich.edu/):

Fundamentals of Computer Organization and Architecture by Abd-El-Barr and El-Rewini

Computers

You may develop on any machine that runs gcc. However, we will only support programs which run correctly 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 from ITCS Linux workstations, but we cannot guarantee this.

Finally, you are responsible for reading your umich e-mail inbox; class announcements and other student communications may be sent there.

Course Etiquette

All course participants (course staff and students) are expected to behave professionally and respectfully. Unprofessional or disrespectful behavior on the part of any course participant will not be tolerated, and we highly encourage all incidents to be reported to a member of course staff.

● All interactions must be respectful and professional, in and out of class, on Piazza, in discussions, in lectures

● All questions are welcomed. At any level, questions are always appreciated and always answered to the best of our abilities.

● Feedback should be constructive, as all feedback can always be expressed constructively.

● All are encouraged to participate in class interactions, everyone’s experience in this class matters.

● Class decisions strive to be equitable. Class decisions will be made based on what is most fair for the majority of EECS 370 students

● All are accountable. Please report any problems to [email protected] or one of the professors if the issue is with a staff member or another professor

Right to Revise

The course staff reserve the right to make changes to the syllabus at any time, as they see fit. When a revision occurs, it will be announced through Piazza, and it is your responsibility to be informed of such.