CS 3 General Information

Introduction

Welcome to CS 3, "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 3 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 3.

You learn programming by doing it rather than by listening to us talk about it. Thus CS 3 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.

Staff

The instructor is Mike Clancy (clancy@cs.berkeley.edu, 779 Soda, 642-7017). His administrative assistants are Cindy Palwick and Sue DeVries in 385 Soda. There are also several teaching assistants who run the lab sections, readers who grade your homework, and lab assistants who work with you during the lab sections. Contact information for the staff will be posted on the class web site shortly.

Books and other course material

There are two required books for the course: Simply Scheme, by Brian Harvey and Matt Wright (second edition, MIT Press, 1999), is available at local bookstores; CS 3 Readings is available at Copy Central, 2483 Hearst Avenue.

Class activities and scheduling

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

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

At present, each has room for a few more students. 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 Tuesday and Wednesday lab sections will meet in room C30 Hearst Field Annex. All the Thursday and Friday lab sections, starting January 29, will meet in room C50 Hearst Field Annex. (The Thursday/Friday sections on January 22 and 23 will meet in C30.)

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 will 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. In the Thursday and Friday sections, t.a.s may set up impromptu discussion sections to clarify student confusion they've seen earlier in the week. 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 project program.

A short set of homework exercises will be typically 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. 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.)

Lectures, on Mondays from 5 to 6 pm, will introduce and motivate new material or review confusion noticed during the previous week's lab sections. Each lecture will be available online a day after it is given; point your browser at webcast.berkeley.edu/courses for more information.

There will also be three exams. Two will be in class, on Monday, February 23 and Monday, April 12. The other will be the final exam, Thursday, May 20 from 5 to 8pm.

In CS 3, 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 take part in an hour-long interview with a staff member, and to complete several surveys through the course of the semester.

Computing

Most of your work for this course will be done in class in C30 and C50 Hearst Field Annex. (We share those rooms with CS 61A.) Outside of class, you may work in any EECS lab room in which a lab section is not meeting. For a $25 fee ($15 is refundable at the end of the semester), you may obtain a card key to work in C30 and C50 on weekends or late at night. To do work for this course on your own computer, you will need to use the Netscape 6.2 or Mozilla browser, with a plugin that supports Java 1.2. Earlier versions of Netscape and any version of Internet Explorer will not work. If you use a Macintosh, it has to be running OS X.

Grading

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%

There will be more than 40 points worth of scaled homework points to earn; your homework score, however, will be capped at 40. Similarly, there will be more than 20 points worth of scaled quiz points to earn, but at most 20 will count toward your course grade.

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 on Tuesday/Wednesday are due at the start of the Thursday/Friday lab section; homework assigned on Thursday/Friday are due at the start of the Tuesday/Wednesday lab section. You will not earn any credit for any homework exercise submitted more than one class meeting after it is due, or for any quiz completed more than one class meeting after it's 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.

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 included in CS 3 Readings.)

week of ... lecture topics/activities lab topics reading
January 19 (holiday; no lecture) elementary Scheme programming Simply Scheme chapters 3-5
January 26 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
February 2 understanding large programs; introduction to case studies working with the "Difference Between Dates" program "Difference Between Dates" case study, part I
February 9 good programming habits; a problem solving example working on the "Difference Between Dates" miniproject "Difference Between Dates" case study, part I
February 16 (holiday; no lecture) elementary recursive programming Simply Scheme chapters 11-13
February 23 first midterm exam more recursive programming "Difference Between Dates" case study, part II
March 1 examples of problem solving with recursion more recursive programming Simply Scheme chapter 14; "Roman Numerals" case study
March 8 examples of problem solving with recursion working on the "Number Spelling" miniproject Simply Scheme pages 233-234
March 15 introduction to higher-order procedures working with higher-order procedures Simply Scheme chapters 8-9
(spring break)
March 29 extending sentences to lists more working with higher-order procedures; working with lists Simply Scheme chapters 10, 17, and 19
April 5 examples with generalized lists and higher-order list procedures working with complicated recursive code Simply Scheme chapters 15, 16, and 18
April 12 second midterm exam working on the "Doctor" miniproject Simply Scheme chapters 15, 16, and 18
April 19 background for projects start on project Simply Scheme chapter 20
April 26, May 3, May 10 to be announced work on project

Alternative courses

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

CS 3S is the self-paced version of CS 3. 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 C10 Hearst Field Annex.

Eng 77 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 3). The programming language used is Matlab.

In IDS 110, students use programming tools like spreadsheets and data base managers as well as write programs. Programming in IDS 110 is done using Javascript. IDS 110 also has scheduled lab sections, held in the Tolman Microcomputer Facility in 1535 Tolman. Course staff make an effort to get students with similar interests to work together in discussion and lab sections. IDS 110 satisfies the computing course requirement for entry into the School of Business Administration.

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 3; thus students with no previous experience often take CS 3 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 3.