CS 61CL General Information

Instructor:
Prof. David E. Culler

culler@cs.berkeley.edu
http://www.cs.berkeley.edu/~culler
Office Hours: M 11-12 and W 9-10 in 413 Soda Hall
TAs:
Andrew Konwinski
Sections: 102 Tu/Th 11-2, 103 Tu/Th 2-5
Email: X at Y where X=andyk and Y=cs.berkeley.edu

Tanushree Jindal Sections: 101 Tu/Th 8-11, 106 W/F 11-2
Email: X at Y where X=tanushree.jindal and Y=gmail.com

Michael Matloob Sections: 105 W/F 8-11
Email: X at Y where X=matloobta and Y=gmail.com

Jerry Zhang Sections: 104 Tu/Th 5-8
Office Hours: (HKN office hours) TuTh from 2:00-3:00pm in 345 soda
Email: X at Y, where X=zhangz and Y=berkeley.edu
Website: http://inst.eecs.berkeley.edu/~cs61cl-tc
Readers:
Myo Nyi Nyi
Lab sit in time: Tue 10am-12pm
Email: X at Y, where X=myonyi and Y=berkeley.edu
Inst ID: cs61cl-rc
Richard Shin
Lab sit in time: Tue 2:30pm-3:30pm, Wed 10am-11am
Email: X at Y, where X=ricshin and Y=berkeley.edu
Inst ID: cs61cl-rb
Anurag Jain
Lab sit in time: Tue 5pm-6pm, Wed 11am-12pm
Email: X at Y, where X=anuragjain0702 and Y=gmail.com
Inst ID: cs61cl-rd

Welcome to CS 61CL, "Machine Structures".

What's CS 61CL all about?

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 lower-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 C programming language, its mapping to the
language of a a particular computer, the MIPS R3000, and the structure of this machine in some detail, down to the level of the design of the processor's on-chip components.  And to make this more manageable, at times we will work with a simplification of this machine designed for the course - CAL16.

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. However, we will gladly help you decide if this is the right class for you to be in.

What's the difference between CS 61CL and CS 61C?

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.

Staff

The instructor is Prof. David Culler (culler@cs.berkeley.edu, 463 Soda, 643-7572.

The teaching assistants and the lab sections they're tentatively supervising are listed in the table above.

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.

Books and other course material

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.

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.

Class activities and scheduling (class schedule)

There will be a one-hour lecture each week on Fridays from 3 to 4pm in 4 LeConte.  As this is a difficult time for many, we are going to consider moving the lecture to wednesday and making webcasts available.  The Fall 2008 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.

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: There will be two midterm exams and a final.  Midterms will be on Wednesday, October 7 and Monday, November 9.  We schedule them well in advance so that you can arrange your schedule to suit.  The final is as shown in the schedule of classes,  Exam group 8. Tuesday December 15 12:30-3:30.

Labs: 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, and WF 11-2pm.  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/Wednesday section will start with a TA lecture and discussion.

Quizzes: The Thursday/Friday section of Lab 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. You must attend the lab in person and take the quiz in order to earn credit. The Thu/Fri lab 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.  The end of period quiz will not count towards your quiz grade.

Homework: A short set of homework exercises will often be assigned at the end of the 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 may, in some cases, 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.

Homework solutions must be submitted at the designated time.

Here's a typical weekly routine for a segment of material.  It wont always line up this nicely, but close.

period activity
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

Projects: There will be four projects. You have about 3 weeks to do each, as shown on the schedule. They will be posted early, so you will have plenty of time to think about your approach.  They are intended to give you an opportunity to carry out a larger implementation study than you have time for in lab. You have 3 "slip days" to apply toward late project submission (don't use them all at once.). Slip days are intended to be for last minute crises. Your slip days can only be used in in full day increments, always rounding up (i.e. you cannot apply 1.5 slip days to project 1 and 1.5 slip days to project 2). Slip days will be applied automatically to projects based on submission time until you have spent all slip days. For example, if you submit a solution to project 1 48 hours and 1 minute after the deadline you will automatically use all 3 of your slip days and will not be able to later decide to apply any of those slip days to a later project. 

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.

Computing

Most of your work for this course will be done in class in the lab in 200 Sutardja Dai Hall (SD200).  This lab has 30 MacPro workstation machines. 

To access the CS 61CL Course Portal, http://www.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 SD200 lab will be open for use during scheduled class lab time only, or when otherwise announced by class instructors or TAs or staff. However, you can work remotely using the computer labs in Soda hall. These 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.

Grading

The various course activities will contribute points to your grade as follows.

activity course points percent of total grade
projects 48 24%
all other homework scaled to 28 14%
all quizzes scaled to 20
10%
both midterm exams   56 (28 each) 28% (14% each)
final exam 48
24%

Your quiz score will be capped at 80% of the maximum total points, then scaled to 20. Similarly, your homework score will be capped at 90% of the maximum total points, then scaled to 28.  This gives you a chance to recover on a topic that you did not understand.  If you struggle on a homework or quiz, go to your TA to get additional help with the material.

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.

When peer evaluations are due, the are treated like homework. When peer evals are assigned for a HW, you will be required to do two peer evals for that homework, and they 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:

points 190-200 175-190 165-175 155-165 140-155 130-140
grade A+ A A– B+ B B–
points 120-130 110-120 100-110 80-100 <80
grade C+ C C– D F

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 as described below in the section titled "Policy on collaboration and cheating."

Re-grading

If you would like to have a homework, project, or exam regraded, you may submit a request for a regrade in writing (email is okay). Please send your request to your TA, the reader who graded the assignment, and the professor. Your request should also include an explanation of why you would like a regrade. You may use regrading to point out a minor change to that would need to be made to the code, and the readers will regrade the assignment and then give you the greater of the following: 1) your original score, 2) your new score * 90%.

Office Hours

With the lab centric format, much of the office hour function will take place in lab.  We encourage you to talk to your TA to get clarification of material that you don't understand, prepare for quizes and exams, etc.  The instructor also will drop into the lab frequently to meet and talk with students.  Please don't feel shy about asking questions in lab, chances are that if you didn't understand something others are confused on the same point.  However, if for any reason you have matters that you prefer to discuss in private, or just have questions outside of lab, do not hesitate to come to instructor office hours.  TAs will provide additional office hours by appointment, since they have so much time scheduled in the lab.

Policy on collaboration and cheating

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.