CS 2102 (B11): Object-Oriented Design Concepts
Detailed Course Outcomes
Home |
Staff and Office Hours |
Lectures and Assignments |
MyWPI |
Policies
This course is designed to help you develop a set of facts, skills,
and abilities as detailed in the following list. Your course grades
will be based on your progress towards these outcomes. We do not
expect you to know the terms in these outcomes at the start of the
course.
Knowledge/Facts
Demonstrated through stating definitions, giving examples, and using constructs properly in practice
- What is an interface used for
- What is an abstract class used for
- What each access modifier does
- What abstract modifier means on methods
- What static does to a field
- What is a heap
- What is a binary tree
- What is an AVL tree
- What is a binary search tree
- What is a priority queue
- What is a hash table
- What comprises an ADT
- What is an invariant
- What is a generic in Java
- What is a graph
- What is memoization
Skills (basic competencies)
Demonstrated through writing programs and their associated artifacts
- Define classes and interfaces
- Define methods
- Write Test Cases
- Write functions that follow templates
- State Invariants
- Test Invariants
- Define generic classes
- Create lists with collection classes
- Iterate over collection classes
- Write Javadoc
- Write Junit tests
- Pass methods as arguments
- Write a Visitor
- Throw/catch exceptions
- Memoize a function
- Create cyclic data
- Traverse a graph (visit all nodes and terminate)
Conceptual Abilities
Demonstrated in decisions reflected in designs/tests/code and explanations/justifications of these decisions
- Create class hierarchy for a problem
- Know when to use interfaces versus abstract classes
- Know how to protect data from access/modification
- Recognize clean code
- Produce clean code
- Abstract over data with shared components
- Abstract over shared functions
- Know when to use generics
- Choose an appropriate data structure
- Test that invariants hold
- Test programs with multiple correct answers
- Know when to use mutation
- Know when not to use mutation
- Test programs that use mutation
- Know when not to use instanceOf
- Know when to use a Visitor
- Argue that a program fully traverses a data structure
- Argue that a program will terminate