Course Modules
Structures in Programming
This module introduces fundamental programming structures, such as variables, control structures, and procedures, emphasizing the building blocks of software and their interactions.
Software Complexity
Students will learn about the nature of complexity in software systems, techniques to identify and manage complexity, and strategies to isolate or reduce it.
Incremental Development
This module covers the importance of incremental and iterative development, the benefits of evolving software design over time, and strategies for continuous improvement.
Abstractions
Students will explore creating and using abstractions in the form of functions, data structures, classes, and modules, focusing on managing complexity and improving code maintainability.
Modular Design
This module delves into principles of modular design, creating deep modules with simple interfaces, and techniques for effective modularization to enhance maintainability and scalability.
Handling Errors
Students will learn strategies for error handling and exception management, designing robust and resilient systems, and minimizing the impact of errors on system complexity.
Test-Driven Development (TDD)
This module introduces TDD principles and practices, writing tests before code, ensuring code quality, and the benefits and challenges of TDD.
Functional Programming vs. Object-Oriented Programming
Students will get an overview of functional programming concepts, compare them with object-oriented programming, and learn when to use each paradigm.
Documentation
This module covers writing effective README files and comments, choosing precise and intuitive names, writing obvious code, and maintaining consistency in coding practices.
Infrastructure & Deployment
Students will learn about serverless architecture, deploying static sites, building continuous integration and deployment pipelines, and best practices for maintaining clean and functional code throughout the development lifecycle.
Miscellaneous Topics
The course will also touch on DevOps principles and practices, Agile methodologies, and common design patterns to solve recurring problems in software development.
Capstone Project
In this final module, students will work on a capstone project that integrates learned concepts, with guidance through project planning, design, and implementation, culminating in a project showcase and feedback session.