0%
Learn Java
Work through the course in order, or jump to any lesson below.
Orientation: What Java Is & Why It Matters
Your Development Environment
Java Fundamentals
- Why Learn Before Using AI
- Hello World — Every Token Explained
- Variables and Type Declarations
- Primitive Types
- Strings and the Reference Type
- Operators and Math
- Conditionals
- Switch Statements and Expressions
- Loops
- Arrays
- Methods
- Reading Input with Scanner
- Type Casting
- Mini-Project: Number Guessing Game
- Mini-Project: Simple Calculator
- Mini-Project: Text-Based Menu Program
Thinking in Systems
Object-Oriented Programming: Foundations
Object-Oriented Programming: Advanced Patterns
Collections & Generics
- Why Collections?
- Collections Framework Overview
- ArrayList and LinkedList
- HashMap and LinkedHashMap
- HashSet and TreeSet
- Iterating Collections
- Generics
- Comparable and Comparator
- Sorting and Searching
- Choosing the Right Collection
- Mini-Project: Word Frequency Counter
- Mini-Project: Student Roster
- Mini-Project: Generic Stack
Files, I/O & Exception Handling
- Reading Files with FileReader and BufferedReader
- Writing Files with FileWriter and BufferedWriter
- Working with Paths — the java.nio.file.Path API
- Reading and Writing CSV and Text Data
- Working with JSON — using Gson or Jackson
- Exception Handling — try, catch, finally
- Checked vs Unchecked Exceptions
- Creating Custom Exceptions
- try-with-resources — the right way to handle closeable resources
- Handling Missing or Corrupt Files Gracefully
- Mini Project: CSV Report Generator
- Mini Project: File Backup Utility
- Mini Project: Log File Analyzer with Exception Reporting
Project Structure & Build Tools
- Scripts vs Software — when a single file isn't enough
- Java Project Structure — src/main/java, src/test/java, resources
- Packages and the Module System
- Introduction to Maven — pom.xml, lifecycle, and goals
- Managing Dependencies with Maven Central
- Introduction to Gradle as an Alternative
- Separating Concerns — layered architecture basics
- Reusable Utility Classes and Libraries
- Mini Project: Convert a Single-File Project to Maven
- Mini Project: Multi-Module Console App with External Dependency
Testing with JUnit
- Why Testing Matters in Java
- Writing Your First Test with JUnit 5
- Assertions and Test Structure
- Testing Edge Cases and Failures
- Organising Tests in a Maven Project
- Introduction to Mockito — mocking dependencies
- Test Coverage — what it tells you and what it doesn't
- Mini Project: Write a Full Test Suite for the Bank Account Class
- Mini Project: Test-Driven Development Exercise
Concurrency & Multithreading
- What Is Concurrency and Why Java Needs It
- Threads — creating and starting
- Runnable and Callable
- Race Conditions and Why They Are Dangerous
- The synchronized Keyword
- The ExecutorService and Thread Pools
- Futures and CompletableFuture Basics
- Thread-Safe Collections from java.util.concurrent
- Mini Project: Parallel File Processor using ExecutorService
- Mini Project: Producer-Consumer Simulation with Thread-Safe Queue
Standard Library Essentials
APIs & HTTP
- What Is an API?
- HTTP Basics — GET, POST, Headers, Status Codes
- Java's Built-in HttpClient (Java 11+)
- Parsing JSON Responses with Jackson or Gson
- Reading API Documentation
- Authentication — API Keys and Bearer Tokens
- Error Handling for Network Requests
- Mini Project: Weather CLI App Using a Public API
- Mini Project: GitHub Repository Fetcher
- Mini Project: Currency Converter with Live Exchange Rates
Professional Workflow (Git & GitHub)
Java in the Real World (Choose a Track)
- What It Means to Be a Java Developer
- Which Track Is Right for Me?
- Track: Backend APIs with Spring Boot
- Track: Android Development
- Track: Data Engineering with Apache Kafka and Spark
- Track: Enterprise and Microservices with Spring Cloud
- Track: Developer Tooling and CLI Tools
- Track: Game Development with libGDX