The quiz will be a closed-book quiz. Here is a list of topics that have been covered this term that may appear in the quiz. You won't be tested on obscure details of JavaTM.

Basic Programming Notions

  • Assignment Semantics, Aliasing and Sharing
  • Class Hierarchy, Dynamic Dispatch, Inheritance
  • Subclasses and Interfaces
  • Exceptions, Checked and Unchecked
  • Namespace and Access Control Mechanisms
  • Static Variables and Methods
  • Constructors; References to this and super Object
  • Hash Tables and Hash Codes
  • Casts and Runtime Type Checks
  • Overloading of Method Names
  • Runtime Assertions
  • Subtyping in JavaTM
  • Deep vs. Shallow Copying
  • Reference vs. Value Equality
  • Parametric Polymorphism


  • Declarative vs. Operational Specification
  • The Relational Model of Behavior
  • Preconditions and Postconditions
  • Frame Conditions
  • Standard Syntax for Specifications
  • Non-deterministic or 'Underdetermined' Specifications
  • The Idea of Substitutability
  • The Refinement Ordering
  • Subtypes vs. Subclasses
  • Co- and Contra-variance
  • The Object Contract

Abstract Data Types

  • The Idea of Representation Independence
  • Encapsulating the Representation
  • Representation Invariants
  • Classification of Operations into Constructors, Mutators, Observers
  • Abstraction Functions
  • Representation Exposure
  • Arguments by Structural Induction
  • Mutable and Immutable Types
  • Beneficent Side Effects
  • Notions of Equality
  • The Basic Idea of Algebraic Specification

Object Models

  • Instances versus Models
  • Multiplicity Constraints
  • Final Markings

Module Dependency Diagrams

  • The Dependence Relation
  • Dependences Mediated by Specifications
  • Effect of Dependence Structure on Division of Labour, Reuse, Reasoning, Testing
  • Decoupling by Weakening Dependences

Design Patterns

  • The Idea of Design Patterns
  • Effect of Design Patterns on Dependences
  • Composite, Decorator, Iterator, Factory Method, Abstract Factory, Strategy, Template


  • Oracles, Stubs and Drivers
  • Kinds of Testing: Unit Testing, Regression Testing, etc.
  • Basic Notion of Coverage
  • Value and Limitations of Testing
  • Code-based vs. Specification-based Testing


  • Basic Principles
  • Simple Cognitive Model and its Consequences
  • Standard Heuristics
  • Methods for Improving Usability