CS 3L General Information


Welcome to CS 3L, "Introduction to Symbolic Programming". This course will introduce you to computer programming, using the Scheme programming language (a dialect of Lisp). Examples and programming assignments will be drawn from nonnumeric ("symbolic") applications.

The only prerequisite to CS 3L is high school algebra, specifically familiarity with variables and simple functions. We don't assume that you have had any previous computing experience. If you have done some programming, specifically involving the technique of recursion, you should seriously consider taking CS 61A instead of CS 3L.

You learn programming by doing it rather than by listening to us talk about it. Thus CS 3L is organized to maximize your time designing and writing programs and experimenting with the programming environment. You'll work hard, but learn a lot. The lab sections and online activities are designed to help you get feedback at the time you need it; we hope to ensure that you're working productively rather than flailing around.


The instructor is Mike Clancy (clancy@cs.berkeley.edu, 779 Soda, 642-7017). The teaching assistants and the lab sections they're tentatively supervising are listed in the table below.

Matthias GoernerWF 11am-2pm, WF 2-5pm
Courtney WangTuTh 2-5pm, TuTh 5-8pm
Jennifer WangTuTh 8-11am, WF 8-11am
David ZengTuTh 11am-2pm

There are also several readers who grade your homework, and lab assistants who work with you during the lab sections. Contact information for all the staff will be posted on the class web site shortly.

Books and other course material

There is one required book for the course: Simply Scheme, by Brian Harvey and Matt Wright (second edition, MIT Press, 1999), is available at local bookstores. It is also available online. The book is still in copyright, and in print. The online version is for students' personal use only, not for redistribution.

Other readings are also available online.

You should dedicate a notebook to CS 3L, 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.

Class activities and scheduling

You are each assigned to a lab section that meets twice a week for three hours each meeting.

section time
11 TuTh 8-11am
12 TuTh 11am-2pm
13 TuTh 2-5pm
14 TuTh 5-8pm
15 WF 8-11am
16 WF 11am-2pm
17 WF 2-5pm

At present, only the WF 8-11am section has room. You must attend the section to which you are assigned; if you want to move to another lab section, you must get the approval of the t.a.s in charge of both the section you wish to leave and the one you wish to transfer to.

All the lab sections will meet in room 273 Soda Hall.

For most of the semester, the typical class period will involve a variety of activities, all provided online. In the Tuesday and Wednesday labs, 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. In the Thursday and Friday labs, t.a.s will run discussion sections to clarify student confusion they've seen earlier in the week. In the rest of the section, you'll be reading, experimenting, brainstorming, evaluating each other's ideas, and sometimes working with partners. There will be three "mini-projects" during the semester, to which some of the lab meetings will be devoted. The last several weeks of the semester will be less structured, as you'll be working on a larger project program.

A short set of homework exercises will be typically be assigned at the end of most labs. The exercises will involve writing or analyzing programs and contributing to online discussions about typical programming misconceptions. Answers to the programming exercises and contributions to the discussions will be submitted online. You should expect to put in 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. Some of the work later in the course, along with the project, may be done in partnership with other students in your section. (Cross-section partnerships will not be allowed.)

You have 72 "slip hours" to apply toward late mini-project and project submissions. (Don't use them all at once.) Homework solutions must be submitted at the designated time.

Lectures, on Wednesdays from 5 to 6 pm, will introduce and motivate new material. CS 3L lectures will not be webcast this semester. However, "greatest hits" from CS 3/3L lectures are accessible through the Weiner Lecture Archive.

There will also be three exams. Two will be in class, on Wednesday, September 30 and Wednesday, November 4, both from 5 to 7pm. (Note the extra hour.) The other will be the final exam, Thursday, December 17, from 12:30 to 3:30pm.

In CS 3L, you will be using programming tools and course material 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 273 Soda. Outside of class, you may work in any EECS lab room in which a lab section is not meeting.

To access the CS 3L Course Portal, http://fall09.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 course 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 3L 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
project 16 8%
all mini-projects 24 (8 each) 12% (4% each)
all other homework scaled to 24 12%
all quizzes scaled to 16 8%
both midterm exams 60 (30 each) 30% (15% each)
final exam 60 30%

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

Your letter grade will be determined by total course points, as shown in the following table:

points 185-200 165-185 155-165 145-155 135-145 125-135
grade A+ A A– B+ B B–
points 115-125 105-115 95-105 75-97 <75
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 at least by a 0 on the work in question and notification of the incident to the Office of Student Conduct.

Approximate topic/activity schedule

Coverage will proceed roughly as follows. (Case studies are available online.)

week of ... lecture topics/activities lab topics reading
August 24 introduction to CS 3L elementary Scheme programming Simply Scheme chapters 3-5
August 31 review of quoting, words, and sentences; understanding a description of the format of a conditional expression elementary Scheme programming with conditionals Simply Scheme chapter 6
September 7 understanding large programs; introduction to case studies working with the "Difference Between Dates" program "Difference Between Dates" case study, part I
September 14 good programming habits; a problem solving example working on the "Difference Between Dates" miniproject "Difference Between Dates" case study, part I
September 21 introduction to recursion elementary recursive programming Simply Scheme chapters 11-13
September 28 first in-class exam more recursive programming "Difference Between Dates" case study, part II
October 5 examples of problem solving with recursion more recursive programming Simply Scheme chapter 14; "Roman Numerals" case study
October 12 examples of problem solving with recursion working on the "Number Spelling" miniproject Simply Scheme pages 233-234
October 19 introduction to higher-order procedures working with higher-order procedures Simply Scheme chapters 8-9; "Difference Between Dates" case study, part III
October 26 extending sentences to lists more working with higher-order procedures; working with lists Simply Scheme chapters 10, 17, and 19
November 2 second in-class exam working with complicated recursive code Simply Scheme chapters 15, 16, and 18
November 9 (holiday; no lecture) working on the third miniproject Simply Scheme chapters 15, 16, and 18
November 16 background for projects start on project Simply Scheme chapter 20
November 23, 30 to be announced work on project

Alternative courses

Other courses in which you can learn to program include CS 3S, Eng 7, and CS 61A.

CS 3S is the self-paced version of CS 3L. Students may enroll for fewer than four units of CS 3S, in order to take only a portion of the course or to spread the complete course over more than one semester. (You need only three units of CS 3S to prepare for CS 61A, and two units would probably suffice.) The textbooks used in CS 3S differ from those we'll use, so if there's a chance you might want to switch, you should think about switching sooner rather than later. For further information, contact the Self-Paced Center, 642-9920, in room 200A Sutardja Dai Hall. Course orientation meetings are Wednesday, August 26 and Monday, August 31, both from 6 to 7pm in 306 Soda Hall.

Eng 7 is an introductory course for science and engineering students. Its prerequisite is Math 1B. Programming exercises and class examples are drawn mostly from numeric applications (as opposed to the nonnumeric applications covered in CS 3L). The programming language used is Matlab.

CS 61A is the first of a sequence of courses aimed at students with a particular interest in computer science. Its prerequisite is computing experience roughly equivalent to the first half of CS 3L; thus students with no previous experience often take CS 3L or 3S to prepare for CS 61A. Scheme is also used for programming in CS 61A. If you've done more than a little programming, particularly if your experience includes significant exposure to recursion, you should take CS 61A rather than CS 3L.

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 3L 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-centric 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.