lesson_01.sh
Variables and Constants
Algorithms

Variables and Constants

Lesson: Variables and Constants

Constant: fixed value. Variable: value that changes during execution.

paso_por_valor_y_referencia.c
Pass by Value and Pass by Reference
C

Pass by Value and Pass by Reference

Lesson: Variables, Parameters, and Passing

Discover how C handles memory and pointers.

tipos_de_datos.c
Data Types
C

Data Types

Lesson: Data Types

The fundamental types of C: integers, floats, chars, pointers and structs.

modularidad.c
Modularity
C

Modularity

Lesson: Modularization β€” Subprograms and Functions

Subprograms, Functions and Procedures

funciones.java
Functions and Procedures in Java
Java

Functions and Procedures in Java

Lesson: Methods and Functions in Java

How Java defines and uses functions and procedures.

arreglos.c
Arrays in C
C

Arrays in C

Lesson: One-Dimensional and Multi-Dimensional Arrays

One-dimensional arrays and matrices with visualizations and step-by-step.

operaciones_arreglos.c
Array Operations
C

Array Operations

Lesson: Array Operations

Traversal, search and insertion in arrays with step-by-step simulations.

while_loop.c
While step by step
Algorithms

While step by step

Lesson: While Loop

Simulate a while loop iteration by iteration.

do_while_loop.c
Do-while step by step
Algorithms

Do-while step by step

Lesson: Do-While Loop

Visualize the do-while logic step by step.

for_loop.c
For step by step
Algorithms

For step by step

Lesson: For Loop

Initialization, condition, block and increment of a for loop.

nested_for_table.c
Nested for and multiplication table
Algorithms

Nested for and multiplication table

Lesson: Schematic Programming and Nested Statements

Two nested for loops that complete a multiplication table.

if_condition.c
If step by step
Algorithms

If step by step

Lesson: If-Else Statement

Flow of an if line by line.

if_else_condition.c
If-else step by step
Algorithms

If-else step by step

Lesson: If-Else Statement

How the program chooses between if and else.

switch_case.c
Switch step by step
Algorithms

Switch step by step

Lesson: Switch Statement and Code Blocks

Comparison of cases, match and break.

string_methods.c
String step by step
C

String step by step

Lesson: Character Strings and Operations

Changes when using strlen, buffers and manual cuts in C.

string_numbers.c
String of numbers step by step
C

String of numbers step by step

Lesson: Character Strings and Operations

Text concatenation vs real sum with sprintf and atoi.

strchr_demo.c
strchr step by step
C

strchr step by step

Lesson: Character Strings and Operations

How strchr traverses a string and returns a pointer.

contar_palabras.c
Counting words in strings
C

Counting words in strings

Lesson: Character Strings and Operations

Traverses a string char by char and counts words when entering text.

bubble_sort.c
Bubble Sort step by step
Algorithms

Bubble Sort step by step

Lesson: Array Sorting

Visualize how elements bubble up to their correct positions.

selection_sort.c
Selection Sort step by step
Algorithms

Selection Sort step by step

Lesson: Array Sorting

Find the minimum and place it in its spot.

insertion_sort.c
Insertion Sort step by step
Algorithms

Insertion Sort step by step

Lesson: Array Sorting

Insert each element into its correct position within the sorted part.

arboles_binarios.c
Binary Trees step by step
C

Binary Trees step by step

Lesson: Binary Trees

Visualize recursive insertion and in-order traversal in a BST.

Dispositivos.java
The 4 Pillars of OOP in Java
Java

The 4 Pillars of OOP in Java

Lesson: Object-Oriented Programming and its Four Pillars

Abstraction, encapsulation, inheritance and polymorphism with diagrams and interactive demos.

HolaMundo.java
Basic Concepts, JVM, and Your First Program
Java

Basic Concepts, JVM, and Your First Program

Lesson: Basic Concepts and Your First Java Program

Compilation pipeline to bytecode, internal JVM architecture, and anatomy of main().

TiposDatos.java
Variables, Data Types, and Operators in Java
Java

