Learn
Programming tutorials
Choose a language and build understanding one concept at a time.
Learn by subject
458 lessons across 19 languages. Choose a subject path or browse a language below.
Programming fundamentals (PF)
Choose a language, then study values, decisions, loops, functions, recursion, and input handling. Each language lists the topics currently available.
Explore lessons →Object-oriented programming (OOP)
Learn objects, encapsulation, inheritance, polymorphism, abstraction, and composition through language-specific examples.
Explore lessons →Data structures and algorithms (DSA)
Start with Python's full core sequence, or study the same structures and algorithms in C, C++, Java, C#, Kotlin, JavaScript, TypeScript, and other languages. Compare operations, trace state, and reason about complexity.
Explore lessons →Analysis of algorithms
Measure how running time and memory grow, solve recurrences, reason about average and amortized cost, and prove a loop correct.
Explore lessons →Database systems
Model data with tables and constraints, query it with SQL, normalize designs, keep updates safe with transactions, and speed up queries with indexes.
Explore lessons →Operating systems
Study CPU scheduling, page replacement, deadlock avoidance, synchronization, and virtual memory through small simulations.
Explore lessons →Computer networks
Learn protocol layering, IP addressing, TCP and UDP sockets, HTTP messages, and how routers choose where to send a packet.
Explore lessons →Software engineering
Practise the habits of building maintainable software: unit tests, safe refactoring, SOLID design, design patterns, version control, and clear contracts.
Explore lessons →Information security
Learn the safe defaults: hashing, password storage, message authentication, why keys must not be reused, SQL injection, and secure randomness.
Explore lessons →Parallel and distributed computing
Understand concurrency versus parallelism, thread pools, processes, speed-up limits, MapReduce, logical clocks, and replication with quorums.
Explore lessons →Artificial intelligence (AI)
Model agents and environments, search state spaces, use heuristics with A*, play games with minimax, solve constraints, and use local search.
Explore lessons →Knowledge representation and reasoning (KRR)
Represent what a system knows in logic and networks, and derive new facts with entailment, chaining, resolution, unification, and probability.
Explore lessons →Machine learning (ML)
Learn how models are evaluated and trained: metrics, linear and logistic regression, k-nearest neighbors, decision trees, clustering, and validation.
Explore lessons →Artificial neural networks and deep learning (ANN/DL)
Build up from one neuron to multilayer networks: perceptrons, activations, forward passes, backpropagation, loss functions, convolutions, and regularization.
Explore lessons →Computer vision (CV)
Treat images as arrays, then filter, detect edges, threshold, label blobs, and match templates.
Explore lessons →Python
Readable code for automation, data, and first programs.
C
Learn memory, pointers, and efficient systems programming.
C++
Build fast applications with modern types and classes.
Java
Understand object oriented programs and the JVM.
JavaScript
Add behavior to the web and build applications.
TypeScript
JavaScript with static types for dependable code.
HTML
Structure accessible web pages.
CSS
Style responsive web interfaces.
SQL
Query and organize relational data.
C#
Build typed applications on .NET.
Go
Learn simple, fast programs and explicit control flow.
Rust
Understand ownership and safe systems code.
Kotlin
Write concise, typed code for JVM applications.
Ruby
Express clear programs with readable syntax.
PHP
Learn server-side web programming basics.
Swift
Learn expressive, typed programming for Apple platforms.
Scala
Combine object oriented and functional programming.
Lua
Learn a compact language often used for scripting.
Perl
Explore practical text processing and scripting.