Welcome to CS 61CL, "Machine Structures".
The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer's point of view. The first two courses considered programming at a high level of abstraction, introducing a range of programming paradigms and common techniques. This course, the last in the series, concentrates on machines and how they carry out the programs you write.
The main topics of CS 61CL involve the low-level system software and the hardware organization of a "logical machine"—not the actual electronic circuits, but the computational operations that those circuits carry out. To make these ideas concrete, you will study the structure of a particular computer, the MIPS R3000 processor, in some detail, down to the level of the design of the processor's on-chip components.
Some of this study involves programming in assembly language. Why is this important? First, a lot of embedded software—code for computers inside your car, toaster, digital watch, and cell phone—is still written in assembly language. Even apart from that, assembly language programming experience is essential for further computer science activity. You can't write compilers, you can't build operating systems, you can't design computers, you can't read the data sheets, you can't really do performance optimization without it.
Material covered in CS 61CL will be the basis for further exploration in the courses EECS 150 ("Components and Design Techniques for Digital Systems"), CS 152 ("Computer Architecture and Engineering"), CS 162 ("Operating Systems and System Programming"), CS 164 ("Programming Languages and Compilers"), and CS 186 ("Introduction to Database Systems").
The recommended prerequisite for CS 61CL is CS 61A and either CS 61B, CS 9C, CS 9F or CS 9G. In particular, you are expected to be comfortable programming in a C-based language (C itself, C++, Java or C#), and familiar with recursion and linked-list processing. We will expect you to judge your own fitness for this class, and will not enforce any prerequisites. However, we will gladly help you decide if this is the right class for you to be in.
The traditional version of CS 61C has loosely coordinated lecture, discussion, and lab sections. More recently, we have introduced a lab-centric version of the course (the "L" in 61CL stands for "lab") that trades lecture and discussion time for hands-on lab time. The two versions cover equivalent content; students do about the same amount of total work in each version. In the lab-centric version, we integrate the various parts of the course better and supervise your work more closely; as a result, we are better able to provide help when you're confused. We also believe that you will learn the course material better with the more tightly integrated lab activities and the opportunities for collaboration with your labmates.
We will be using UC-WISE, a learning environment with which you may be familiar. It structures the various course activities, increases opportunities for collaboration, and gives you better feedback on your work.
The instructor is Mike Clancy (email@example.com, 779 Soda, 642-7017). The teaching assistants and the lab sections they're tentatively supervising are listed in the table below.
|Richard Guo||WF 11am-2pm, WF 2-5pm|
|Tony Huang||TuTh 8-11am, TuTh 5-8pm|
|Long Wei||TuTh 12:30-2pm, TuTh 2-5pm|
|Jerry Zhang||Th 11am-12:30pm, WF 8-11am|
There will also be lab assistants working with us during the lab sections, and readers to grade your homework. Detailed information on contacting staff will be available shortly.
There are two required textbooks for the course: Computer Organization and Design: The Hardware/Software Interface, by Patterson and Hennessy (henceforth referred to as "P&H"), and The C Programming Language, second edition, by Kernighan and Ritchie ("K&R"). Both these books should be available at a bookstore. Either the third edition or the fourth edition of P&H is acceptable. Do not purchase Computer Architecture: A Quantitative Approach by Hennessy and Patterson; it's a similar-looking graduate text.
Handouts, supplements, and other material (exams from previous semesters, for instance) will be distributed in UC-WISE throughout the semester.
A CD is packaged with new copies of P&H. Some of the material on the CD will be required reading later in the semester. The P&H companion web site says that "if you purchased a book that is missing the CD, you may purchase a CD from the publisher by ordering ISBN 012088433X."
You should dedicate a notebook to CS 61CL, and bring it to every lab section. The notebook will provide a place for your lab instructors to draw diagrams or to do computations when answering your questions or providing explanations. It can also provide a custom reference for you, pointing you at resources for topics that are hard to understand, reminding you of errors you've made that you shouldn't make again, and in general just providing a convenient place to jot down useful information from lab.
You should also bring K&R to lab almost every day. Don't try to get by with a copy of the first edition; it describes a version of C that predates the standardization of the language.
This semester's CS 61CL lectures will not be webcast. Last semester's webcasts are available online at http://webcast.berkeley.edu/courses.php?semesterid=2008-D; we also plan to make "greatest hits" of CS 61C lectures in past semesters available. The webcasts may be useful for review.
Should you need a guide to the UNIX operating system, we suggest the book Your UNIX: The Ultimate Guide, by Sumitabha Das, available at a bookstore. The Computer Science Undergraduate Association usually runs UNIX help sessions at the start of the semester; these will be announced when scheduled.
There will be a one-hour lecture each week on Wednesdays from 6 to 7pm in 100 Lewis. Lectures will help you organize the numerous lab activities, highlight the "powerful ideas" you should be learning in the course, provide history about the evolution of computer systems and architectures, and describe relevant current trends in computing. Exams will be administered in class on Wednesday, February 25 and Wednesday, April 15; they will extend into the 7-8pm hour.
You are each assigned a lab section that you are to attend each week. Scheduled sections are TuTh 8-11am, TuTh 11-2pm, TuTh 2-5pm, TuTh 5-8pm, WF 8-11am, WF 11-2pm, and WF 2-5pm. Some are full. You will be allowed entrance to a section only if Bearfacts lists you as enrolled. You may attend a section to which you're not assigned only with the permission of both the relevant lab t.a.s.
For most of the semester, the typical lab period will involve a variety of activities, all provided online. The Tuesday and Wednesday section will start with a short quiz based on topics covered on the homework or in the preceding lab; each start-of-period quiz will count toward your course grade. It may conclude with another quiz covering the material you just worked with; each end-of-period quiz will function as a diagnostic to give you feedback on what you don't fully understand. In between, you'll be reading, experimenting, brainstorming, evaluating each other's ideas, and sometimes working with partners.
A short set of homework exercises will be often be assigned at the end of each lab. The exercises will involve writing or analyzing programs and contributing to online discussions about typical programming misconceptions. Solutions to the programming exercises and contributions to the discussions will be submitted online. There will be several larger project assignments during the semester, to which some of the lab meetings will be devoted. At least one of the projects will be done in partnership. You should expect to put in at least four or five hours of work per week outside of class. If you finish the online exercises early, you may leave early or work on your homework.
Your homework solutions will be evaluated by other CS 61CL students. (This technique is called peer evaluation.) We hope in this way to expose you to alternative approaches to these exercises, and to make more productive use of the "official" homework graders. Any student may appeal his or her peer evaluation grade; readers will be spending some time in lab sections to handle these appeals.
Here's the likely weekly routine for each segment of material.
|lecture||overview and motivation|
|start of Thursday/Friday lab||details and structure|
|Thursday/Friday lab||practice with the details|
|start of Tuesday/Wednesday lab||quiz evaluating your understanding of the material|
|prior to start of Thursday/Friday lab||homework submission|
|prior to Wednesday lecture||homework peer evaluation|
You have 3 "slip days" to apply toward late project submission. (Don't use them all at once.) Homework solutions must be submitted at the designated time.
There will also be three exams. Two will be in class, scheduled for Wednesday, February 25 and Wednesday, April 15, from 6 to 8pm. (Note the extra hour.) The other will be the final exam, Wednesday, May 20 from 5 to 8 pm (exam group 18).
The programming tools and course material used in CS 61CL were devised by a research group of computer science and education researchers. To determine the effectiveness of these tools and material, we will gather data on your background and performance, via questionnaires, interviews, and analysis of your work. You will be expected to complete several surveys through the course of the semester.
Most of your work for this course will be done in class in 271 Soda. Outside of class, you may work in any EECS lab room in which a lab section is not meeting.
To access the CS 61CL Course Portal, http://spring09.ucwise.org, you should use a recent version of the Firefox browser, with a plugin that supports Java 1.5, or (on Macintosh OS X) a recent version of the Safari browser. The UC-WISE software has not been tested with other browsers.
You will each be given an account on the EECS instructional computers. Account forms will be handed out in your first lab section. You should change your password during your first lab section; password changes need a half hour or so to take effect, so do this right before you log off. Initial access to the CS 61CL Portal also requires an enrollment code, which we will provide in your lab sections.
The Soda labs are open from 7:30am to 6pm Monday through Friday. Outside of these hours the doors to the building and lab are locked, and you will need to obtain a card key for after hours access. Current students with CAL 1 identification cards can enable them for lab access by visiting 387 Soda. Students registered through U.C. Extension should apply at 387 Soda for a white card key; the fee is $20 (with $15 refunded when you return the card.
The various course activities will contribute points to your grade as follows.
|activity||course points||percent of total grade|
|all other homework||scaled to 24||12%|
|all quizzes||scaled to 16||8%|
|both midterm exams||60 (30 each)||30% (15% each)|
Your quiz score will be capped at 70% of the maximum total points, then scaled to 16. Similarly, your homework score will be capped at 90% of the maximum total points, then scaled to 24.
You are expected to keep up with the classwork. There will occasionally be time devoted in lab to helping you catch up or solidify your understanding of the material. Homeworks assigned in one lab section are due at the start of the next section unless otherwise specified. You will be expected to submit homework on time, and to take quizzes on the day they are assigned. Quizzes must be taken in lab, during the section in which they are assigned.
Peer evaluations are treated like homework. The two evaluations you are required to do for each homework are each worth half the points of the homework assignment itself. Deductions will be made for an incorrect evaluation (much too high or much too low) or one that provides insufficient explanation for why points were deducted.
Your letter grade will be determined by total course points, as shown in the following table:
In other words, there is no curve; your grade will depend only on how well you do, not on how well everyone else does.
Incomplete grades will be granted only for dire medical or personal emergencies that cause you to miss the final exam, and only if your work up to that point is satisfactory.
Copying and presenting another person's work as your own constitutes cheating. It will be penalized at least by a negative score on the work in question and notification of the incident to the Office of Student Conduct.
Copying and presenting another person's work as your own constitutes cheating. Cheating directly affects the reputation of the Department and University and lowers the morale of other students. Consistent with departmental policy, each incident of cheating on a homework or project activity will result in a negative grade on that activity, while cheating on an exam will result in a failing grade in the course. All incidents of cheating will be reported to the Office of Student Conduct where records of academic misconduct are kept throughout your undergraduate career.
Sometimes it's hard to draw the line between cheating and appropriate collaboration. Obviously wrong is getting a "homework service" to write your program for you, or finding a solution on the Internet and submitting it as your own. On the other hand, providing suggestions to a classmate about the meaning of a question and offering advice about the likely meaning of a compiler error message are examples of interaction that we encourage. The various collaboration activities in CS 61CL may complicate matters further. Some useful rules of thumb, however, are the following:
Fortunately, we have found in the past that the close interaction between lab instructor and students in a lab-based class serves to support student learning (reducing the need to cheat) and to convince students both that the instructor cares what they learn and that solutions that differ significantly from students' earlier work will be detected.