Variables, Data Types, and Operators in Java

Lesson: Variables, Data Types, and Operators

The 8 primitive types in memory, implicit/explicit casting, and logical short-circuit simulator.

ControlFlujo.java
Control Flow: Conditionals and Loops in Java
Java

Control Flow: Conditionals and Loops in Java

Lesson: Control Flow and Loops

Animated flowcharts of if/else, modern switch, and the internal anatomy of for, while, and do-while.

ArraysStrings.java
Arrays and Strings: Memory and the Constant Pool
Java

Arrays and Strings: Memory and the Constant Pool

Lesson: Arrays and String Handling in Java

Contiguous memory, String Constant Pool in Heap, the == vs equals trap, and StringBuilder.

ClasesObjetos.java
Classes, Objects, and the new Operator Lifecycle
Java

Classes, Objects, and the new Operator Lifecycle

Lesson: OOP Fundamentals: Classes, Objects, and Attributes

Blueprint vs building, 4-step new lifecycle, this pointer, and memory aliasing.

ConstructoresEncapsulamiento.java
Constructors, Encapsulation, and Reference Leaks
Java

Constructors, Encapsulation, and Reference Leaks

Lesson: Constructors, Access Modifiers, and Getters/Setters

this() delegation, 4 access modifiers matrix, defensive copying, and immutability.

ArraysDeObjetos.java
Object Arrays: Two Levels of Memory in Java
Java

Object Arrays: Two Levels of Memory in Java

Lesson: Arrays of Objects: Holding and Iterating Many Instances

The null slot trap, two-step creation, capacity vs size, and aliasing with Heap diagrams.

HerenciaPolimorfismo.java
Inheritance, Dynamic Method Dispatch, and Polymorphism
Java

Inheritance, Dynamic Method Dispatch, and Polymorphism

Lesson: Inheritance, Polymorphism, and Method Overloading

"Is-a" test, constructor chaining with super(), overloading vs overriding, and the virtual method table (vtable).

ClasesAbstractasInterfaces.java
Abstract Classes and Interfaces in Java
Java

Abstract Classes and Interfaces in Java

Lesson: Abstract Classes, Interfaces, and Code Organization

Contracts, hierarchies, default methods, and UML relationships with interactive diagrams.

ExcepcionesManejoErrores.java
Exception Handling and Robustness in Java
Java

Exception Handling and Robustness in Java

Lesson: Exception Handling and Robustness

Call stack propagation, try-with-resources, and Throwable hierarchy with step-by-step simulations.

TadListas.java
List ADT: Static vs Dynamic and Linked Nodes
Java

List ADT: Static vs Dynamic and Linked Nodes

Lesson: The List ADT: Static, Dynamic, and Linked

Abstract contract, contiguous vs dispersed memory, insertion/deletion, and Big-O complexity analysis.

TadPilasColas.java
Stack (LIFO) and Queue (FIFO) ADTs in Java
Java

Stack (LIFO) and Queue (FIFO) ADTs in Java

Lesson: The Stack and Queue ADTs: Linear Structures

Linear data structures, circular queue with modular arithmetic, and expression balancing simulators.

CollectionsFramework.java
Java Collections Framework and Generics
Java

Java Collections Framework and Generics

Lesson: Java Collections and Generics (JCF)

Full hierarchy, List/Set/Map/Queue families, and internal HashMap anatomy with bucket simulator.

IteradoresOrdenamiento.java
Iterators, Sorting, and equals/hashCode Contract
Java

Iterators, Sorting, and equals/hashCode Contract

Lesson: Iterators, Ordering, and the equals/hashCode Contract

ConcurrentModificationException demystified, Comparator vs Comparable, and HashSet collisions.

TadArbolesBinarios.java
Binary Trees and BST in Java
Java

Binary Trees and BST in Java

Lesson: The Tree ADT: Traversals and Binary Search Trees

DFS/BFS traversals, BST invariant, insert and delete with interactive tree simulator.

GrafosAlgoritmos.java
Graphs: Matrix, List, BFS, DFS, and Dijkstra
Java

