Last year you learned to build a program for somebody. This year you learn to build software with somebody — designed so the problem is modelled rather than merely processed, with algorithms you chose for reasons you can defend, and written so the next person can pick it up after you have gone. In the curriculum’s own words, three of the goals are:
C1. Modular Design
demonstrate the ability to apply modular design concepts in computer programs;
Link to original
C2. Algorithm Analysis
analyse algorithms for their effectiveness in solving a problem.
Link to original
B2. Software Project Contribution
apply standard project management techniques in the context of a student-managed team project.
Link to original
The full set — every overall and specific expectation across the four strands — lives in the Curriculum folder, and each task links to exactly the expectations it addresses.
Put plainly, week to week that means:
- Model the problem — when variables stop being enough, classes give the things in your problem names and behaviour; see Objects and Classes.
- Choose the right container, and say why — a list, a dictionary, a stack, or a queue is a decision with consequences, not a habit; see Choosing a Data Structure.
- Defend your algorithm — Efficiency and Big-O gives you the vocabulary for something you will first notice in a race between two programs that produce the same answer at very different speeds.
- Work like a team that outlives itself — version control, code review, and a handover somebody else can act on. Reading and extending code you did not write is not a chore in this course; see Reading Somebody Else’s Code, and The Software Project, which ends by giving the work away.