EEN512 Study Guide (August to December 1999)
(I think this covers everything, but it is only a list of reminders.)
- Object Oriented Design
- Identify objects and relationships between them
- Object Model Diagrams
- Be able to construct one, or understand a given one
- Meanings of the shapes: rectangles, diamonds, triangles
- Meanings of connections and "blobs" on ends of connections
- Classes, attributes, relationships, roles, link attributes
- Difference between inheritance, membership, and relationship
- Be able to convert diagram into C++ or Java definitions
- And be able to do the reverse.
- Using classes to encapsulate and hide implementation details
- The dangers of trusting provided libraries:
- Programming
- The differences between using objects and pointers to objects
- Pointers, References, and Direct Objects, pros and cons, etc.
- Polymorphism via superclass pointers, (i.e. "Object" in Java.)
- Creation of objects and arrays in C++.
- Protected and Public members and inheritance
- (Re-)defining operators in C++
- overloaded method names and how methods are chosen
- Constructors and operators automatically provided by C++
- Virtual methods (and controversial use of p->method() when p
is NULL)
- Useful Algorithms and Data Structures (know how they work, why they
work, and be able to implement them in an object oriented way):
- The basic ones of course: linked lists and trees.
- Principles of Dynamic Programming.
- The "knapsack" (loading an aeroplane with boxes) problem.
- Tries.
- Hash Tables.
- Efficient implementation of Set operations.
- Proofs of Programs
- The concept of "Weakest Precondition"
- Basic rules for calculating wp(S,{Q}) where S is:
- Assignment, Sequence(;), SKIP,
Conditional.
Comprehensive Final Examination, 11am Thursday
9th December