Graphs: Matrix, List, BFS, DFS, and Dijkstra

Lesson: Graphs: Matrix, Adjacency List, BFS, DFS, and Dijkstra

Memory representation, BFS/DFS traversals, Dijkstra, and Floyd-Warshall with interactive graph simulator.

ArchivosPersistencia.java
Files, Serialization, and JAR Packaging in Java
Java

Files, Serialization, and JAR Packaging in Java

Lesson: Files, Serialization, and JAR Packaging

I/O Decorator Pattern, NIO.2, serialVersionUID, and native packaging with jpackage.

ConcurrenciaHilosPools.java
Threads, Synchronization, and Virtual Threads in Java
Java

Threads, Synchronization, and Virtual Threads in Java

Lesson: Concurrent Programming: Threads, Synchronization, and Pools

Stack vs Heap in JMM, count++ race conditions, synchronized locks, thread pools, and Project Loom.

AccesoDatosJdbc.java
JDBC, SQL Injection, and Transaction Management
Java

JDBC, SQL Injection, and Transaction Management

Lesson: Database Access with JDBC and Safe SQL

Driver architecture, Statement vs PreparedStatement, ResultSet cursor, commit/rollback, and HikariCP pools.

TestingJunitSpringBoot.java
Testing with JUnit 5, Mockito, and Spring Boot Architecture
Java

Testing with JUnit 5, Mockito, and Spring Boot Architecture

Lesson: Testing with JUnit and Your First Spring Boot App

Test pyramid, AAA pattern, test doubles isolation (Mockito), and Spring Boot 3-tier architecture.

AlgoritmiaVerificacionComplejidad.java
Algorithms: Specification, Invariants, and Big-O
Java

Algorithms: Specification, Invariants, and Big-O

Lesson: Algorithms: Specification, Verification, and Complexity

Hoare triples, step-by-step loop invariants, and asymptotic complexity curves.

ArbolesNAriosVectores.java
N-ary Trees and Vector Representation in Java
Java

N-ary Trees and Vector Representation in Java

Lesson: N-ary trees and vector-based representation

Left-Child Right-Sibling (LCRS) transformation and parent vector with interactive animator.

DepuracionCodigoLimpio.java
Debugging, Clean Code, and Refactoring
Java

Debugging, Clean Code, and Refactoring

Lesson: Debugging, clean code, and refactoring

Scientific debugging loop, breakpoints and watches in the IDE, code smells catalog, and test-backed refactoring.

PaquetesNamespaces.java
Packages, Namespaces, and Class Imports in Java
Java

Packages, Namespaces, and Class Imports in Java

Lesson: Abstract Classes, Interfaces, and Code Organization

Name collisions, the package declaration and its folder, FQCN, import as an alias, ambiguity resolution, and package-private visibility.

git_fundamentos.sh
Git Fundamentals and the Three-State Cycle
Git

Git Fundamentals and the Three-State Cycle

Lesson: Getting Started with Git

From untracked files to commits: Working Directory, Staging Area, local Repository, HEAD pointer, and snapshot anatomy.

git_remoto.sh
Remote Synchronization: Fetch, Pull, and Push in Git
Git

Remote Synchronization: Fetch, Pull, and Push in Git

Lesson: Pulling and Pushing Changes

Distributed architecture, origin remote alias, remote-tracking branches origin/main, upstream tracking (-u), and fetch vs pull.

git_merge.sh
Branches, Fast-Forward, 3-Way Merge, and Conflicts in Git
Git

Branches, Fast-Forward, 3-Way Merge, and Conflicts in Git

Lesson: Merging Branches and Conflicts

Feature branch isolation, integration with git merge, step-by-step resolution of conflict markers, and safe aborts.

git_rebase.sh
Git Rebase, Linear History, and Best Practices
Git

Git Rebase, Linear History, and Best Practices

Lesson: Rebase and Best Practices in Git

Replaying commits on a new base, the Golden Rule of Rebase, step-by-step conflict resolution, atomic commits, and Conventional Commits.