Milestone 1: Toolchain and Environment Setup

Building Your Professional Developer Workflow

Author

Chuck Nelson

Published

October 12, 2025

1 Milestone 1: The Java Toolchain

Tip🎯 Welcome to Milestone 1!

You’re about to set up your professional development environment and learn the fundamental workflow that programmers use every day. This is the foundation for all the coding you will do in this course and beyond.

1.1 Overview & Learning Journey

Welcome to your first milestone! This module has been redesigned to focus squarely on the foundational tools and processes that form the backbone of modern software development. Instead of diving deep into application logic, your goal is to become proficient with the Java toolchain. You will learn to navigate a command-line interface, set up a complete development environment, and practice the full cycle of version control, compilation, and testing.

Mastering this workflow is a critical first step in thinking and working like a professional programmer. The skills you build here will be used in every subsequent module.

1.2 What You’ll Accomplish

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

  • Configured a professional development environment with a Java Development Kit (JDK), Maven, and Git.
  • Cloned a remote repository from GitHub, authenticating using industry-standard methods like SSH or Personal Access Tokens.
  • Declared and used variables of primitive and non-primitive data types (e.g., String).
  • Used Maven to compile, test, package, and run a simple Java application using the JUnit testing framework.
  • Performed the full Git workflow: staging, committing (using Conventional Commits), pulling, and pushing changes.
  • Generated and linked API documentation using Javadoc.
  • Used an IDE for basic refactoring and debugging of compilation errors.
  • Translated a simple design diagram (UML) into a stubbed-out Java class structure.

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)
Setup Dev Environment Use current tools (2), Use system software (4), Maintain environment (6) Compile, debug, and test (2)
Use Command Line Use current tools (2), Apply concepts (3), Use system software (4), Maintain environment (6) Compile, debug, and test (2)
Declare and Use Variables Apply concepts (3), Implement solutions (5) Create and use data types and variables (3)
Version Control with Git/GitHub Communicate (1), Use current tools (2), Use system software (4), Implement solutions (5), Maintain environment (6) Compile, debug, and test (2), Develop modular solutions (4)
Build & Test with Maven & JUnit Use current tools (2), Apply concepts (3), Use system software (4), Implement solutions (5), Maintain environment (6) Compile, debug, and test (2)
Generate API Documentation Communicate (1), Use current tools (2), Use system software (4) Develop modular solutions (4), Use user-defined methods (5)
Refactor & Debug Code Apply concepts (3), Implement solutions (5), Maintain environment (6) Develop algorithmic solutions (1), Compile, debug, and test (2)
Read & Implement a Design Apply concepts (3), Implement solutions (5) Develop algorithmic solutions (1), Develop modular solutions (4)
Follow Instructions & Procedures Communicate (1), Use current tools (2) Develop modular solutions (4)

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. The following table maps the tasks you will complete to the KSAs defined by the O*NET SOC Code 15-1251.00 for Computer Programmers and the technologies you’ll use.

Module Task O*NET KSAs Technologies Used
Setup Dev Environment Knowledge: Computers and Electronics, Engineering and Technology
Abilities: Information Ordering
Development environment software: VS Code
Operating system software: Bash, Microsoft PowerShell
Use Command Line Knowledge: Engineering and Technology
Skills: Programming
Abilities: Information Ordering
Compiler and decompiler software: Command interpreters
Operating system software: Bash, UNIX Shell, Microsoft PowerShell
Declare and Use Variables Knowledge: Mathematics
Skills: Programming
Abilities: Mathematical Reasoning, Number Facility
Object or component oriented development software: Java
Version Control with Git/GitHub Skills: Programming, Active Learning
Abilities: Written Comprehension, Written Expression
Application server software: GitHub
File versioning software: Git
Network security and virtual private network VPN equipment software: SSH
Build & Test with Maven & JUnit Skills: Programming, Quality Control Analysis, Systems Analysis
Abilities: Deductive Reasoning, Problem Sensitivity
Development environment software: Apache Maven
Program testing software: JUnit, Symbolic debugger software
Enterprise application integration software: Extensible markup language XML
Generate API Documentation Skills: Writing
Abilities: Written Expression, Written Comprehension
Document management software: Javadoc (generates HTML)
Web page creation and editing software: HTML
Refactor & Debug Code Skills: Complex Problem Solving, Critical Thinking, Programming
Abilities: Problem Sensitivity, Deductive Reasoning, Inductive Reasoning
Development environment software: VS Code
Program testing software: Symbolic debugger software
Read & Implement a Design Skills: Reading Comprehension, Systems Analysis
Abilities: Written Comprehension, Information Ordering, Originality
Requirements analysis and system architecture software: Unified Modeling Language (UML)
Object or component oriented development software: Java
Follow Instructions & Procedures Skills: Active Listening, Reading Comprehension
Abilities: Information Ordering, Written Comprehension, Oral Comprehension
Project management software: GitHub Classroom
Office suite software: VS Code

1.5 Tools & Development Environment

1.5.1 Development Toolchain

This milestone is all about the tools. You will gain hands-on experience with the following:

Version control practices:

  • Cloning: Creating a local copy of a remote repository.
  • Staging & Committing: Preparing and saving snapshots of your work.
  • Conventional Commits: Writing clear, standardized commit messages.
  • Pulling & Pushing: Synchronizing your local repository with the remote on GitHub.

Commands you’ll master:

git clone <repository-url>
git pull
git add .
git commit -m "type(scope): description"
git push

Maven concepts to learn:

  • pom.xml: Understanding the Project Object Model file.
  • Build Lifecycle: Using phases like clean, compile, test, and package.
  • Dependency Management: Seeing how Maven handles project libraries.
  • Plugins: Using plugins like maven-javadoc-plugin and exec-maven-plugin.

Commands you’ll master:

mvn compile
mvn test
mvn package
mvn exec:java
mvn javadoc:javadoc

Key features to master:

  • Integrated Terminal: Running all your commands from within the editor.
  • Source Control View: Managing Git changes through a graphical interface.
  • Refactoring Tools: Safely renaming files and packages.
  • Problem Reporting: Identifying and understanding compile-time errors.
Back to top