140 likes | 147 Views
A comprehensive marine biology simulation assignment that focuses on object-oriented design, offering a robust and flexible framework. Requires a broad range of skills and includes source code.
E N D
Nifty Assignments:Marine Biology Simulation Eric Cheng Mathias Ricken Dung “Zung” Nguyen Stephen Wong OOPSLA ‘04 Educators’ Symposium October 25, 2004
Marine Biology Simulation • Based on AP Marine Biology Simulation • Completely redone using OO design • More robust, flexible, and extensible • Two-week assignment in our objects-first CS2 courses • Requires broad range of skills • Assignment and Source Code Available • http://www.owlnet.rice.edu/~comp202
Structure of the Assignment • Milestone 1 • Part 1: KnightFish Add a new fish species to the simulation • Part 2: WrappingEnv Add a new kind of environment • Milestone 2 • Part 3: Internals Re-implement parts of the simulation framework • Part 4: Behavior Strategies Refactor framework to allow dynamic behavior changes Support code includes solution to Milestone 1
Part 1: KnightFish Randomly pick one of 8 targets 1 2 8 3 7 4 6 5
Part 1: KnightFish • Turn into right direction • For each step • If blocked, done • If open, go there and attempt the next step 3
Part 1: KnightFish • Complicated behavior • Procedural programming: nested if-statements • OOP: nested visitors • Visitor-Based Delegation Model • Process flow diagramming makes designing complex algorithms a systematic process • Cannot forget to handle a situation (compiler error!)
Part 2: WrappingEnv Grid-based, bounded, and rectangular environment If the fish leaves on one side, it re-enters from the other side (toroidal)
Part 2: WrappingEnv • Students learn • To reuse existing code by subclassing • To integrate new code into a framework • Students’ code still based on existing code • But cannot simply be copied and modified anymore
Part 3: Internals • Code missing in several places of the framework • Students reimplement critical portions • Gives students a tour of the entire framework • Unit tests provide guidance • Error messages in plain English
+ void move() + void move() + void move() Part 4: Behavior Strategies Static Behavior! Separate the variants from the invariants Strategy Pattern Dynamic Behavior Change
Part 4: Behavior Strategies • Students have the opportunity to • Apply design patterns to improve the project • Refactor a substantial portion of the code • Experience how loose coupling makes this easy • Requires new design and code that augments existing framework
Assignments in Objects-First • Assignments have to be rich and deep • Highlight benefits of object-orientation • Large design portion • Find proper abstractions, variants / invariants • Solve family of problems • Challenge to find suitable assignments • Must be within students’ grasp • Milestone 2 due today!
The Culmination of a Unified OO Pedagogy ~ end of 2nd semester. MBS Unit Tests Design Patterns Polymorphism Abstract Structure and Behavior