Lessons

CS 125 daily lessons mix text, interactive walkthroughs, video content, and small homework problems.

Each one brings you one step closer to mastering the basics of computer science and programming. And the course staff will accompany you every step of the way, to ensure that you are not alone.

Spring 2021

05/05/2021: CS 125 by the Numbers

Let's look back at the semester, at how hard you worked, and how hard the staff worked to help you.

04/30/2021: Kotlin

What could be better than Java? Maybe an entirely new language that addresses many of Java's limitations!

04/29/2021: Streams

This lesson explores streams, an advanced Java feature and programming pattern useful for performing transformations on data.

04/28/2021: Generics

Today we introduce a feature of Java that allows us to write both general and type-safe code.

04/27/2021: Binary Search

Let's apply some of the same ideas we've developing sorting to a new problem, search.

04/26/2021: Sorting Review

Let's review sorting algorithms and runtimes.

04/22/2021: Quicksort

Next we'll continue on to examine Quicksort, a new sorting algorithm with some very interesting characteristics.

04/21/2021: Merge Sort

We'll continue today by examining Merge Sort, an interesting and efficient sorting algorithm.

04/20/2021: Sorting Algorithms

Today's lesson begins our examination of sorting algorithms, which represent both a conceptual and a programming challenge.

04/19/2021: Practice with Recursion

Let's get some additional practice with trees and recursion!

04/16/2021: Trees and Recursion

Let's continue practicing with trees and recursion!

04/15/2021: Trees

Today we'll introduce trees, which are both a commonly-used data structure and a great way to get practice with recursion.

04/14/2021: Recursion

Our lesson today introduces recursion, a powerful new problem-solving strategy.

04/08/2021: Working with Exceptions

Today's lesson continues our practice with Java exceptions.

04/07/2021: Throwing Exceptions

Let's continue to learn about Java exceptions by finding out how and when to generate our own errors.

04/06/2021: Catching Exceptions

Today we'll begin learning how to work with Java exceptions by understanding how to handle them when they occur.

04/05/2021: Maps

Today's lesson introduces maps, one of the most useful data structures you'll encounter in computer science.

04/02/2021: Hashing

This lesson explores hashing, a mysterious and yet incredibly useful idea that is even included directly in the Java language.

04/01/2021: Lists Review and Performance

Today we'll continue discussing linked lists and implement a few list methods together.

03/31/2021: Linked Lists

Now for a different take on lists, we'll examine lists that store the position of items using reference linking.

03/25/2021: Array Lists

We'll continue our discussion of lists by examining lists that use an array to store their items.

03/23/2021: Algorithms and Lists

Our lesson today starts the third half of the class, our exploration of data structures, algorithms, and algorithm analysis.

03/22/2021: Lambda Expressions

Today's lesson explores lambda expressions, a terse way of implementing interfaces using anonymous classes.

03/21/2021: Testing 2

Let's get some additional practice with testing!

03/20/2021: Testing 1

Let's explore the world of software testing by writing some of our own!

03/19/2021: Anonymous Classes

Let's dive in to the world of anonymous classes.

03/18/2021: Practice with Interfaces

Today's lesson continues our practice with interfaces.

03/17/2021: Implementing Interfaces

Next we'll examine how to implement interfaces on our own classes.

03/16/2021: Using Interfaces

Let's take the first step to understanding interfaces.

03/14/2021: Reverse Engineering a Class

Let's get more practice with reverse engineering.

03/13/2021: Reverse Engineering a Method

Today's homework problem introduces you to the process of reverse engineering.

03/12/2021: Serialization

Our lesson today focuses on how to convert objects to strings and back again, a process known as serialization.

03/11/2021: Imports and Libraries

Today's lesson may be the most important of the entire semester, since it shows you how to use other peoples' code!

03/10/2021: Java Memory Management

Let's take another journey into Java internals and explore how Java manages memory.

03/09/2021: References and Polymorphism

Let's combine what we know about polymorphism and references to deepen our understanding even further.

03/08/2021: References

Our focus today is on references, both generally and in Java specifically.

03/07/2021: Square Shape

Today's homework provides even more practice with class design.

03/06/2021: Circle Shape

Today's homework problem provides some practice in class design.

