Summer term starts on June 17! Get $100 off your enrollment when you refer a friend.

Algorithms and Problem Solving in Java

[CORE 5a]

Full Course

$1538 USD
Before any discounts or coupons
for 18 hours and additional live student help hours

Class Package

Class Project(s)

Our Proprietary In-Browser Coding Platform.

The KTBYTE team developed the KTCoder™ with our students in mind! Our platform supports block-based and typed out code in the most popular coding languages: Java, Python, and C++. This revolutionary all-in-one coding platform supports our interactive online classes, our specialized curriculum, and (most importantly) our students' passion for learning.
Live Student Help Hours with Teaching Assistants
Office hours are led by our highly qualified teaching assistants. It is an easy and free way to get immediate feedback on your code. Our homework is difficult - office hours can help you overcome obstacles and develop a stronger understanding of the material!
Audio Lectures
We provide pre-recorded Audio Lectures to allow for students to self-study, practice, and learn CS.
Online Textbook
We provide an online, interactive, Java & Algorithms textbook to allow for students to self-study, practice, and learn CS.
Class Recordings
We provide recordings of our classes for if a student misses or needs to re-listen to a class.
Student Progress Report
The parent account dashboard allows for parents to track their student's progress in the class.
Certificate of Completion
Students can request a certificate of completion once they finish the course

Class Description:

[CORE 5a] teaches students computer science through Java at an early university level. Students learn through hour-long lectures and weekly graded homework. Most students will find it necessary to to attend our student help hours for help. After about a year students will be well-prepared for the AP Computer Science exam.


[CORE 4b] or permission of instructor

Related Classes



Students begin by reviewing the concept of functions, which are essentially labeled pieces of code that enable a programmer to reduce redundancy in their programs. Students will review the various components of a function, including input/output types. Finally, after completing several challenging practice problems, students work on a demo involving animated graphing.

Loops 1

In this lesson, students first review their understanding of for and while loops. Afterwards, students complete practice exercises that are more challenging than the loop-based problems they have encountered in previous classes. Students finish the lesson by completing the animated graphing demo from Lesson 1.

Loops 2

This lesson serves as a continuation of the previous lesson. Students learn about general loop applications and work on even more challenging exercises. To finish off the lesson, students implement a dice rolling demo.

Arrays 1

In this lesson, students learn about arrays, which are data structures that store elements of the same type in a single contiguous memory block. Then we'll cover how to apply concepts from previous lessons (for-loops, functions, etc.) in conjunction with arrays to solve challenging problems. Finally, students work on a creative demo involving flower genomics.

2D Arrays

In this class, students learn about 2-dimensional arrays, which store data in a grid formation with rows and columns. Students also review important skills such as creating 2-dimensional arrays as well as looping through 2-dimensional arrays and some basic algorithms. To test their understanding, students implement the classic game Connect4, which appropriately stores game chips in a grid structure.

Loops and Arrays Review

This lesson is dedicated to review of concepts from the previous five lessons. The instructor will answer all questions that students bring to class so that students will be adequately prepared for the quiz in Lesson 7. To finish the lesson, students complete practice problems as well as a Game of Life demo.

Quiz 1 - Loops and Arrays

In this lesson, students will take a quiz that tests their knowledge of concepts from the first five lessons of the semester.

Recursion - Fern

In this lesson students learn about recursion, a technique where a function calls itself to solve smaller instances of the same problem. Students learn about critical components of recursive functions, such as base and recursive cases. To finish the lesson, students implement a tree-like fractal pattern that changes angle, length and hue as the ferns of the tree expand outwards.

Recursion 2 - Parameterization

In this lesson, students deepen their understanding of recursion with more complex examples. Students also learn how to recurse through an array without a loop by simply passing the current index into a recursive function as a parameter. Finally, students begin implementing the Tower of Hanoi puzzle.

Recursion 3 - Towers of Hanoi

This lesson focuses on the applications of recursion. Students begin by finishing their implementations of the Tower of Hanoi puzzle. Then (time permitting) they learn merge sort- their first sorting algorithm! This approach divides an entire array into smaller subarrays, recursively sorts them, and then merges the sorted subarrays to reproduce the sorted original array. Students finish the lesson by writing code for the Koch fractal.

Recursion Review and Flood Fill

This lesson serves as a recursion review before the second quiz. Students practice with concepts they have learned in the previous three lessons. If there is time after review, students will learn about floodfill, an algorithm that recursively explores cells in a grid until a termination condition is met. Students will also examine some popular applications that utilize floodfill, such as Minesweeper and Microsoft Paint.

Quiz 2 - Recursion (no Floodfill)

In this lesson, students take a quiz on concepts in recursion that they have learned over the previous four weeks. Note that the quiz does not cover floodfill.

String and Char

In this lesson, students deepen their understanding of the String data type, which enables coders to represent textual data. Students learn about a variety of functions that enable coders to examine, parse, and manipulate String objects. Additionally, this lesson covers characters (chars) in Java, which represent individual characters in a String object. Students learn to convert chars to corresponding integers by using the ASCII Table. Finally, students implement the Vigenere Cipher, a method of encrypting String objects.


In this class, students are introduced to classes in Java, which are blueprints that allow for programmers to create their own data types. Students deepen their understanding of common components of a class, such as properties, methods, and constructors, which can all be used to create their own classes. This lesson includes a demo on Attractors.

ArrayList and References

In this lesson, students review the ArrayList class, which can be thought of as a resizable version of arrays. Students are introduced to methods in the ArrayList class such as add and get, and they complete practice problems involving ArrayList objects (for example taking the sum or average of the elements in an ArrayList). Finally, students implement a platformer game similar to Doodle Jump.


In this lesson, students learn about Collections, specifically TreeSets and HashSets. Both TreeSets and HashSets are collections of distinct elements, where each element occurs only once within the set. However, whereas elements in a TreeSet are sorted, elements in a HashSet typically appear in an arbitrary order. Finally, students implement a demo where letters fly across the screen in different colors and directions.


This lesson serves as a review of concepts from the previous four weeks. Students will review their understanding of the String class, classes in general, the ArrayList data structure, and Collections.

Quiz 3 - Classes, References, and Collections

Students take a final quiz on topics covered in the previous four weeks.