National Institute of Technology Rourkela

राष्ट्रीय प्रौद्योगिकी संस्थान राउरकेला

ଜାତୀୟ ପ୍ରଯୁକ୍ତି ପ୍ରତିଷ୍ଠାନ ରାଉରକେଲା

An Institute of National Importance

Syllabus

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