1. Ana Howlett | 2. Eileen Wiedbrauk |
Software engineering Steps to establish the correctness of an algorithm Modularity |
Problem solving Mathematical induction/base case/inductive step Modifiability |
3. Andrew Thomas | 4. Josh Coats |
Solution Coding Ease of use |
Algorithm Testing Fail-safe programming |
5. Chad Homan | 6. Chris Brolsma |
Life cycle Refining the solution Extensive use of functions |
Specification Production Use of private data members |
7. Ashley Ahern | 8. Kunle Olowoyeye |
Prototype program Maintenance Avoidance of global variables in functions |
Design Abstraction/functional abstraction/data abstraction Proper use of reference arguments |
9. Wesley Anderson | 10. Ramdai Subedi |
Modules ADT Proper use of functions |
Loosely-coupled Data structures Error handling |
11. Morgan Bates | 12. Mike Oren |
Interfaces Public Readability |
Highly cohesive Private Documentation |
13. Stephen Chambers | 14. Jack Wilkinson |
Modularity Information hiding Initial comments |
Data flow Objects/Object-oriented Initial comments in each class |
15. Evan Goad | 16. Steve Burch |
Contract Encapsulation Initial comments in each function |
Preconditions Class/object/instance Comments in the body of each function |
17. Mike Duffee | 18. Ryan Fenstermaker |
Postconditions Data members/data fields/ attributes/methods/functions Debugging functions |
Risk analysis Top-down design Debugging "loop" statements |
19. Mike Spiegel | 20. Eric Gibson |
Verification Structure chart Debugging "if" statements |
Assertion/invariant/loop invariant Design guidelines Using "cout" statements |