Learning path
Programming fundamentals (PF)
Choose a language, then study values, decisions, loops, functions, recursion, and input handling. Each language lists the topics currently available.
- 1
Python
Readable code for automation, data, and first programs.
Python Variables
Store and reuse values with clear names.
Python arithmetic and operators
Calculate totals and distinguish division from floor division.
Python Lists
Keep ordered values together.
Python Functions
Package reusable behavior.
Python decisions and boundaries
Choose one branch with if, elif, and else.
Python loops and accumulators
Build a total one iteration at a time.
Python while loops and digit processing
Repeat until a changing condition becomes false.
Python nested loops and matrices
Visit every cell of a rectangular matrix.
Python strings and palindrome checks
Normalize text before comparing characters.
Python conversion and input validation
Convert text safely and handle invalid input.
Python recursion and factorial
Separate a base case from a smaller recursive problem.
Python files and context managers
Write and read a UTF-8 text file with automatic cleanup.
- 2
C
Learn memory, pointers, and efficient systems programming.
C Variables
Declare typed values.
C Arrays
Store a fixed sequence.
C Pointers
Work with memory addresses.
C conditions, loops, and totals
Combine a counted loop with an even-number condition.
C strings and null terminators
Traverse characters without reading beyond the string.
C functions and pointer parameters
Modify caller-owned values through valid addresses.
C structures and records
Group related fields into a typed record.
C dynamic memory and ownership
Allocate, check, use, and free a heap buffer.
C reading and writing text files
Write lines to a file with fprintf, read them back with fgets, and parse each line with sscanf.
C bit manipulation and flags
Set, clear, test, and toggle bits with &, |, ^, ~, and shifts, and count set bits.
C two-dimensional arrays
Store a matrix, transpose it, and multiply it with another one.
C macros versus inline functions
See how a macro evaluates its arguments more than once and why a function is safer.
- 3
C++
Build fast applications with modern types and classes.
C++ Basics
Write and run a first program.
C++ conditions and range loops
Filter a sequence while accumulating a result.
C++ functions and references
Use a reference parameter to update a caller's value.
C++ recursive factorial
Trace recursive calls and their return values.
C++ strings and string streams
Use std::string, parse text with getline and istringstream, and convert between text and numbers.
C++ references, const, and auto
Pass large objects without copying, protect them with const, and let the compiler deduce types.
C++ lambdas and the standard algorithms
Sort, search, count, transform, and remove elements with algorithms and small anonymous functions.
- 4
Java
Understand object oriented programs and the JVM.
Java Basics
Start with a class and main method.
Java conditions, arrays, and loops
Count values that satisfy a boundary condition.
Java methods and exception handling
Separate conversion errors from valid numeric values.
Java recursion and bounded factorial
Use a base case and validate the representable range.
Java variables, types, and casting
Declare typed variables and understand integer division, overflow, and conversions.
Java arrays and strings
Work with fixed-size arrays, common String methods, and the difference between == and equals.
Java method overloading, varargs, and pass by value
Declare several methods with the same name and see what a method can and cannot change.
- 5
C#
Build typed applications on .NET.
C# Basics
Print a value from a .NET program.
C# Loops
Repeat an action with a for loop.
C# Methods
Package reusable logic in a static method.
C# strings and formatting
Use common string methods, compare text correctly, and format numbers with format specifiers.
C# exceptions, finally, and using
Throw and catch a custom exception, filter by condition, and release resources reliably.
C# nullable values, patterns, and switch expressions
Handle missing values safely and branch on the type and value of an object.
- 6
Kotlin
Write concise, typed code for JVM applications.
Kotlin Basics
Use values and string templates.
Kotlin Lists
Process an ordered collection.
Kotlin Functions
Declare typed parameters and a return type.
Kotlin when Expressions
Choose a result from several conditions with when.
Kotlin null safety
Distinguish nullable from non-null types, and use ?., ?:, let, and !! deliberately.
Kotlin collections and higher-order functions
Filter, map, group, sort, and fold lists with lambdas instead of loops.
- 7
JavaScript
Add behavior to the web and build applications.
JavaScript Variables
Use const and let for values.
JavaScript Functions
Write reusable logic.
JavaScript conditions and array loops
Filter values with strict comparisons and accumulate a total.
JavaScript map, filter, and reduce
Build a transformation pipeline without mutating the source.
JavaScript types, equality, and coercion
Know the primitive types, why === is safer than ==, and which values count as false.
JavaScript closures and scope
Use a function that remembers its surrounding variables, and see why let fixes the classic loop bug.
JavaScript destructuring, spread, and rest
Unpack objects and arrays into variables, copy with spread, and collect arguments with rest.
JavaScript string methods and regular expressions
Split, pad, replace, and extract parts of text with strings and regular expressions.
JavaScript promises, async, and await
Write asynchronous code that reads like synchronous code, and handle errors with try and catch.
- 8
TypeScript
JavaScript with static types for dependable code.
TypeScript Types
Describe values before runtime.
TypeScript Union Types and Narrowing
Accept more than one type and narrow it safely with typeof.
TypeScript literal types and as const
Build a union of allowed strings from an object or array and make switch statements exhaustive.
TypeScript unknown and user-defined type guards
Validate parsed JSON at run time and let the compiler trust the result only after the check.
TypeScript tuples, readonly, and optional chaining
Return fixed-shape pairs, protect arrays from change, and read nested optional values safely.
- 9
PHP
Learn server-side web programming basics.
PHP Basics
Print a value from a PHP script.
PHP Arrays
Loop through an indexed array.
PHP Functions
Declare typed parameters and return values.
PHP strings, sprintf, and regular expressions
Format text with sprintf, split and join strings, and match patterns with preg functions.
PHP strict types, match, and the nullsafe operator
Use union types, a match expression, constructor promotion, and ?-> to write safer code.
PHP closures, array functions, and generators
Transform arrays with map, filter, and reduce, capture variables in closures, and produce values lazily with yield.
- 10
Perl
Explore practical text processing and scripting.
Perl Basics
Declare a scalar and print it.
Perl Subroutines
Define a sub that reads its arguments from @_.
Perl regular expressions and text processing
Capture named groups, collect all matches, transliterate characters, and compute replacements with /e.
Perl references and nested data structures
Build hashes of arrays, add to them, and loop over them with references.
Perl file handles on strings and formatted output
Read lines from a string as if from a file, validate each line, and write formatted output to a string.
Perl subroutines, context, and closures
Return different results in list and scalar context, build closures, and write a recursive anonymous function.
- 11
Go
Learn simple, fast programs and explicit control flow.
- 12
- 13
Ruby
Express clear programs with readable syntax.
- 14
Swift
Learn expressive, typed programming for Apple platforms.
- 15
Scala
Combine object oriented and functional programming.
- 16
Lua
Learn a compact language often used for scripting.