Unit 3 — Transfer Track
Build the Unit 3 app in a language you already know, and show the same skills in it.
This Track Is for You If…
- You already write programs in a language other than Python, and can do basic work in it without looking up simple syntax.
- You've done Unit 2 work in that language, or can show your teacher the same evidence they'd look for at 2C.
Transfer skips the four Unit 3 lessons. You're not skipping the concepts. You show them directly, in your language.
Check Before You Choose
About 20 minutes, in the language you'd build in, with no notes. It isn't graded. It helps you and your teacher decide whether Transfer is the right track.
- Write a function that takes a list of records (each with a name and a number) and returns the names of the records above a threshold. Store the results in a keyed collection. Test it with one normal case and one empty list.
- In two or three sentences, say what your code does with a value that isn't a number. Then say how you'd change it if the input came from a file.
If you can do both, Transfer is a good fit. If not, start on Core and talk to your teacher. Nothing is locked in: you can change tracks before CP1.
Choosing Your Language
Use a language from the approved list on the 2C page. Those are the languages confirmed to work on the lab computers.
Want a language that isn't on the list? Ask your teacher at CP1. A new language gets added once it passes its check on a lab machine.
What You're Building
One app from the Unit 3 menu: inventory system, gradebook, game leaderboard or budget tracker. It's a console program: a menu, input, and a save file. Build it in your language, with the same requirements as Core and Extended.
Requirements Checklist
Your finished project must include all of these. (Ticking the boxes is just for you, it doesn't save.)
Concept Evidence: CONCEPTS.md
Instead of the four lessons, include a CONCEPTS.md file in your repo. It has one row for each concept below: where it appears in your code, and how it's tested. Your teacher should be able to find every concept in your code in a few minutes.
| Concept | Where it's in my code | How it's tested |
|---|---|---|
| Variables and data types, including one conversion between types | ||
| Conditionals | ||
| Loops or iteration | ||
| Functions with inputs and outputs | ||
| An ordered collection | ||
| A keyed collection | ||
| Input validation and error handling, in your language's style | ||
| Saving and loading data | ||
| Splitting code into more than one unit (module, file or package) | ||
| Running and testing with your language's own tools |
Your Language-Specific Concept
Pick one thing your language does differently from Python. Examples: ownership and borrowing in Rust, manual memory and pointers in C++, prototypes in JavaScript, pattern matching, or generics.
Explain it in your README, in your own words, with one piece of your code that shows it. This is the section your one-on-one will focus on.
Checkpoints at Transfer
| Checkpoint | What it looks like on this track |
|---|---|
| CP1 | Pitch names the language and why; pseudocode; your language's check command passes on a lab machine, committed; CONCEPTS.md started |
| CP2 | Menu runs with at least two features working; save and load working; test table written with expected results filled in |
| CP3 | All tests run with actual results recorded; CONCEPTS.md complete; language-specific section written; feature request triaged and done (or declined, with a reason); shown to a peer |
Start each checkpoint commit with CP1:, CP2: or CP3:, and push before your teacher calls you up.
How You're Assessed
The same 5 criteria as every other track. At CP3, your teacher will call you up for a short one-on-one: you'll walk through one function, explain one choice, and change one small thing live.
Done Looks Like…
Someone can run your app, add something, close it, reopen it, and find it still there. Your tests show that, your CONCEPTS.md shows where each concept lives, and your language-specific section shows you understand why your language works the way it does.