Course Details
Subject {L-T-P / C} : CS2016 : Object Oriented Design and Programming { 3-0-0 / 3}
Subject Nature : Theory
Coordinator : Bibhudatta Sahoo
Syllabus
Module 1: Introduction to Java and OOP Concepts
History and evolution of Java
Overview of Object-Oriented Programming: Principles of OOP (Encapsulation, Abstraction, Inheritance, Polymorphism)
Features of Java: JVM, JDK, JRE, platform independence
Basics of Java: Data types, operators, control structures, and arrays
Module 2: Classes, Objects, and Methods
Defining classes and creating objects
Constructors and destructors
Access modifiers and static members
Method overloading and overriding
Object class and its methods
Module 3: Inheritance and Interfaces
Single and multilevel inheritance
Method overriding and the use of super keyword
Abstract classes and interfaces
Multiple inheritance using interfaces
Role of final and abstract
Module 4: Exception Handling
Types of exceptions and their hierarchy
Try, catch, throw, throws, and finally blocks
Custom exceptions
Importance of exception handling in robust software development
Module 5: Java Collections Framework
Introduction to Collections: Lists, Sets, and Maps
Iterators and enhanced for loops
Generics in Java
Collections utility class
Module 6: File Handling and Streams
File I/O using streams (byte and character streams)
Serialization and deserialization
Reading and writing files
Module 7: Multithreading and Concurrency
Thread lifecycle and Thread class
Synchronization and inter-thread communication
Multithreading concepts in Java
Executors and thread pools
Module 8: GUI Development with JavaFX/Swing
Introduction to JavaFX/Swing
Event-driven programming
Layout managers
Creating simple GUI applications
Module 9: Design Patterns and UML
Overview of common design patterns (Singleton, Factory, Observer, etc.)
UML class diagrams and sequence diagrams
Application of design patterns in Java
Module 10: Mini Project
End-to-end Java application development involves GUI, file handling, multithreading, and database integration.
Course Objectives
- To introduce the principles of Object-Oriented Programming (OOP) and their implementation in Java.
- To enable students to design and develop robust, reusable, and maintainable software solutions.
- To provide hands-on experience in solving real-world problems using Java and familiarize students with standard libraries and tools available in Java.
- To cultivate teamwork and collaborative programming skills through project-based learning.
Course Outcomes
Upon successful completion of this course, students will be able to:
1. Understand and apply the fundamental concepts of object-oriented programming.
2. Design and implement Java-based solutions using OOP principles like encapsulation, inheritance, and polymorphism.
3. Use Java libraries to solve computational problems and create GUI-based applications.
4. Apply design patterns and UML modeling to real-world software development problems.
5. Work collaboratively on a team project to develop and deploy a Java application.
Essential Reading
- Cay S. Horstmann, Gary Cornell, Core Java Volume I - Fundamentals, Pearson Education , 11th Edition, 2021
- Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Object-Oriented Analysis and Design with Applications, Addison-Wesley , 3rd Edition, 2007
Supplementary Reading
- E. Balagurusamy, Programming with Java: A Primer, McGraw Hill , 6th Edition, 2019
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley , 1st Edition, 1994