03/05/2021: Data Modeling 2

Today we'll complete another data modeling exercise that pull together everything that we've learned.

03/04/2021: Equality and Object Copying

What does it mean for two objects to be equal? And how do we copy them? In today's lesson we'll find out.

03/03/2021: Polymorphism

Today's lesson introduces a big new word and a big new idea: polymorphism.

03/02/2021: Inheritance

Our lesson today explores the relationships between Java classes established through inheritance.

03/01/2021: Static

Today we'll continue understanding Java objects by exploring the static keyword and its implications.

02/28/2021: Course Object

Today's homework problem has you complete some class design.

02/27/2021: Flip Flop Object

Flip and flop your way to a solution on today's homework problem.

02/26/2021: Data Modeling 1

This lesson puts our new abilities with Java objects to use modeling a real-world system.

02/25/2021: Encapsulation

Today's we'll investigate how Java enables encapsulation through visibility modifiers and setters and getters.

02/24/2021: Constructors

Our lesson today examines what happens when Java objects are created.

02/23/2021: Objects, Continued

Let's continue our discussion of objects by examining object methods.

02/22/2021: Introduction to Objects

Today we begin a new topic: objects.

02/21/2021: Football CSV

Working with data is one of the more fun things that you can do with your new programming abilities. Let's see how!

02/20/2021: Rot-13 Encryption

Today's homework problem introduces you to a simple form of encryption.

02/19/2021: Asserting

Today is our last lesson on imperative programming, so we'll introduce a few new features before discussing testing.

02/18/2021: Type Inference

Today's lesson continues our discussion of how Java works and introduces a new Java feature just added recently.

02/16/2021: Compilation

Let's explore a bit of Java internals, specifically how Java transforms your code before running it in a process known as compilation.

02/15/2021: Multidimensional Arrays and Algorithms

Today we'll take our exploration of arrays and algorithms to the next dimension!

02/14/2021: String Equality

Today's weekend homework is straightforward. Don't overthink it!

02/13/2021: String Rotation

Ready for a tricky weekend homework problem? Let's rotate a string!

02/12/2021: Multidimensional Arrays

Today's lesson expands our ability to work with sequential data into multiple dimensions!

02/11/2021: null

How many problems can nothing cause? Quite a few! We'll learn more about the nothing that is a huge problem today.

02/10/2021: Algorithms and Strings

Today's lesson is on algorithms and strings, and gives us a bit more practice with both.

02/09/2021: Strings

Today we meet a new type of data and our first example of a Java object.

02/08/2021: More About Functions

Today we'll continue discussing functions and introduce several common algorithm patterns.

02/07/2021: Array Count Equal

Today's homework problem involves both functions and arrays.

02/06/2021: Reverse Print

Today's weekend homework problem is on printing, in reverse!

02/05/2021: Staying Sane in CS

Today we'll focus on staying sane in CS, both through debugging and maintaining a healthy mindset as you learn to work with computers.

02/04/2021: Functions

As we begin writing algorithms, let's stop and discuss how to organize our code into reusable units called functions.

02/03/2021: Algorithms I

Today we'll pull together everything we've learned so far and use our new skills to start solving real problems. Or, put another way, we'll start designing algorithms.

02/02/2021: Loops

Today we'll cover our last core computer capability: the ability to repeat something multiple times, very quickly.

02/01/2021: Arrays

Let's learn about our first data structure: arrays, which put data values in order.

01/31/2021: Time to Decade

Today's weekend homework is all about time!

01/30/2021: Center of the Universe

Today's weekend homework is all about location!

01/29/2021: Compound Conditionals

Today we'll examine how to make our conditional statements a bit more complex, allowing us to make more interesting decisions based on data in our programs.

01/28/2021: Conditional Expressions and Statements

One of the things that makes computers so powerful is their ability to make decisions. We'll explore that capability in our programs today.

01/27/2021: Operations on Variables

Our journey continues today as well examine how we can manipulate the data stored by variables in our programs.

01/26/2021: Variables and Types

Let's begin our journey in computer science by presenting two of the basic building blocks of computer programs: variables and data types.

01/25/2021: Welcome to CS 125

Welcome to CS 125! We're excited to join you as you start your journey in computer science and programming. Today!