Learning path
Object-oriented programming (OOP)
Learn objects, encapsulation, inheritance, polymorphism, abstraction, and composition through language-specific examples.
- 1
Python
Readable code for automation, data, and first programs.
Python classes and objects
Give each object its own state and methods.
Python encapsulation and properties
Keep validation next to the state it protects.
Python inheritance and polymorphism
Call overridden behavior through a common interface.
Python abstraction with abstract classes
Specify required behavior while leaving implementation to subclasses.
Python composition and object relationships
Build behavior by containing another object.
- 2
C++
Build fast applications with modern types and classes.
C++ Classes
Group data and behavior.
C++ constructors and encapsulation
Initialize private state and expose a controlled interface.
C++ abstract classes and virtual dispatch
Invoke derived behavior through a base reference.
C++ composition and RAII
Let owned members manage their resources automatically.
C++ function templates
Reuse one type-checked algorithm for different types.
C++ inheritance and virtual functions
Call the right method through a base-class pointer, and see what slicing does.
C++ operator overloading
Give a Vec2 class natural arithmetic, comparison, and output operators.
C++ smart pointers and ownership
Use unique_ptr for single ownership, shared_ptr for shared ownership, and weak_ptr to observe.
- 3
Java
Understand object oriented programs and the JVM.
Java constructors and encapsulation
Initialize private fields and validate changes through methods.
Java inheritance and method overriding
Use a superclass reference to call subclass behavior.
Java interfaces and composition
Depend on a contract and inject a collaborating object.
Java abstract classes and enums
Define a shared base with an abstract method, and a fixed set of constants with fields.
Java generics and bounded types
Write one class and one method that work for many types while the compiler checks them.
Java equals, hashCode, and toString
Define when two objects are equal so that they work correctly in sets and maps.
- 4
C#
Build typed applications on .NET.
C# Classes and Properties
Protect state with a property that only the class can change.
C# inheritance, virtual, and abstract members
Override behaviour in subclasses and call it through a base-type reference.
C# records, with-expressions, and value semantics
Create immutable data types with value equality, copy them with changes, and compare with structs and classes.
C# delegates, events, and lambdas
Pass behaviour as a value and let objects notify subscribers when something happens.
- 5
Kotlin
Write concise, typed code for JVM applications.
Kotlin Classes
Declare a class with a primary constructor and private state.
Kotlin data classes and sealed interfaces
Model alternatives with a sealed hierarchy and let the compiler check that every case is handled.
Kotlin object, companion object, and delegation
Create singletons, class-level factories with private constructors, and reuse behaviour by delegating to an interface.
- 6
JavaScript
Add behavior to the web and build applications.
JavaScript classes and private fields
Protect instance state with a private class field.
JavaScript inheritance and overriding
Reuse initialization and specialize instance behavior.
JavaScript prototypes and class inheritance
See that classes are built on prototype chains, and extend one constructor from another.
JavaScript private fields, getters, and static members
Hide state with #private fields, expose it through a getter, and keep a counter on the class itself.
- 7
TypeScript
JavaScript with static types for dependable code.
- 8
- 9
Perl
Explore practical text processing and scripting.
- 10
Go
Learn simple, fast programs and explicit control flow.
- 11
Rust
Understand ownership and safe systems code.
- 12
Ruby
Express clear programs with readable syntax.
- 13
Swift
Learn expressive, typed programming for Apple platforms.
- 14
Scala
Combine object oriented and functional programming.