Students learn to plan with tools and techniques appropriate to Object Oriented Programming (OOP).

In topic 12 students use the powerful, industry standard Unified Modelling Language (UML) to visually plan and document projects, but beginning with old fashioned "user stories" and other "use cases".

In topics 12 and 13, students tackle the "ATM Case Study" as they implement user stories, use case, use case diagrams, class diagrams, sequence diagrams and state diagrams.  Students also become acquainted with other power diagrams as well.

In topic 13 students learn to generate HTML web based "Javadoc" files to automate program design.

In topic 17 students learn to apply "persistent" technology to ensure data "permanence" as they become immersed in powerful applications of file handling, including both sequential access and direct (random) access file handling.

In topic 18 students tackle eloquent solutions to iteration using recursive algorithms where classical problems are tackled, including factorials, the Fibonacci sequence, the infamous Towers of Hanoi and the mysteries and art of factorials.

In this course students study the efficiency and power of algorithms and learn to leverage the work and legacy of those who came before.

In topic 19 students compare and contrast the code and patterns of searching and sorting algorithms.  The Binary and Sequential searches are compared.  Then a number of different sorting algorithms are compared for speed under different conditions; the Bubble Sort, Selection Sort, Insertion Sort, Quick Sort and Merge Sort give students the opportunities to understand how and why to compare relative measures of efficiency as "Big O", where efficiencies can differ by orders of magnitudes.

The holy industrial grail of Computer Science is the optimization of reuse of code; enter the application of generic collections (libraries), generic classes and methods and the customization of generic data structures.

In topics 20- 22 students begin to see how it possible to deal with incredible complexity and quantity of functionality.

The course ends with applications of organizational structures that manipulate huge quantities of records of information culminating in variations of linked lists and binary search trees; abstract data types (ADTs) that are defined by their structure but may have varying real world implementations:  stacks, queues, and maps.