Syllabus  |   Lectures  |   Downloads  |   FAQ  |   Ask a question  |  
Course Co-ordinated by IIT Kharagpur
Prof. Partha Pratim Das
IIT Kharagpur


Download Syllabus in PDF format

Untitled Document

The complexity of software systems is ever on the rise – more complex problem domains being attempted (complex embedded systems), ever growing man-power engaged in increasingly intricate development processes to turnaround in shorter and shorter time, possible flexibility of software being stretched to the limit with XaaS, platforms getting challenging with widely expanding distribution, cloud computation etc. Hence the analysis and design of software require well-organized and structured approaches to manage the challenges of complexity. 

Over the past two decades methods of Object-Oriented Analysis, Design and Programming have proved to be effective solutions in handling the inherent complexity of software design, development, testing and maintenance. Concepts of OOAD like Abstraction, Encapsulation, Modularity, Hierarchy, Object, State, Behavior, Identity, Class, Operation, Interface, Inheritance, Association, Aggregation, Decomposition, Use-case, etc. have become the lingua franca for the software developers; ubiquitous notation of UML has firmly established itself as the vehicular language for design; and many object-based as well as object-oriented languages have become available and have been widely adopted1 – Java (21%), C++ (6%), C# (4%), VB / VB.NET (4%), Python (3%), Perl (2.5%), Ruby (2.5%), Objective-C (2%), Delphi/Object Pascal (2%), D (1%) – to name a few. Even out of C (14%) developers, a large section today adheres to OOAD / OOP principles. 

The present course introduces OOAD grounds up starting with breaking down the root cause of inherent software complexity. After an in-depth exposure to Object Models, Classes and their interactions, the course takes a thorough tour of the diagrams of UML 2.0. Several systems examples help students understand the concept and tutorials offer quick practice. The course ends with a brief discourse on OOP in C++. 

While this course can be followed independently (with some programming background), it would help in practicing OOP in C++ or Java. Hence this course is advised in conjunction with C++ / Java.




Software Complexity: Understanding the challenges OOAD can address.


Object Model: Defining the primitives of the OO paradigm.


Classes and Objects: Bringing in the broader perspectives.


Classes and Objects: Identification approaches using OOAD.


Unified Modeling Language.


Unified Modeling Language.


Unified Modeling Language.


OOAD Case Studies: Applying OOAD in different contexts.

1. Basic Knowledge of Programming & Data Structure
2. Experience of Programming Projects would help; but is not mandatory
3. Attending a course on C++ with this course will help

Text Books / Basic Material
1. Object-Oriented Analysis and Design with Applications, Third Edition by Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young, Jim Conallen, and Kelli Houston, 2007. This book will be followed in the course.
2. Learning UML 2.0 by Russ Miles & Kim Hamilton (O’Reilly), 2006
3. Presentations used in the Course

Reference Material
1. Object Management Group (OMG): This is the official Site for UML.
2. Design Patterns: Elements of Reusable Object-Oriented Software with Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, 2003

Important: Please enable javascript in your browser and download Adobe Flash player to view this site
Site Maintained by Web Studio, IIT Madras. Contact Webmaster: