Kotlin
Java

Innovations

What makes CS 124 truly special is our staff community. But we also put technology to work to create a unique interactive educational experience. Here's what makes CS 124 the best CS1 course around.

All of the systems and components described below are unique to CS 124.

Staff

Did we mention we have the best course staff around? That bears repeating!

Daily Lessons

Since Fall 2020 CS 124 has been structured around a set of daily lessons, each containing interactive content and a homework problem. Programming is a skill, and best learned through regular practice. Our students get the small amount of reinforcement they need every day to keep learning.

We are also preparing Kotlin lessons as we prepare to integrate Kotlin alongside Java starting Fall 2021.

Playgrounds

Our lessons are filled with playgrounds like the one above that allow students to run, edit, experiment, and generally play with code. They help make programming more fun.

Our playgrounds support both Java and Kotlin:

And our Java playgrounds support snippet mode, allowing us to mix top-level code and methods with class and interface declarations into more compact examples than Java normally allows:

interface Speak {
void speak();
}
class Dog implements Speak {
public void speak() {
System.out.println("Woof");
}
}
class Cat implements Speak {
public void speak() {
System.out.println("Meow");
}
}
// Snippet mode also supports top-level method declarations...
public void talk(Speak speaker) {
speaker.speak();
}
// And top-level (or loose) code
talk(new Dog());
talk(new Cat());

For longer examples like the one above, editor contents are saved across sessions and across devices for logged-in users.

Walkthroughs

Our daily lessons combine text, code, videos, and a new interactive walkthrough component developed exclusively for CS 124. Walkthroughs combine audio with an animated code editor to create live coding examples that are fully interactive.

Students can pause the walkthroughs, experiment with the code themselves, and then resume where they left off.

Walkthroughs are recorded directly in the browser, making it easy to add explanations and for others to contribute. CS 124 course staff can and do contribute their own explanations, strengthening our materials and diversifying the voice with which the course speaks. (All walkthroughs are fully captioned using Otter.ai.)

Here's an overview of how interactive walkthroughs work on the site and how easy it is for staff to record them:

Homework

Each daily lesson concludes with a small homework problem. Like this one:

You could also solve it in Kotlin!

Our large and growing library of Java and Kotlin small problems is created and maintained using a novel tool that automatically generates a testing strategy from a reference solution. This eliminates the need to write or maintain test cases. For example, the grader for the problem above was generated entirely using the only following code:

Our autograder generator also supports grading problems on object-design:

More complex imperative programming questions:

And questions using more complex Java features, like lambda functions:

Stumpers

Stumpers are debugging problems created from our huge and growing set of student solutions to our small homework problems. For each solution, we apply source-level mutation to create incorrect examples. Then students have the chance to solve them, but with a limit on how many lines they can modify to prevent them from simply rewriting the code with their own solution. This both provides debugging practice while also allowing students to view code submitted by other students, and get practice modifying code written by others.

These problems are super fun! Try a few yourself below.

Quiz System

CS 124 has its own online quiz system designed to meet the challenges of online assessment during the pandemic. It is designed to integrate with Zoom proctoring, providing proctors with a great deal of control over the exam session while automating common tasks like enforcing time limits and handling accommodation requests. It also incorporates several basic exam security features on the student side to make it more difficult for students to remove materials from the exam.

Help Site

CS 124 makes it easy for students to get help with their code. By integrating Jitsi with a custom queueing system, we make it easy for students to get help and efficient for staff to work with large numbers of students.

Machine Project

Unlike other CS1 courses where students work on a series of small assignments, CS 124 students complete a longer project broken into multiple checkpoints. This not only provides them with the opportunity to create something more substantial—a complete Android app—but also encourages them to understand more about the entire codebase and consider the impact of their design decisions on their ability to complete future project challenges.

Here is a demo of the complete working app from Fall 2020: