Course catalog

Twelve project-based courses across five languages. Each course pairs concise lessons with a final project you can add to your portfolio.

Home/Courses

Full catalog

Browse the complete list. Hours are an estimate of focused study time; levels assume no prior experience at Beginner and some familiarity at Intermediate and Advanced.

CourseLanguageLevelHours
Python BasicsPythonBeginner40
Python Data SciencePythonIntermediate45
Web DevelopmentJavaScriptBeginner50
JavaScript InteractivityJavaScriptBeginner35
Frontend ProjectsHTML/CSSBeginner25
Intro to JavaJavaIntermediate45
Java Desktop AppsJavaAdvanced40
C++ FundamentalsC++Intermediate50
Algorithms and Data StructuresMultipleAdvanced60
Databases with SQLSQLIntermediate30
Git and CollaborationGitBeginner15
Capstone Project TrackMultipleAdvanced55

Prerequisites: Beginners should start with Python Basics or Web Development, which assume no prior coding experience. All other courses assume you can read and run simple programs in the listed language. Check each course page for the exact list of required skills.

Core patterns you will master

Every course builds on a few core ideas. Here is one essential pattern from four different languages, all of which you will use in your projects. Hit Run to see a snippet execute or to preview its output.

Total snippets you have run on this device: 0

Start read number n total = 0, i = 1 i <= n ? yes print total total += i i += 1 loop

Python: loops and lists

Lists store a sequence of values in order, and a for loop visits each one. This snippet builds a list of squares and prints each result. It is a pattern you will use constantly in data work and scripting. The Run button here shows the expected output; copy it and run it in a local Python install for the live result.

numbers = [1, 2, 3, 4] squares = [] for n in numbers: squares.append(n * n) print(squares)

JavaScript: functions and arrays

Functions wrap a block of logic so you can reuse it, and the map method transforms every item in an array. This snippet squares each number in the array and stores the results in a new array, leaving the original untouched. It runs live in your browser when you press Run.

const numbers = [1, 2, 3, 4]; function square(x) { return x * x; } const squares = numbers.map(square); console.log(squares);

Java: classes

In Java you organize code with classes, which bundle data and the methods that act on it. This snippet defines a simple Rectangle class with width and height fields and a method that computes and prints the area. Java needs a compiler, so the Run button shows the expected output instead of executing.

class Rectangle { double w, h; Rectangle(double w, double h) { this.w = w; this.h = h; } double area() { return (w * h); } void show() { System.out.println("Area: " + area()); } }

The class above stores two fields and computes area. A separate main method would create a Rectangle, call show(), and print the result. This object-oriented layout is the backbone of most Java programs.

C++: vectors and range loops

A vector is a resizable sequence, and the range loop visits each element in order. This snippet prints every value on its own line. C++ compiles to native code, so the Run button shows the expected output rather than executing in the browser.

#include <iostream> #include <vector> int main() { std::vector<int> v = {2, 4, 6}; for (int n : v) { std::cout << n << "\n"; } return 0; }