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 R2000 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. In real life, you'll probably never actually write programs at this level, but for us it serves as a vehicle for teaching about computer architecture. Material covered in CS 61C 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 61C 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 as such will not enforce any prerequisites. However, we will gladly help you decide if this is the right class to be in if you should ask.
Instead of running the class with loosely coordinated lecture, discussion, and lab sections as in the regular version of CS 61C, we have only a lab section, where all the lecturing and discussing and much of the computer work will take place. (We have run CS 3 and some sections of 61B in a similar format for the past several years.) In the small section, we expect to get to know you better. We also hope to integrate the various parts of the course more closely and thereby help you to learn better. Finally, we will be using UC-WISE, an online learning environment with which many of you are familiar; it structures the various course activities, increases opportunities for collaboration, and gives you better feedback on your work. We expect this to be an exciting semester.
There will not be large differences between what we cover in this course and what is covered in the regular CS 61C. In particular, you and the CS 61C students this semester will take the same exams, do the same projects, and do most of the same homework. Any University requirement satisfied by CS 61C will be satisfied equally well by CS 61CL.
The instructor is Mike Clancy (email@example.com, 779 Soda, 642-7017). The teaching assistant is Valerie Ishida (firstname.lastname@example.org). Mike's administrative assistant is Audrey Raya, 385 Soda.
There are two required textbooks for the course, both also used in CS 61C: Computer Organization and Design: The Hardware/Software Interface, Third Edition, by Patterson and Hennessy (henceforth referred to as "P&H"), and The C Programming Language, by Kernighan and Ritchie ("K&R"). Both these books should be available at a bookstore. 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 and via the CS 61C website throughout the semester.
For those of you that might benefit from lectures, this semester's CS 61C lectures will be webcast and thereafter available at http://webcast.berkeley.edu/courses; we also plan to make "greatest hits" of CS 61C lectures in past semesters available.
CS 61C students this semester will also be using CPS RF transmitters. We won't be using them.
Help sessions on UNIX, Emacs, VI, and general use of instructional resources are available this semester as they are every semester. These are heavily attended by (and almost mandatory for) students in the 61 series classes. The times, dates and locations are as follows. There are two sessions for each topic, one in the first week of semester and a repeat in the 5th week.
As an additional guide to the UNIX operating system, we suggest A Practical Guide to Solaris, by Mark Sobell (Benjamin-Cummings, 1999), available at a bookstore. There is also substantial online help available through http://inst.eecs.berkeley.edu.
We'll be meeting three times a week in 271 Soda: Mondays 1-3pm, Wednesdays 12-3pm, and Fridays 1-3pm. The online schedule incorrectly singles out the Wednesday 12-1 period as a "lecture". Lectures will happen on an impromptu basis, either addressing misconceptions that a large number of you are encountering, or introducing and providing structure for upcoming lab material; the Wednesday 12-1 period will essentially be the same as any other lab hour.
For most of the semester, the typical class period will involve a variety of activities, all provided online. It will start with a short quiz based on topics covered on the homework or in the preceding class; 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.
Homework will consist of programming exercises and occasional contributions to online discussions. Solutions to the programming exercises and contributions to the discussions will be submitted online. There will be five larger project assignments during the semester, to which some of the lab meetings will be devoted. 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.
While collaboration will occur in the lab sections, your work on quizzes, homework solutions, and projects must be done individually.
There will also be three exams, taken by CS 61C and 61CL students together. Two will be the evenings of Tuesday, October 16 and Tuesday, November 20. The other will be the final exam, Saturday, December 15 from 12:30 to 3:30pm (exam group 8). Please send mail to Mike Clancy if you have conflicts with these exam times.
The CS 61C Calendar lists an approximate sequence of topics and when they'll be covered, along with due dates for projects and exam offerings. You have 3 "slip days" to apply toward late project submission; homework solutions must be submitted at the designated time.
The programming tools and course material used in CS 61CL was devised by a research group of computer science and education researchers. To determine the effectiveness of these tools and material, we are gathering 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://fall07.ucwise.org, you should use a recent version of the Firefox browser, 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 section.
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. Card keys will not be available immediately, because we need an accurate list of who is in the class first; an announcement will be made in class when they are ready. If you have a new student ID card that can double as a card key, access to Soda on weekends or late at night is free; otherwise you can obtain a card key from 390 Soda for a $25 fee ($15 is refundable at the end of the semester).
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 are online, and thus may be taken outside of the lab room. You will receive credit for at most four quizzes taken outside of your lab section. Any quiz assigned in one lab section must be completed by the start of the next lab section to earn any credit.
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 0 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 lab activity will result in a negative grade on that activity, while cheating on a project or 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.