Second part of a two-part sequence in Java programming. Introduction to specifications, simple unity testing, and debugging; building and using canonical data structures; algorithm analysis and reasoning techniques such as assertions and invariants.
Only one of the following may be counted: Computer Science 307, 314, 314H, 315, 315H.
Prerequisite: Computer Science 312 or 312H with a grade of at least C-.
May be counted toward the quantitative reasoning flag requirement.