← Course Home
Module 13

Real-World Synthesis

No new syntax in this module. Ten tiers, each anchored to a module you've already finished, each built around a script an actual IT/SecOps admin would actually write. This is where you find out the toolkit works.

Tier 1 · Anchors Module 1

New-Hire Message Printer

Every IT admin's first real script: turn a few raw facts about a new hire into a readable onboarding message. Ten labs, nothing but what Module 1 taught you — variables, types, conversion, f-strings.

Lab 1

The Basic Welcome Line

Create first_name = "Maria", last_name = "Santos", department = "IT". Print one f-string welcome line combining all three, in the form: "Welcome, FIRST LAST! You have been added to the DEPT department."

Welcome, Maria Santos! You have been added to the IT department.
Lab 2

Add the Account ID

Add employee_id = 48213 (an integer, not a string). Print "Your employee ID is ID." using an f-string — embed the int directly, no conversion needed.

Your employee ID is 48213.
Lab 3

The Bool That Prints Oddly

Add is_full_time = True. Print "Full-time status: VALUE" using an f-string, embedding the raw boolean directly.

Full-time status: True
Lab 4

The Leading-Zero Gotcha

Create badge_number = "004521" — exactly how a badge field often arrives from a form. Print it as-is. Then convert it with int(badge_number) and print the result. Watch what happens to the leading zero.

004521 then 4521 — the leading zero silently disappears on conversion. This is a real, common bug source: never convert an ID field to int unless you're sure it isn't meant to keep its leading zeros.
Lab 5

The Multi-Field Summary Line

Using the variables from Labs 1-3 (first_name, last_name, department, employee_id, is_full_time), print one combined summary line: "NAME | DEPT | ID employee_id | Full-time: is_full_time".

Maria Santos | IT | ID 48213 | Full-time: True
Lab 6

None, Then Filled In

Create account_created = None (the account isn't provisioned yet). Print "Account created: VALUE". Then reassign account_created = True and print the same line again.

Account created: None then Account created: True
Lab 7

Text That Should Be a Number

A phone extension arrives from a form as raw_extension = "4521" — always text. Convert it with int(raw_extension) and print the result. A timesheet entry arrives as raw_hours = "40.5" — convert it with float(raw_hours) and print that too.

4521 then 40.5
Lab 8

Trust but Verify: type() Checks

Given a = "hello", b = 42, c = False, print each variable's type() — three lines, before you'd use any of them in a message. Confirming what you actually received, before trusting it, is a habit worth building now.

<class 'str'>, <class 'int'>, <class 'bool'>
Lab 9

Mixed-Type f-string, No Manual Casting

Print two lines. Line 1: an f-string using only first_name/last_name. Line 2: an f-string mixing first_name (str), employee_id (int), and is_full_time (bool) together in the same line — no str() wrapper anywhere.

Maria Santos then Maria is employee 48213, full-time: True (your exact wording may vary — the point is mixing types in one f-string with zero manual conversion)
Lab 10 · Capstone

The Full Onboarding Block

You're given six facts about a new hire: name = "Maria Santos", department = "IT", badge_number = "004521", raw_extension = "4521", mfa_enabled = True, start_date = "2026-08-03". Convert the badge number and extension the same way you did in Labs 4 and 7. Print a six-line onboarding block, one fact per line, correctly converted and formatted — reusing every mechanic from Labs 1-9 in one script.

New hire: Maria Santos
Department: IT
Badge: 4521
Extension: 4521
MFA enabled: True
Start date: 2026-08-03
Now go practice

Open problems/tier01_new_hire_printer.py and do all 10 problems locally. Run python check.py in problems/ to grade everything.

Tier 1 complete

On to Tier 2

variables → int embedding → bool embedding → the leading-zero conversion gotcha → multi-field summaries → None and reassignment → text-to-number conversion → type() checks → mixed-type f-strings → the full onboarding block.

Tiers 2-10 build out next, once synthetic data is ready — see md-repo/SYNTHESIS-REFERENCE.md.