Interactive Presentations
Interactive step-by-step visualizers for algorithms, structures, and languages.
Variables and Constants
Constant: fixed value. Variable: value that changes during execution.
Pass by Value and Pass by Reference
Discover how C handles memory and pointers.
Data Types
The fundamental types of C: integers, floats, chars, pointers and structs.
Modularity
Subprograms, Functions and Procedures
Functions and Procedures in Java
How Java defines and uses functions and procedures.
Arrays in C
One-dimensional arrays and matrices with visualizations and step-by-step.
Array Operations
Traversal, search and insertion in arrays with step-by-step simulations.
While step by step
Simulate a while loop iteration by iteration.
Do-while step by step
Visualize the do-while logic step by step.
For step by step
Initialization, condition, block and increment of a for loop.
Nested for and multiplication table
Two nested for loops that complete a multiplication table.
If step by step
Flow of an if line by line.
If-else step by step
How the program chooses between if and else.
Switch step by step
Comparison of cases, match and break.
String step by step
Changes when using strlen, buffers and manual cuts in C.
String of numbers step by step
Text concatenation vs real sum with sprintf and atoi.
strchr step by step
How strchr traverses a string and returns a pointer.
Counting words in strings
Traverses a string char by char and counts words when entering text.
Bubble Sort step by step
Visualize how elements bubble up to their correct positions.
Selection Sort step by step
Find the minimum and place it in its spot.
Insertion Sort step by step
Insert each element into its correct position within the sorted part.
Binary Trees step by step
Visualize recursive insertion and in-order traversal in a BST.
The 4 Pillars of OOP in Java
Abstraction, encapsulation, inheritance and polymorphism with diagrams and interactive demos.
Basic Concepts, JVM, and Your First Program
Compilation pipeline to bytecode, internal JVM architecture, and anatomy of main().
Variables, Data Types, and Operators in Java
The 8 primitive types in memory, implicit/explicit casting, and logical short-circuit simulator.
Control Flow: Conditionals and Loops in Java
Animated flowcharts of if/else, modern switch, and the internal anatomy of for, while, and do-while.
Arrays and Strings: Memory and the Constant Pool
Contiguous memory, String Constant Pool in Heap, the == vs equals trap, and StringBuilder.
Classes, Objects, and the new Operator Lifecycle
Blueprint vs building, 4-step new lifecycle, this pointer, and memory aliasing.
Constructors, Encapsulation, and Reference Leaks
this() delegation, 4 access modifiers matrix, defensive copying, and immutability.
Object Arrays: Two Levels of Memory in Java
The null slot trap, two-step creation, capacity vs size, and aliasing with Heap diagrams.
Inheritance, Dynamic Method Dispatch, and Polymorphism
"Is-a" test, constructor chaining with super(), overloading vs overriding, and the virtual method table (vtable).
Abstract Classes and Interfaces in Java
Contracts, hierarchies, default methods, and UML relationships with interactive diagrams.
Exception Handling and Robustness in Java
Call stack propagation, try-with-resources, and Throwable hierarchy with step-by-step simulations.
List ADT: Static vs Dynamic and Linked Nodes
Abstract contract, contiguous vs dispersed memory, insertion/deletion, and Big-O complexity analysis.
Stack (LIFO) and Queue (FIFO) ADTs in Java
Linear data structures, circular queue with modular arithmetic, and expression balancing simulators.
Java Collections Framework and Generics
Full hierarchy, List/Set/Map/Queue families, and internal HashMap anatomy with bucket simulator.
Iterators, Sorting, and equals/hashCode Contract
ConcurrentModificationException demystified, Comparator vs Comparable, and HashSet collisions.
Binary Trees and BST in Java
DFS/BFS traversals, BST invariant, insert and delete with interactive tree simulator.
Graphs: Matrix, List, BFS, DFS, and Dijkstra
Memory representation, BFS/DFS traversals, Dijkstra, and Floyd-Warshall with interactive graph simulator.
Files, Serialization, and JAR Packaging in Java
I/O Decorator Pattern, NIO.2, serialVersionUID, and native packaging with jpackage.
Threads, Synchronization, and Virtual Threads in Java
Stack vs Heap in JMM, count++ race conditions, synchronized locks, thread pools, and Project Loom.
JDBC, SQL Injection, and Transaction Management
Driver architecture, Statement vs PreparedStatement, ResultSet cursor, commit/rollback, and HikariCP pools.
Testing with JUnit 5, Mockito, and Spring Boot Architecture
Test pyramid, AAA pattern, test doubles isolation (Mockito), and Spring Boot 3-tier architecture.
Algorithms: Specification, Invariants, and Big-O
Hoare triples, step-by-step loop invariants, and asymptotic complexity curves.
N-ary Trees and Vector Representation in Java
Left-Child Right-Sibling (LCRS) transformation and parent vector with interactive animator.
Debugging, Clean Code, and Refactoring
Scientific debugging loop, breakpoints and watches in the IDE, code smells catalog, and test-backed refactoring.
Packages, Namespaces, and Class Imports in Java
Name collisions, the package declaration and its folder, FQCN, import as an alias, ambiguity resolution, and package-private visibility.
Git Fundamentals and the Three-State Cycle
From untracked files to commits: Working Directory, Staging Area, local Repository, HEAD pointer, and snapshot anatomy.
Remote Synchronization: Fetch, Pull, and Push in Git
Distributed architecture, origin remote alias, remote-tracking branches origin/main, upstream tracking (-u), and fetch vs pull.
Branches, Fast-Forward, 3-Way Merge, and Conflicts in Git
Feature branch isolation, integration with git merge, step-by-step resolution of conflict markers, and safe aborts.
Git Rebase, Linear History, and Best Practices
Replaying commits on a new base, the Golden Rule of Rebase, step-by-step conflict resolution, atomic commits, and Conventional Commits.