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".
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.
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 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.
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.
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.
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.
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."
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.
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.