Milestone 2: Algorithmic Thinking & Software Design

From Methods to Professional Practices

Author

Chuck Nelson

Published

October 13, 2025

1 Milestone 2: From Methods to Professional Practices

Tip🎯 Welcome to Milestone 2!

You will extend the Task Manager application by implementing core logic, refactoring for performance, and learning the essential arts of exception handling, debugging, and testing.

1.1 Overview & Learning Journey

Welcome to your second milestone! Building on the toolchain you assembled in Milestone 1, you will now deepen your Java knowledge by exploring core programming concepts. This milestone shifts focus to implementing logic, using flow control statements, working with advanced data structures, and showing how code evolves through refactoring.

Continuing in your role as a programmer, you will implement and then improve the Task Manager application. You will translate UML designs into code, and then refactor that code for better performance and robustness. This involves using ArrayList and HashMap and understanding the trade-offs between them, using control flow statements like switch for complex logic, and using an Iterator for safe data manipulation. This process of iterative improvement is central to professional software development.

1.2 What You’ll Accomplish

By the end of this milestone, you will have successfully:

  • Implemented complex control flow statements (if, for, switch) to manage application logic.
  • Utilized and compared Java’s built-in data structures, using ArrayList for storage and HashMap for efficient lookups.
  • Refactored existing code for significant performance improvements.
  • Safely modified collections during iteration using an Iterator.
  • Translated UML Class Diagrams into an executable Java class structure.
  • Handled application errors gracefully by throwing and catching both built-in and custom exceptions.
  • Traced program execution and state using the live debugger in VS Code to pinpoint logic errors.

1.3 Course Learning Objectives Alignment

The tasks in this milestone directly support the following Program and Course Learning Outcomes.

Module Task Program Learning Outcomes (PLOs) Course Learning Outcomes (CLOs)
Control Flow & Data Structures Apply concepts (3), Implement solutions (5) Develop algorithmic solutions (1), Create and use data types (3)
Refactoring & Optimization Apply concepts (3), Implement solutions (5) Develop algorithmic solutions (1)
API Stubbing & Class Design Communicate (1), Apply concepts (3), Use system software (4), Implement solutions (5) Develop algorithmic solutions (1), Develop modular solutions (4), Design applications that use file I/O and/or database connectivity (7)
Exception Handling Apply concepts (3), Implement solutions (5), Maintain environment (6) Design applications that throw and catch exceptions (6)
Debugging Use current tools (2), Apply concepts (3), Use system software (4), Implement solutions (5), Maintain environment (6) Compile, debug, and test (2)

1.4 Learning Objectives & Professional Alignment

The exercises in this module are designed to build specific, marketable skills that align directly with the Knowledge, Skills, and Abilities (KSAs) of a Computer Programmer (O*NET SOC Code 15-1251.00).

Module Task O*NET KSAs Technologies Used
Control Flow & Data Structures Knowledge: Mathematics, Computers and Electronics
Skills: Programming, Critical Thinking
Abilities: Deductive Reasoning
Object or component oriented development software: Java (switch, Iterator)
Refactoring & Optimization Knowledge: Computers and Electronics
Skills: Programming, Systems Analysis, Critical Thinking
Abilities: Speed of Closure, Fluency of Ideas
Object or component oriented development software: Java (HashMap)
API Stubbing & Class Design Skills: Programming, Systems Analysis, Reading Comprehension
Abilities: Information Ordering, Written Comprehension
Object or component oriented development software: Java
Requirements analysis and system architecture software: Unified Modeling Language (UML)
Exception Handling Skills: Complex Problem Solving, Critical Thinking, Programming
Abilities: Problem Sensitivity
Object or component oriented development software: Java
Debugging Skills: Complex Problem Solving, Critical Thinking, Programming, Quality Control Analysis
Abilities: Problem Sensitivity, Deductive Reasoning
Development environment software: VS Code
Program testing software: Symbolic debugger software

1.5 Tools & Development Environment

1.5.1 Development Toolchain

This milestone focuses on core Java concepts, debugging, and testing. You will gain hands-on experience with the following:

Key concepts to master:

  • Control Flow: Using if/else, for loops, and switch statements to direct the flow of execution.
  • Data Structures: Working with ArrayList for ordered storage and HashMap for fast key-value lookups.
  • Iteration: Using for-each loops for simple iteration and an Iterator for safe removal during iteration.
  • User-Defined Types: Creating your own classes and enums to model application data.
  • Exception Handling: Using try-catch-finally blocks and creating custom exception classes.

Key features to master:

  • Breakpoints: Pausing execution at specific lines of code.
  • Stepping Controls: Using “Step Over,” “Step Into,” and “Step Out” to control execution flow.
  • Call Stack: Inspecting the sequence of method calls that led to the current point.
  • Variables Panel: Watching variable values change as you step through code.
Back to top