Skip to content
wannacode

OOP with Java

Object-oriented programming with Java, as it is taught at the Technical University of Sofia: from your first program to threads, patterns and databases.

The course is split into modules, and each module into short lessons. A lesson is a series of cards, one idea per card: a real problem, what actually happens (often with an animation next to the code), a small task, then the next idea. At the end there is an exercise for your editor and a short test.

Every module uses only what the earlier ones have shown. Your progress is kept in your browser: a lesson picks up from the card you reached.

Module 0

Welcome

3 lessons · the language, where it is used, setup

  1. The language you are learning
  2. Getting your computer ready
  3. How to solve a task

Module 1

Language basics

9 lessons · variables, conditions, loops, arrays

  1. Your first program
  2. Variables and types
  3. Input and output
  4. Doing math
  5. Conditions
  6. Loops
  7. Arrays
  8. Tables of numbers
  9. Working with text

Module 2

Methods

4 lessons · code you write once and call many times

  1. Why methods
  2. Parameters and return
  3. Overloading
  4. Recursion

Module 3

Classes and objects

5 lessons · your own types

  1. Your own type
  2. Constructors and this
  3. Behavior
  4. Encapsulation
  5. static: what all objects share

Module 4

Inheritance and polymorphism

5 lessons · what is shared, in one place

  1. Inheritance
  2. Polymorphism
  3. Abstract classes
  4. Interfaces
  5. What is it really?

Module 5

Errors and exceptions

3 lessons · when something goes wrong

  1. When something goes wrong
  2. Different errors and finally
  3. Throwing and your own exceptions

Module 6

Text and files

5 lessons · strings, regex, files

  1. Text up close
  2. Regular expressions
  3. Search and replace
  4. Files
  5. Data in files

Module 7

Collections

5 lessons · lists, stack, queue, HashMap

  1. A list that grows
  2. Stack, queue and linked list
  3. HashMap and HashSet
  4. How HashMap works
  5. Classes inside classes

Module 8

Modern Java

4 lessons · lambdas, data pipelines, patterns

  1. Lambdas
  2. Streams
  3. record, switch and patterns
  4. Design patterns

Module 9

Real-world programs

5 lessons · tests, threads, network, databases, reflection

  1. Tests with JUnit
  2. Threads
  3. Programs on the network
  4. Databases
  5. Reflection and annotations

Let's make a game

three games from scratch

8 lessons

  1. How to think about a game
  2. RPG 1: the heroes
  3. RPG 2: the battle
  4. RPG 3: the whole game
  5. Epic Cosmos 1: the objects in space
  6. Epic Cosmos 2: resources, buildings, ships
  7. The locked lab 1: rooms and commands
  8. The locked lab 2: puzzles and the way out

Project

a whole program, step by step

1 lesson

  1. Hotel reservations

More

1 page · videos for the course

  1. Useful videos

Made by Ivo Gergov as part of Evo Tech's campaign for accessible programming education ·