Programming Concepts Using Java

An online companion to help you master Java programming concepts, data structures, algorithms and more.

Course Overview

This is an online textbook for the course Programming concepts using Java.

Note to students

This book is meant to be used as a reference. You may find content that has not been covered in the video lectures. Likewise, there may be some content that is present in the lectures which is not covered here. Additional content appearing in this book will not be considered for grading. In summary, please refer to chapters that you feel are relevant for the course. But you are under no obligation to read the entire book cover to cover. Interested students are always welcome to read the entire thing!

Quick Start Example
Java
public class HelloJava {
    public static void main(String[] args) {
        // Your first Java program
        System.out.println("Hello, Java Programmer!");
    }
}

Course Content

Programming styles

Memory management

Abstraction and modularity

Object oriented programming

Classes and objects

Open Materials

Basic datatypes

Control flow

Defining classes and objects

Basic input and output

Open Materials

The philosophy of OO programming

Subclasses and inheritance

Dynamic dispatch and polymorphism

Java class hierarchy

Subtyping vs inheritance

Java modifiers

Open Materials

Abstract classes

Interfaces

Private classes

Controlled interactions with objects

Callbacks

Iterators

Open Materials

Polymorphism revisited

Generics and subtyping

Wildcards

Generics at runtime

Reflection

Open Materials

Benefits of indirection

Concrete collections

Maps

Open Materials

Dealing with errors

Exceptions in Java

Packages

Assertions

Logging

Open Materials

Cloning

Type inference

Higher order functions

Streams

Optional types

Collecting results from streams

Open Materials

Optional Types

Collecting Results from Streams

Input/Output Streams

Serialization

Open Materials

Threads and Processes

Race Conditions

Mutual Exclusion

Test and Set & Semaphores

Open Materials

Monitors in Java

Thread Lifecycle

Concurrent Programming

Thread-Safe Collections

Open Materials

Intro to Swing Toolkit

Basic Components

Layout Managers

Event Handling

Open Materials

Additional Resources

Documentation

Access the official Java documentation for comprehensive references.

View Docs