Skip to content

Phase I - Introduction to Programming

Overview

Phase I establishes the foundational skills required for success throughout the program. In this phase, students build a strong baseline in software development tooling, programming fundamentals, object-oriented design, and algorithmic problem solving. The focus is on understanding how modern developers work, not just writing code.

By the end of Phase I, students will be comfortable working in containerized environments, managing source code with Git and GitHub, writing and testing programs in Python and JavaScript, and applying core computer science concepts such as Big-O notation, data structures, and algorithmic patterns. This phase prepares students for full-stack development, AI systems, and cloud architecture in later phases.


Modules

Module 1 – Fundamentals

Module 1 introduces students to the essential tools and workflows used in modern software development. Students begin by learning Docker fundamentals, including how to write Dockerfiles and run isolated Ubuntu environments to execute shell commands and scripts. Version control is introduced through Git and GitHub, where students learn to fork, clone, branch, commit, push, pull, and collaborate on projects using industry-standard workflows.

The module also provides a practical introduction to Python and JavaScript, covering core language syntax, primitive and complex data types, and commonly used methods. Students are not expected to achieve language mastery at this stage, but rather to develop the ability to research, reason through problems, and apply documentation effectively. Test-Driven Development (TDD) is introduced using Pytest and Jest, reinforcing the importance of writing reliable, testable code. The module concludes with an introduction to GitHub Actions, where students create CI workflows to automatically run tests and apply linting on code pushes and pull requests.


Module 2 – Object-Oriented Programming (OOP)

Module 2 focuses on Object-Oriented Programming as a tool for writing scalable, maintainable, and reusable code. Students learn the purpose and benefits of OOP by applying principles such as the Single Responsibility Principle (SRP) and Don’t Repeat Yourself (DRY), while exploring the five core pillars of OOP.

Topics include the distinction between class-level and instance-level attributes and methods, as well as key concepts like abstraction and encapsulation. The module concludes with inheritance and composition, enabling students to design flexible systems and make informed decisions about code reuse and structure.


Module 3 – Data Structures & Algorithms

Module 3 introduces foundational data structures and algorithms that are essential for technical interviews and real-world problem solving. This material is delivered incrementally throughout the program to reinforce concepts over time.

Students explore searching techniques (binary vs. linear search), algorithmic complexity through Big-O notation, and common problem-solving patterns such as single and double pointer techniques. Core data structures including stacks, queues, linked lists, doubly linked lists, and binary trees are covered, alongside recursion and sorting algorithms. The module culminates in a technical interview demonstration, helping students understand how to articulate their thought process and approach algorithmic problems under interview conditions.


Technologies

Throughout Phase I, students work with the following tools and technologies:

linux bash docker git git javascript jest python python python