Milestone 1: Toolchain and Environment Setup
Building Your Professional Developer Workflow
1 Milestone 1: The Java Toolchain
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 pushMaven concepts to learn:
pom.xml: Understanding the Project Object Model file.- Build Lifecycle: Using phases like
clean,compile,test, andpackage. - Dependency Management: Seeing how Maven handles project libraries.
- Plugins: Using plugins like
maven-javadoc-pluginandexec-maven-plugin.
Commands you’ll master:
mvn compile
mvn test
mvn package
mvn exec:java
mvn javadoc:javadocKey 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.