The Course Website
Welcome to CS 61A! We have various resources on the course site which you might find helpful as you go through the course during the semester.
Here's a summary of some of these resources, where you can follow along the navigation bar at the top of the page.
- Weekly lab party, discussion, and tutoring section schedule.
- Weekly office hours schedule where you can get help from course staff.
- The list of everyone on course staff.
Topical Resources + Past Exams:
- Problems from past exams, grouped by topic or by semester. Some past exams also have video walkthroughs. These are videos made by current or previous CS 61A staff where the staff member will walk through how they approached the exam problem as they solve it. You can also find various past study guides here, made by current or by previous CS 61A staff.
- Also known as PythonTutor, this allows you to run Python code and visualize the corresponding environment diagram for the execution of the code.
- The CS 61A web editor.
You can run doctests and use the interpreter.
It has support for Python, Scheme, Lark, and SQL.
It also visualizes environment diagrams following the execution of your
code for debugging, and can visualize trees, lists, and linked lists.
Any files you save here get saved on your local storage.
You can also edit okpy backups, but you cannot run
- The CS 61A web editor. You can run doctests and use the interpreter. It has support for Python, Scheme, Lark, and SQL. It also visualizes environment diagrams following the execution of your code for debugging, and can visualize trees, lists, and linked lists. Any files you save here get saved on your local storage. You can also edit okpy backups, but you cannot run
- The course forum. Feel free to ask questions about the content or logistics here.
- Policies for the course regarding DSP and accommodations, assignments, grades, and other parts of the course.
- You can read about extensions here, and reference the extension form, which is linked in the "Extensions" section of the syllabus.
- You can read about accommodation appointments, and reference the accommodation appointments calendar, which is linked in the "Accommodation Appointments" section of the syllabus.
- Various ways you can contact course staff if you have questions, or concerns.
- Feedback forms for the instructor, staff, or for the department.
- The extension form and accommodation appointments calendar are linked here, in addition to being listed on the course syllabus.
- If a student or staff member makes you feel uncomfortable at any point during the semester, that doesn't represent everyone, and that incident should be reported. The contact page has the anonymous feedback form and the EECS contact form.
You can also draw on the site for discussion pages! To do so, you can click on the pencil icon on the top left.
Lost on the Moon
Your spaceship has just crashed on the light side of the moon. You were scheduled to rendezvous with a mother ship 200 miles away on the lighted surface of the moon, but the rough landing has ruined your ship and destroyed all the equipment on board except for the 15 items listed below. (Note: you are able to consume food/water/medicine inside your space suit).
Your crew's survival depends on reaching the mother ship, so you must choose the most critical items available for the 200-mile trip. Your task is to rank the 15 items in terms of their importance for survival. Place a number 1 by the most important item, number 2 by the second most important, and so on, through number 15, the least important.
|Item||Your Rank (1)||Group's Rank (2)||NASA's Rank (3)||| (3) - (1) |||| (3) - (2) ||
|Box of matches|
|50 feet of nylon rope|
|Solar-powered portable heating unit|
|Two .45 caliber pistols|
|One case of dehydrated milk|
|Two 100-pound tanks of oxygen|
|Stellar map (of the moon's constellations)|
|Self-inflating life raft|
|5 gallons of water|
|First-aid kit containing injection needles|
|Solar-powered FM receiver-transmitter|
Secrets to Success in CS 61A
CS 61A is definitely a challenge, but we all want you to learn and succeed, so here is a collection of various tips that might help in your journey:
- If you encounter something you don't know or aren't sure about a concept or problem, ask away. We're here to help you learn, and if you ask a question, that tells us where we can help with your understanding of the material. The process of asking questions itself can also be helpful in figuring out for yourself what you would specifically like to ask about, and in therefore pinpointing concepts that you believe you can learn more about.
Study in groups.
- Again, this class is not trivial; you might feel overwhelmed going at it alone. Send a message and reach out to other students in the class; work together on assignments or study together to prepare for exams, as long as you don't violate the course policy on Academic Honesty as stated in the Syllabus.
When stuck on a problem, try to explain the area in which you are stuck.
- This doesn't need to require a person who understands how to solve the problem (or even a person - this practice is often referred to as rubber ducking since you can take a rubber duck and consider it your practice audience) because the main goal is for you to clarify your own thoughts and figure out where exactly you're getting stuck with your understanding and code. From there you can focus on that portion to better your understanding.
- If you're still feeling stuck, feel free to make use of the class Piazza (our course forum for asking and answering questions) or attend office hours.
- Office hours gives you time with the instructors or staff by themselves, and you will be able to get some (nearly) one-on-one instruction. You are not intruding; the instructors and staff are here to help as you learn.
- Do (or at least attempt seriously) all the homework. We do not give many homework problems, but those we do give you may find are challenging, time-consuming, and rewarding.
- Do all the lab exercises. Most of them are designed as more of an introduction to the course material, and may take around the length of a lab section. This is a great time to get acquainted with new material. Feel free to ask the staff members in your lab section or come to office hours if you would like more guidance.
- Optional lab questions are 'optional' in the sense that they are extra practice, not that they are material that's out of scope. Make sure you do them if you have time.
- Do the readings before lecture. They can be helpful in offering an overview of the material covered in lecture and other aspects of the class, as well as being a reference as part of the overall textbook that you can refer to as you go through the course.
When preparing for the exams, do past exam questions!
- Lecture, lab, and discussion provide a great introduction to the material, but the main way to learn how to solve exam-level problems is to do exam-level problems. You can find past exams (and other resources) under the Resources tab of the website. Many past exams also have solutions or walkthrough videos where past staff members may walk you through the solution to the exam.