
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!
| Week | Content | Summary and Implementations |
|---|---|---|
| 1 | Programming concepts: Programming styles, Memory management, Abstraction and modularity, Object oriented programming, Classes and objects | Open |
| 2 | Introduction to Java: Basic datatypes, Control flow, Defining classes and objects, Basic input and output | Open |
| 3 | Subclasses and inheritance: The philosophy of OO programming, Subclasses and inheritance, Dynamic dispatch and polymorphism, Java class hierarchy, Subtyping vs inheritance, Java modifiers | Open |
| 4 | Abstract classes and interfaces: Abstract classes, Interfaces, Private classes, Controlled interactions with objects, Callbacks, Iterators | Open |
| 5 | Generics: Polymorphism revisited, Generics and subtyping, Wildcards, Generics at runtime, Reflection | Open |
| 6 | Collections framework: Benefits of indirection, Concrete collections, Maps | Open |
| 7 | Exception handling and packages: Dealing with errors, Exceptions in java, Packages, Assertions, Logging | Open |
| 8 | Cloning and streams: Cloning, Type inference, Higher order functions, Streams, Optional types, Collecting results from streams | Open |
| 9 | File handling and serialization: Input/Output streams, Serialization | Open |
| 10 | Concurrent programming-1: Threads and processes, Race conditions, Mutual exclusion, Test and set, Monitors | Open |
| 11 | Concurrent programming-2: Monitors in java, Thread in java, Thread safe collections | Open |
| 12 | Event-driven programming and GUI programming using swings: Graphical interfaces and Event-driven Programming, Swing ToolKit, Swing examples | Open |