Programming with Java
From syntax to backend-ready Java
Start with Java as the engineering language for the program. Students learn to write clean, testable code that later becomes the backend foundation for the Feature Flag System and Trello.
Students create small Java services and domain models that later become flags, users, boards, cards, and permissions.
- Write clean Java programs with strong fundamentals.
- Model real-world entities using OOP and SOLID basics.
- Use collections, exceptions, files, streams, and tests confidently.
Java Fundamentals
Get comfortable with the language, tooling, debugging, and the mental model of writing programs that are easy to reason about.
Setup, IDE, Git, and Debugging
Install Java 17+, configure IntelliJ, run programs from the terminal, use breakpoints, inspect variables, and commit work cleanly.
Variables, Types, Operators, and Input
Understand primitive types, strings, casting, expressions, console input, and how type choices affect correctness.
Control Flow and Loops
Use conditionals, loops, switch expressions, guard clauses, and dry runs to translate requirements into working logic.
Methods and Recursion
Break code into reusable functions, reason about call stacks, and solve simple recursive problems before DSA begins.
Arrays, Strings, and Debug Tracing
Manipulate indexed data, trace loops, handle edge cases, and build confidence with the structures used heavily in DSA.
Object-Oriented Programming
Move from writing scripts to designing domain models for real products.
Classes, Objects, and Constructors
Represent products, users, permissions, cards, and flags as objects with meaningful state and behavior.
Encapsulation and Immutability
Protect state, expose safe APIs, and learn when immutable objects reduce bugs in product code.
Inheritance, Interfaces, and Polymorphism
Use abstractions for extensible behavior such as notification channels, flag rules, and card actions.
SOLID Principles Introduction
Apply single responsibility, dependency inversion, and open-closed thinking without over-engineering beginner code.
Collections and Generics
Learn the data containers used in backend services and problem solving.
List, Set, and Map
Choose the right collection for ordering, uniqueness, lookups, membership checks, and grouping.
ArrayList, LinkedList, HashSet, HashMap, and TreeMap
Compare behavior, performance, common operations, and real use cases in APIs and algorithms.
Generics and Type Safety
Design reusable containers, service responses, repositories, and utilities without losing compile-time safety.
Sorting and Comparators
Sort cards, releases, users, and problem inputs using custom ordering and comparator composition.
Errors, Files, Testing, and Modern Java
Round out the foundation with reliability habits that carry into every project.
Exception Handling
Use checked and unchecked exceptions, custom errors, and consistent failure messages for predictable APIs.
File Handling and Serialization
Read, write, parse, and persist simple data before moving to databases.
JUnit Basics and Testable Code
Write small unit tests, structure assertions, and catch regressions before code reaches larger systems.
Streams, Optional, Records, and Lambdas
Use modern Java features for transformations, null safety, DTOs, and concise business logic.
Concurrency Basics
Understand threads, executors, synchronization, and CompletableFuture at a practical backend level.
