Whether you’re a Berkeley student or someone simply taking the course on your own, this guide will give you a sense of where to get started.
The course website has 6 categories of material: Readings, Lectures, Guides, Discussions, Labs, and Assignments. The readings and lectures are redundant with each other, and act as a first point of contact with most topics. The guides provide a summary of each day’s content and also provide additional optional exercises. Discussions are in-person (Zoom) sessions open to only Berkeley students, but the worksheets are provided for the public. There are easier and harder versions of each discussion – the harder version is called “Exam Prep”. Labs are also in-person (Discord) sessions open only to Berkeley students, but the specs and autograder for each are available to the public. Assignment specs and autograders are also available to the public. Discussions, labs, and assignments generally give you a chance to practice the material introduced in lectures.
In addition we also have a discussion forum. If you are a Berkeley student, you should have already been added. If you are a member of the public, there is a public discussion forum that you can join at https://us.edstem.org/join/fc9Xhz. This public discussion forum will not be actively monitored by course staff.
The public Spring 2021 Autograder is not yet available, but we anticipate releasing it by the end of February 2021.
A suggested order in which to complete the first four weeks of the course is provided below:
- HW0 (Basic Java Programs)
- Discussion 1 (Intro to Java)
- Lecture 1 or Reading 1.1 (Intro, Hello World Java)
- Lab 1 Setup (Setting Up Your Computer)
- Lab 1 (IntelliJ, git)
- Lecture 2 or Reading 1.2 (Defining and Using Classes)
- Lecture 3 or Reading 2.1 (References, Recursion, and Lists)
- Discussion 2 (Scope, Pass-by-Value, Static)
- Project 0 (2048)
- Lecture 4 or Reading 2.2 (SLLists, Nested Classes, Sentinel Nodes)
- Lab 2 (Testind and Debugging)
- Lecture 5 or Reading 2.3, 2.4 (LLists, Arrays)
- Lecture 6 or Reading 2.5 (ALists, Resizing, vs. SLists)
- Discussion 3 (Linked Lists, Arrays)
- Project 1 (Data Structures)
- Lecture 7 or Reading 3.1 (Testing)
- Lab 3 (Randomized Testing and Timing Tests)
- Lecture 8 or Reading 4.1 (Inheritance, Implements)
- Lecture 9 or Reading 4.2 (Extends, Casting, Higher Order Functions)
- Discussion 10 (Inheritance)
- Lecture 10 or Reading 4.3 (Subtype Polymorphism vs. HoFs)
- Lab 4: Peer Code Review (Berkeley students only)
- Lecture 11 or Reading 6.1, 6.2, 6.3, 6.4 (Exceptions, Iterators, Object Methods)
The more general pattern is that you should:
- Do the discussion for a given week after the Monday lecture.
- Do the lab for a given week after the Wednesday lecture.
- Start projects and HWs after watching the lecture corresponding to the release date of that project or HW. Sometimes it is possible to start a little earlier.