6.004 is required material for any EECS undergraduate who wants to understand (and ultimately design) digital systems. A good grasp of the material is essential for later courses in digital design, computer architecture and systems. Before taking 6.004, students should feel comfortable using computers; a rudimentary knowledge of programming language concepts (6.001) and electrical fundamentals (6.002) is assumed.
The problem sets and lab exercises are intended to give students "hands-on" experience in designing digital systems; each student completes a gate-level design for a RISC processor during the semester. Access to workstations as well as help from the course staff is provided in the lab but it is possible to complete the assignments using Athena machines or one's home computer. Students are encouraged to get help from others in understanding the material, but the designs and measurements they hand in must be their own work.
Learning Objectives
On completion of 6.004, students will be able to:
Measurable Outcomes
Upon completion of 6.004, students will be able to:
Prerequisites
Students should feel comfortable using computers. A rudimentary knowledge of programming language concepts (C language or 6.001) and electrical fundamentals (6.002) is assumed.
Problem Sets
There are no weekly graded problem sets. Instead there are on-line tutorial problems with answers you can use to test your understanding of the material. The tutorials give you a chance to work on these problems with the help of a TA and to ask any questions that you may have.
Collaboration
The assignments are intended to help you understand the material and should be done individually. You are welcome to get help from others but the work you hand in must be your own. Copying another person's work or allowing your work to be copied by others is a serious academic offense and will be treated as such. We do spot-check submissions to the on-line checkoff system for infractions of the colloboration policy. So please don't tempt fate by submitting someone else's work as your own; it will save us all a lot of grief.
Labs
There are seven lab assignments due at various times during the term. Completing each part of a lab earns points that count toward your final grade; the automated checkoff system will assign points when you check in your work. Note that you can submit your work for a lab more than once, for example, as you complete each part. After completing the work for each lab, you'll be presented with some on-line lab questions to answer (these are different than the tutorial questions mentioned above).
You must have a non-zero score for each lab and all on-line lab questions must be checked-off as a prerequisite for passing the course. A missing lab (i.e., a lab with a score of 0) will result in a failing grade; incompletes will not be given for unfinished laboratory work.
It is possible to complete the assignments using your own computer: the lab software is written in Java® and should run on any Java® Virtual Machine supporting JDK 1.3 or higher (see related resources for details).
Late policy for labs: The on-line system will give you 50% of any points earned for submissions after the due date. So if your first submittal is late, you get 50% of the points. But if you submitted on-time for 15 points, and then late for 25 points, you'll get 20 points total for the lab. Note that points reported by JSim/BSim at check-in are for on-time submittals; you can check your on-line status page to see how many points count toward your total.
Quizzes
There are 5 fifty-minute, closed-book quizzes. The questions will be similar (perhaps identical!) to the tutorial problems and will ask you to provide short, written answers and/or explanations. The quizzes are scheduled roughly every three weeks during your tutorial.
To ensure everyone has a seat, please attend your assigned tutorial on quiz days. If exceptional circumstances make it impossible to take a quiz at your assigned time, please contact your TA before the quiz to see if other arrangements can be made. Requests for make-ups after the quiz has been given are unlikely to be successful.
There is no final exam.
Grading
The final grade is determined by performance on the quizzes (25 points/quiz, 125 points total) and the seven labs (75 points total). In addition, you must have a non-zero score for each of the seven labs and all the on-line lab questions must be checked off as a prerequisite for passing the course. A missing lab will result in a failing grade; incompletes will not be given for unfinished laboratory work.
Once your combined score has been computed as explained above, here's how grades will be assigned:
"A": total >= 155 points or better
"B": 125 <= total < 155 points
"C": 105 <= total < 125 points
"D": 85 <= total < 105 points
"F": missing lab, less than 85 points
The staff reserves the right on a case-by-case basis to assign a better grade than the one determined by your score.
Java® is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries.