This page describes how CS 61AS works.

There will be occasional updates to this page. Any major changes will be announced by the instructors in lab and on Piazza.


CS 61AS is an introductory course in computer science (CS). Like CS 61A, we discuss techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming.

Unlike CS 61A...

Our primary programming language is Racket, a modern descendant of Scheme. We'll also examine the Python programming language briefly in the second half of the course.

What Does "Self-Paced" Mean?

Contrary to what the course name says, CS 61AS isn't entirely self-paced. All assignments have deadlines, and students are expected to attend lab regularly. It would be more accurate to describe CS 61AS as a lab-based alternative to CS 61A.


CS 61AS is divided into five "units" numbered 0 through 4:

CS 61AS is a variable unit course. For each unit you complete successfully among units 1-4, you will receive one UC Berkeley credit unit for CS 61AS. For example, if you wish to work at a slower pace, you can take the first two units, Unit 1 and 2, and receive 2 UCB credit units. You may then finish the course next semester. (Update: Spring 2016 is the last offered semester and only supports Units 3 and 4.)

Unit 0 is strongly recommended for students who have little or no prior experience with CS. In particular, you should consider taking Unit 0 if you have never programmed recursive functions before.

Because Unit 0 teaches introductory material not covered in regular CS 61A, completing Unit 0 will not count for CS 61AS credit units. Instead, students who successfully complete Unit 0 will receive one CS 98 ("Directed Group Study") credit unit.

For CS majors, taking Units 1-4 (over one or multiple semesters) fulfills the same requirement as taking CS 61A.

Unit Tracks

This semester, you may select from one the following unit tracks:

These tracks are also shown on the home page. Use the links next to "Change Tracks" to customize the home page for your chosen unit track.

It is very important that you sign up for the correct units on Tele-BEARS. We will go over how to do this in class.


Our official textbook is available on this website. You can access it by clicking "Textbook" above, or by clicking here.

Our secondary textbook is Structure and Interpretation of Computer Programs by Abelson and Sussman. You can access it online here. We will refer to it for readings and select homework exercises.

Occasionally, your external readings will contain information that is outdated or otherwise incompatible with Racket. When this happens, you should defer to the explanation given in our official course textbook. Feel free to ask for clarification on Piazza.


Our online textbook contains 17 lessons. Each lesson consists of reading material and a homework assignment.

Lessons also link to external readings drawn from SICP and old CS 61A lecture notes. It is highly recommended that you complete these readings before starting the lesson material.


Homework assignments—worth two points each—are graded based on effort, not correctness. That said, we expect you to test your code thoroughly before submitting it. You may collaborate with your peers to complete your homework, but you may NOT copy. Identical solutions to any homework problem is considered cheating.

Any homework file that does not load in the Racket interpreter will receive NO CREDIT.

If you're unclear on what that means, please ask a TA for clarification.

Some homework assignments include "Extra for Experts" problems. These problems are entirely optional—do them only if you have finished the regular assignment and want to do something more challenging. No extra credit is given for completing these problems.

Labs and Discussions

Lab is held Monday, Wednesday, and Friday in 277 Soda Hall. During lab, you should work on CS 61AS course material. Should you have any questions regarding the material or the course, please raise your hand and somebody will assist you.

Discussions are generally held on Mondays for the Unit 3-4 Track and Fridays for the Unit 4 track. During discussions, TAs will guide you through worksheets that recap the lesson you're working through. You are free to attend discussions of different unit track than yours if you wish.

Discussion schedules, worksheets, and solutions are posted on the home page.


Lab and discussion attendance is graded. You receive 0.5 points for every hour of lab or discussion you attend. You must be working on 61AS material during this time, and there should be a TA or lab assistant present at all times.

The maximum amount of attendance points you can receive is shown below:

Track Max Attendance Points Hours Required to Reach Max
Units 3-4 16 points 32 hours (about 2-3 hours per week)
Unit 4 8 points 16 hours (about 1-2 hours per week)

If you finish the course early, talk to your TA to receive [max points] * [number weeks left] / 14 extra attendance points.

Quizzes and Retakes

After completing each lesson, you will take an online quiz on the material you learned in that lesson. In other words, there is one quiz for each lesson, and each quiz is worth 10 points. Quizzes are closed-book, but you may use one double-sided cheat sheet on each quiz. Completed quizzes will typically be graded by the next lab section.

You may retake each quiz one time. The retake quiz will consist of entirely different questions. Your grade for the retake will be capped at 9 points, and your retake grade will replace your original grade, even if you scored higher the first time. Retakes for any particular quiz cannot occur immediately after finishing the quiz. You must review the material for 20 min at the least, although back to back retakes are not encouraged.

If you fail to pass a quiz twice, you should email your TA so they can help you get back on track.

All quizzes and retakes must be completed before the hard Unit deadline. To access the quiz website, click the "Quiz System" link in the top right corner.

Quiz Corrections

  • You must correct the most recently taken versions of your quizzes even if the score is lower.
  • Quiz corrections will only be accepted in the correct format using the provided TEMPLATE.
  • You must complete corrections for every incorrect answer in quizzes from the entire unit to earn back points on any one quiz.
  • A physical copy of corrections are due on the Unit deadline by the end of class (12PM). Please turn in as a stapled packet.
  • Corrections earn back 1/2 credit of points lost; corrected quizzes capped at 8 points.

You have the option to correct ALL the quizzes for any unit to earn back missed points. This is an all or nothing offer. For example, if you want points back on quiz 7, you must correct all quizzes from Unit 3.

Corrected quizzes are capped at 8.0 points. You will earn back 1/2 of the missed points for every completely corrected quiz. Quiz corrections for a unit are due on the unit deadline and must be turned in as a packet in person to your TA with corrections for EVERY QUIZ IN THAT UNIT.

While you may not copy external sources, you may consult learning material to do your quiz corrections. Collaboration, however, is strictly not allowed and will be considered cheating. You may NOT consult nor share your quizzes and quiz corrections with any other student. Furthermore, you should not directly consult your TA to correct quizzes (that's your work to do).

There will be no extensions to the quiz correction due date so please plan accordingly and take your quizzes well before the Unit quiz deadlines if you want to take advantage of quiz corrections.

Please download and use this TEMPLATE to format your quiz corrections. Corrections may be handwritten or printed. Please write neatly and legibly otherwise your corrections will not be accepted. Please turn in a physical copy to your TA.


Your course grade is computed using a point system. Each unit is worth approximately 70 points. Our point distribution for assignments and exams is shown below:

Assignment Max Points
Homework 2 points each
Attendance See above (2 points [4 hrs] per lesson)
Quizzes 10 points each
Projects 1 and 2 15 points each
Projects 3 and 4 25 points each
Final Exam 18 points per unit

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 "B" scores is deliberately larger than the range for other grades. We expect the average grade to be somewhere in the B range.

Your assignments are graded by readers; their names are listed on the staff page. If you have a complaint regarding grades, please email both your TA and your reader.

Deadlines and Slip Days

This is a fast-paced course, and we expect you to keep track of your own deadlines. Deadlines for each unit track are posted here. You can also find them on the home page.

Each unit has a hard quiz deadline. You must turn in all of the quiz related assignments for that unit by that date. This includes quizzes, quiz retakes, and quiz corrections.

Each unit also has a hard project deadline. Projects turned in after the hard project deadline will be penalized as follows:

*168 hours is 7 days.

There is also a soft homework deadline for each homework assignment. You may turn in a homework assignment after the soft deadline, as long as you have sufficient slip days remaining.

You start the semester with 6 slip days. 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.

Slip days are only for homework assignments, and cannot be used for quizzes or projects.

Staff and Other Human Resources

The names of our current TAs, readers, and lab assistants are listed on the staff page. The official instructor of this course is Professor Paul Hilfinger, but please do not contact him for anything related to CS 61AS.

Please join our online discussion group on Piazza, where you can get answers from other students and from the course staff. Individual administrative questions ("Why did I lose points on...") should be emailed to TAs or posted privately on Piazza.

We will also be posting important announcements on Piazza, so be sure to check for updates regularly.


If you wish to work from a home computer, please follow the setup guides located on the resources page.

Once you've downloaded the software, you can open the Racket interpreter by typing racket into your terminal.

Academic Honesty

As you explore the online lessons, feel free to work with your classmates—after all, we expect you to learn as much from each other as from instructors. You may work with others on all textbook pages that aren't labelled "Homework" or "Project".

Homework assignments should be completed individually. If two homework assignments are too similar, we will assume academic dishonesty and neither student will receive any credit for the assignment. You may discuss homework assignments with other students, but the answers you turn in must be entirely your own.

For partner projects, you may only share code with your partner. Projects 3 and 4 are the only partner projects. Anyone who is not your partner should not be looking at your code at all.

Here is a non-exhaustive list of behaviors that qualify as cheating:

If you are not sure if a behavior constitutes cheating, ask a TA.

For quizzes and final exams, it is of course a serious violation of academic honesty to give answers to or accept answers from another student.

Any act of cheating will receive the harshest punishment possible. The first offense results in at minimum a negative score for the assignment. If you are found to be cheating a second time, you will fail this course and you will be reported to the Center for Student Conduct.

We run all submitted assignments through an anti-plagiarism system that detects similar submissions—including those online. This system has been developed continuously over the past 20 years for the explicit purpose of catching plagiarism in CS classes. Do not assume you can outsmart it. In particular, changing minor aspects of copied code (like variable names or indentation) still counts as cheating, and will be detected.

Final Thoughts

To end on a happier note, here are a few final pieces of advice: this course attempts to teach a lot of the big ideas in computer science. If you ever feel like you're drowning in the material, do not hesitate to talk to a TA! CS 61AS is a great introductory course that will ease you into all the amazing concepts that future CS courses will cover, so remember to keep an open mind, have fun, and always respect the data abstraction!

Table of Contents