Programming and Software Engineering

From your very first variable to shipping and maintaining real systems: the craft of writing code, the discipline of structuring it with objects, and the engineering practices that turn a program into software a team can trust.

This subject course follows the topic vertically, across the years it spans. Some lessons are already written; the rest are shown as placeholders.

Year 1 — Programming I

  1. Variables and Assignment
  2. Data Types
  3. Arithmetic Operators
  4. Comparison and Logical Operators
  5. Input and Output
  6. Selection: If/Else
  7. Nested Selection and Iteration
  8. Count-Controlled Iteration
  9. Condition-Controlled Iteration
  10. Subroutines: Procedures and Functions
  11. Parameters and Return Values
  12. Local and Global Variables
  13. Lists and Arrays
  14. Two-Dimensional Arrays
  15. String Handling
  16. Records
  17. Input Validation
  18. Defensive Design
  19. Errors: Syntax, Logic and Runtime
  20. Reading and Tracing Code
  21. Recursion
  22. Reading and Writing Files

Year 1 — Object-Oriented Programming

  1. Classes and Objects
  2. Encapsulation
  3. Inheritance
  4. Polymorphism

Year 2 — Software Engineering

  1. The Software Development Lifecycle
  2. Requirements Engineering
  3. UML and Modelling
  4. Design Principles: SOLID
  5. Design Patterns
  6. Software Architecture
  7. Testing and Defensive Design
  8. Continuous Integration and Delivery
  9. Version Control
  10. Agile and Scrum
  11. Refactoring and Technical Debt