Programming Concepts using Java

A comprehensive course on core programming paradigms using Java, focusing on Object-Oriented Programming, generics, exception handling, and concurrent programming.

This course used the Java language to provide a deep understanding of several core programming paradigms. It began with a thorough exploration of Object-Oriented Programming, covering class hierarchies, inheritance, polymorphism, and abstract classes in detail. We then moved to essential Java features like the Collections framework, generics, I/O serialization, and robust exception handling. A significant portion of the course was dedicated to concurrent programming, providing the critical skills needed to build multi-threaded and responsive applications, a key requirement in modern software development.


Instructor

Prof. Madhavan Mukund, Director, Chennai Mathematical Institute


Course Schedule & Topics

The course is structured over 12 weeks, focusing on OOP principles before moving to advanced topics like concurrency.

Week Primary Focus Key Topics Covered
1 OOP: Class Hierarchy Understanding the basics of classes, objects, and how they form hierarchies.
2 OOP: Inheritance & Overriding Implementing inheritance to create specialized classes and overriding methods for custom behavior.
3 OOP: Polymorphism Leveraging polymorphism to write more flexible and reusable code.
4 OOP: Abstract Classes Defining abstract classes and methods to create templates for subclasses.
5 Collections & Iterators Working with Java’s built-in data structures and using iterators to traverse them.
6 Generics & Callbacks Implementing type-safe collections with Generics and understanding the callback pattern.
7 Advanced Java Features I Object cloning, I/O serializations for object persistence, and organizing code with Packages.
8 Advanced Java Features II Continued practice and deeper dive into cloning, I/O, and packages.
9 Exception Handling Techniques for building robust applications by handling runtime errors and exceptions.
10 Concurrent Programming I Introduction to multi-threaded programming and concurrency fundamentals.
11 Concurrent Programming II Intermediate concepts and patterns in concurrent programming.
12 Concurrent Programming III Advanced topics and practices for building robust concurrent applications.

Material used