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
Specification
-
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
Testing
-
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
Usability