Welcome to Self-Paced CS 61A, Structure and Interpretation of Computer Programs (SICP)!
Because this is an experimental course, most of the details below are subject to change as we discover what doesn't work. Please try to be patient with any problems that come up.
Discussions and Labs
On Mondays, Wednesdays, and Fridays we will meet in 277 Soda for lab. On Wednesdays we will also have discussion. In order to receive attendance points on Wednesday, you must either be in lab or at a discussion. To see the discussion schedule corresponding to your unit track, please click on the corresponding link below:
Unit Track 0 - 2
Unit Track 0 - 3
Unit Track 1 - 3
Unit Track 1 - 4
Unit Track 3 - 4
Discussions will be one hour long, which is half of a lab section. On Wednesday during your lab time, if you are not in a discussion, then you should be in lab. Otherwise, you will NOT get attendance points. TAs will not be in lab during discussion times, and the lab will be run by lab assistants and readers. Since TAs are not present, you cannot take quizzes during discussion time.
You are free to attend discussions of different unit track than yours if you wish.
Attendance
You are expected to attend every class meeting. Attendance will be graded. You can get up to
[max points] = 2 * min(14, [number of lessons]) attendance points.
You will receive 0.5 points for every hour of lab you attend. (e.g., 2 hr of lab on Monday = 1 hr of lab on Monday and 1 hr of lab on Friday = 1 hr of lab and 1 hr of discussion on Wednesday = 1 attendance point.) You must be working on 61AS material during this time, and there should be a TA or lab assistant present at all times. You will also get points for attending discussions.
If you finish the course early, you should talk to your TA, and you will receive:
[max points] * [number weeks left] / 14 extra attendance points
For example, if Louis Reasoner is taking units 0-3, then [number of lessons] = 13 (lesson 0-1 doesn't count), so [maxpoints] = 2 * 13 = 26, i.e. Louis can get 26 attendance points.
Assuming Louis doesn't finish early, he would have to attend at least 2*26 = 52 hours of lab to get full credit.
You can only get attendance points for being in lab on Mondays and Fridays. On Wednesdays, you can get attendance points for going to discussion or lab.
Units and Lessons
The course is organized into five "units" numbered 0 through 4. Unit 0 is the introductory material for students whose prior experience does not include programming recursive functions. Units 1 through 4 correspond to chapters of the SICP textbook. This is a variable credit course; you earn one UCB credit unit for each course unit 0 through 4 that you complete successfully. For example, if you work at a slower pace, you can be graded on a two unit course and receive an A rather than on a four unit course and receive an F. You may then finish the course next semester. Completing Units 1-4 are the minimum requirement to fulfill the CS 61A requirement for majors.
You must complete at least up to and including Unit 2; you may sign up for CS 61AS again next semester to complete any remaining units. Unit 3 covers object oriented programming, a prerequisite for CS 61B. Completing Unit 3 this semester will allow you to take CS 61B next semester, but you will still have to complete Unit 4.
It is very important that you sign up for the correct units on Tele-bears. Specifically Units 1-4 count as CS 61AS credit, while Unit 0 counts as credit in different CS98/CS198 courses (CCNs TBA). For example, a student taking Units 0-2 should sign up for the Unit 0 CS 98 course and exactly 2 units of CS 61AS.
The online material is organized in terms of "lessons"; for the most part, one lesson is roughly equivalent to a week in the lecture-based version of 61A. Each lesson contains in-class lab activities and homework, mostly taken from the textbook, for you to do on your own. After you submit each homework assignment, you can see our solutions to the lesson's problems; you should be sure to read these and compare our solutions to yours to ensure that you understand the concepts of the lesson.
Each lesson begins with links to the reading for that lesson. Do the reading before you do the lesson! In addition to the textbook, you should read Brian's lecture notes, also online. A good learning method for a lesson is to read the lecture notes, then go through the edX, then read SICP. SICP is an awesome book, but it can be a little dense. Each lesson in units 1-4 also includes video from a previous semester of the lecture-based 61A. Don't watch the videos in the lab! These are for extra practice and are not required on any means, but they're available for you to watch at home.
The purpose of the homework and exercises in the Lesson is for you to learn the course, not to prove that you already know it. Therefore, homework will be graded based on effort rather than correctness. This being said, any homework or project that does not load into stk will get an automatic 0. This is to make sure that you always test your code by loading the file into scheme.
Some of the homeworks include problems labelled as "Extra for Experts" or "Challenge Problems." These problems are entirely optional; do them only if you have finished the regular assignment and want to do something more challenging. There is no extra credit for these problems.
Quizzes
After completing each lesson and reading the online solutions, you will take an online quiz on the lesson. The link to the quiz system will be under Resources > Course Material Resources, or you can click here. **NOTE: Quizzes for lesson 4, 8, and 9 are still paper quizzes. Ask a TA to take those quizzes.**
Our quiz system is still rather new and can have bugs, typos, etc. Please be patient with it, and give us feedback when you can!
Each quiz is worth 10 points, and will be graded and returned to you by the next lab section. You have one retake per quiz, where the retake will consist of entirely different questions. Your grade for the retake is capped at 9 points. We use your retake grade even if you scored higher in the first one. If you don't pass a quiz the second time, email your TA so they can help you get back on track. The quizzes are closed book, and you are allowed one cheat sheet for each quiz (double-sided).
Course Credits and Grading
Grading is done using a point system. Each unit has approximately 70 points. Here are the point distributions for assignments and exams:
Homework: 2 points each
Attendance: [max points] = 2 * min(14, [number of lessons])
Quizzes: 10 points each
Project 1: 15 points
Project 2: 15 points
Project 3: 25 points
Final Exam: ~10 points per unit
If you have a complaint regarding grades, please email both your TA and your reader.
To determine your grade, we add up the points scored on the units that you completed divided by the maximum possible for those units. The letter grade is based on that fraction:
A+ 94-100% A 92-93% A− 90-91%
B+ 84-89% B 79-83% B− 74-78%
C+ 71-73% C 69-70% C− 67-68%
D+ 63-66% D 60-62% D− 57-59%
The range of scores within the B range is deliberately larger than the range for other grades; the expectation is that the average grade will be somewhere in the B range.
Deadlines
We've established deadlines for completing each unit here. You are fully responsible for keeping track of your own deadlines.
Notice there are deadlines for each Lesson and a separate hard deadline for each Unit. The Lesson deadlines are for homeworks. You start the semester with 6 slip days that you may use at any time to get an “extension” on an assignment. Once you use up all of your slip days, any late homeworks will receive no credit. However, if you get back on track with the deadlines, you get all of your slip days back. Getting back on track entails meeting the homework deadline for a particular assignment and passing all tests for the autograder for that particular assignment.
The hard deadlines dictate quiz deadlines for all Lessons in that Unit (including retakes) and the corresponding project. You cannot use slip days for quizzes or projects. For projects only, you are allowed to submit up to a week after the Project/Quiz Deadline, but with a penalty. Projects that are one day late will lose 5% of the earned grade. Projects that are 2-3 days late will lose 25% of the earned grade. Projects that are 3-7 days late will lose 50% of the earned grade. Projects that are more than 7 days late will receive no credit.
Staff and Other Human Resources
The official instructor of this course is Professor Hilfinger. This class has three TAs: Marion Halim, Judy Wang, Reia Cho and four readers: Allen Guo, Alex Yang, Caryn Tran, Yuan Yuan.
Another resource for class-related questions is our online discussion group Piazza, where you can get answers from other students and from the course staff. Don't post individual administrative questions ("Why did I get 5 points...") on the discussion group. To enroll in the group, follow this link.
Software
If you have a home computer, you may want to get a Scheme interpreter for it. The Computer Science Division can provide you with free versions of Scheme for Linux, Windows, or MacOS. The distribution also includes the Scheme library programs that we use in this course. You can download copies of this distribution here.
If you have any trouble installing the software, ask your TA for help. The install packages are quite old and some software rot can be expected.
Once you've downloaded the software, be sure that you run the application called "stk-simply" rather than just "stk." (The lab computers are set up so that stk does the right thing, but your home computer isn't.)
Textbook(s)
The SICP textbook, by Harold Abelson and Gerald Jay Sussman with Julie Sussman, is available online (free) here. It is the best computer science book ever written! The writing is terse; each sentence repays careful reading.
Those students whose prior experience does not include programming recursive functions, or does not include the Scheme language, or does not include computer programming at all, will start with excerpts from Simply Scheme, by Brian Harvey and Matthew Wright, a book written specifically as a "prequel" to SICP. The entire book is also available online here.
There are also some online documents that are required reading in certain lessons. These can usually be found in the intro section for each lesson. For everything you ever want to know about the course, try the "Old 61A Reader" link under the "Resources" tab. Note: The "Reader" is taken from the course reader of the old lecture-based 61A, so some of it isn't quite right for this course. In particular, this course doesn't have midterms, but the sample midterms in the reader provide examples of the kind of questions we ask in the lesson quizzes.
Academic Honesty
We believe that most students come to Berkeley because they want to learn, and therefore understand that ultimately it is you who suffer if you turn in someone else's work as your own.
Nevertheless, there is the possibility of misunderstanding, because in this class (as in most others) you are encouraged to learn from each other as well as from the course staff. That's why it's worth spelling out the rules.
Each lesson in this course has exercises labelled "Lab Activity" and other exercises labelled "Homework." The lab exercises are not turned in for credit. You should try each exercise on your own first, but you are welcome to ask anyone for help if you need it. (But bear in mind that in a self-paced course the student next to you may be working on something different from you.) Lab exercises are an introduction to the lesson's ideas, and the goal is for you to understand what they're asking by the end of the lab activity. So working together is fine, but don't just blindly type in someone else's solution without understanding it.
For the homeworks, remember that you are graded on effort, not on correctness. If two students turn in identical solutions to a homework, that just tells us that at least one of them didn't make the effort to learn. You are welcome to discuss the homework with anyone, but the solution you turn in must be entirely your own. To clarify, you may look over other students' lab code, but not homework. You may only share project code with your partner, for partner projects.
For programming projects, quizzes, and the final exam, of course, it is a serious violation of academic honesty (which can get you suspended or expelled from the university) to give or accept answers to or from another student. (Exception: Some programming projects can be done in pairs. Your TA will explain this when you get to them.)
If you are found to be cheating in this course, we will always ask you to come in and discuss the situation and give you a chance to explain. No one will be accused of cheating unless there is sufficient evidence. The first offense results in at minimum a negative score for the assignment. If you are found to be cheating a second time, we will not hesitate to fail you, report you to the center for student conduct, and then also call your parents.
This semester, we will run submitted assignments through a software plagiarism system that detects similar submissions. This will catch both copying from an online source and copying from peers. The system is very good at what it does. Don’t test it.
Final Thoughts
No syllabus should end with a cheating policy, so here's a few final thoughts/advice: this course attempts to teach a lot of the big ideas in computer science. If you ever feel like you're drowning, talk to a TA. 61AS is awesome, and you're taking this class (hopefully!) to learn about computer science, so have fun, learn a lot, and always respect the data abstraction!