Home

Course Contents

Grading Policy

Resources

Marks

Student List

CS 40017: Object Oriented System Design (OOSD)



The course is designed primarily to bring synergy and interplay among the following core components of the Computer Science Curriculum::

 Course Contents:

  1. Introduction & Course Overview
    • Contemporary & Emerging Computing Environments
    • Trusted Computing
    • Software Reuse

      Phase I: Object Oriented Computing : Understanding and Concepts

  2. Evolution of Programming System Techniques
    • Programming Language Paradigms
    • From Procedural to OOP
    • Synergy between PLDI and Software Engineering Emergence of VEE
    • Evolution of OOP

  3. Data Abstraction Computing Paradigm
    • Towards better programming practices
    • ADT - Types, Interfaces & Implementation

      Phase II: Object Oriented Programming (OOP)

  4. Core Java
    • Java Preliminaries,
    • Java for computing with built-in data types
    • Java with objects as ADTs
    • Java with objects for OOC
    • Java Exception Handling and Assertions

  5. Inheritance
    • Forms of Inheritance
    • Type Substitution, Subtypes and Subclasses

  6. Runtime Type Identification & Introspection
    • Runtime Type Identifiers (RTTIs)
    • 'Class' and 'Object' Classes

      Phase III: Object Oriented Analysis & Design (OOAD)

  7. Data Abstraction Computing Paradigm (Contd ...)
    • Abstraction and Encapsulation
    • Software Reuse through Generic-ity: Generic Programming and Generic Algorithms

  8. Object Oriented Computing
    • Need for OOC for software Reuse
    • Type and sub-types,
    • Inheritance and Polymorphism,
    • Pillers of OOC: Message Dispatch, Dynamic Type, and Late Binding
    • Commonality of Abstraction / Interfaces
    • OO System Design & Implementation,
    • Type substitutiion and dynamic cast.
    • Software Reuse -- Design, Source Code and Binaries

  9. Object Oriented Modelling
    • Object Model: Structure & Behavior
    • Class, Object and Relations
    • Classes, Responsibilities and Collaboration (CRC)

  10. OO Analysis and Design with UML
    • UML Notations
    • UML Structure and Behaviour Diagrams

      Phase IV: Object Oriented Language Implementation (OOLI)

  11. Review : Language Implementation
    • Bootstrapping & Retargeting
    • Compiler Writing Tools and Generators
  12. Object Oriented Prog. Language Implementation
    • Data Structures for facilitating OOC
    • Class and Methods: Static & Non-Static
    • Constructors and Method Overloading
    • Message Dispatch and RTTIs
    • Generics and parameterized polymorphism

      Phase V: Runtime System : Virtual Execution Environment

  13. Virtual Execution Environment
    • Virtualization
    • CISC & RISC ISA vs. P-Code (Bytecode/MSIL)
    • Stack-based code execution and property verification
    • VEE Architecture
    • Memory Management and Garbage Collection
    • Class Loader and Initiliazer
    • Linker and Verifier
    • Code Interpretation and JIT
    • Runtime Security
    • Reflection: Structural and Computational
    • Case studies from JVM (or Microsoft/CLR)

      Phase VI: Object Oriented Software Engineering (OOSE)

  14. Trusted and Reusable System
    • Software Reuse
    • Synergy between PLI and SE
    • Trusted & Efficient Systems
  15. Design Patterns & Implementation