An online companion to help you master Java programming concepts, data structures, algorithms and more.
This is an online textbook for the course Programming concepts using Java.
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!
public class HelloJava {
public static void main(String[] args) {
// Your first Java program
System.out.println("Hello, Java Programmer!");
}
}
Programming styles
Memory management
Abstraction and modularity
Object oriented programming
Classes and objects
Basic datatypes
Control flow
Defining classes and objects
Basic input and output
The philosophy of OO programming
Subclasses and inheritance
Dynamic dispatch and polymorphism
Java class hierarchy
Subtyping vs inheritance
Java modifiers
Abstract classes
Interfaces
Private classes
Controlled interactions with objects
Callbacks
Iterators
Polymorphism revisited
Generics and subtyping
Wildcards
Generics at runtime
Reflection
Benefits of indirection
Concrete collections
Maps
Dealing with errors
Exceptions in Java
Packages
Assertions
Logging
Cloning
Type inference
Higher order functions
Streams
Optional types
Collecting results from streams
Optional Types
Collecting Results from Streams
Input/Output Streams
Serialization
Threads and Processes
Race Conditions
Mutual Exclusion
Test and Set & Semaphores
Monitors in Java
Thread Lifecycle
Concurrent Programming
Thread-Safe Collections
Intro to Swing Toolkit
Basic Components
Layout Managers
Event Handling