Week 01: Quiz (10 questions, 8/10 to pass)
Answer all ten, then check against the answer key. A question marked (see Concepts §X) points at a README subsection; (see notebook cell Y) points at a cell in 01-environment-and-tools.ipynb or 02-zorologistics-data-generator.ipynb.
Multiple choice. Which of the following correctly names the four skills in Andrew Ng's AI Engineering Skills Map? (see Concepts §1) a. Prompt engineering, fine-tuning, RAG, deployment b. Building/deploying AI applications, software engineering fundamentals, using coding agents, shaping the build c. Data engineering, ML, deep learning, MLOps d. Frontend, backend, data, DevOps
Multiple choice. Why does
shipments(100_000, seed=42)return 100,200 rows instead of 100,000? (see Concepts §6, notebook "Verify persistence" cell) a. A rounding error in NumPy b. The generator plants ~0.2% duplicate rows on purpose for Week 2 to find c. The seed only applies to carriers, not shipments d.save_all()always adds 200 header rowsShort answer. In the seed cell,
first_five(42)returns[89250, 773956, 654571, 438878, 433015]on its first call. What does it return on the second call with the same seed, and why? (see notebook "seed habit" cell)Multiple choice. What is the modern, recommended NumPy form for seeded randomness, and why is it preferred over the legacy global form? (see Concepts §6) a.
np.random.seed(42), simpler and thread-safe b.numpy.random.default_rng(seed), local and thread-safe, no hidden global state c.random.random(42), built-in and faster d.np.random.RandomState, deprecated but requiredShort answer. The environment notebook's final cell computes
READINESS = CHECK_PYTHON + CHECK_LIBS + CHECK_ZORO + CHECK_GIT + CHECK_NUMPY + CHECK_SEED. What does a score of 6 mean, and what should you do if it is 5? (see notebook final cell)Multiple choice. In
zoro/data.py, which column is a foreign key into thelanestable? (see Concepts §2, data dictionary) a.shipments.shipment_idb.shipments.lane_idc.lanes.lane_idd.carriers.carrier_nameMultiple choice. The generator notebook resolves the output directory by walking up to the folder containing
zoro/before callingsave_all(...). What failure does this prevent? (see notebook "Generate and persist" cell) a. Writingdata/into the notebook folder instead of the repo root b. A seed collision between carriers and lanes c. Duplicateshipment_idvalues d. A Git merge conflict indata-dictionary.mdShort answer. Name the three data-quality flaws planted in the Week 1 output, and give the approximate count of each under seed 42. (see Concepts §6, verification cell)
Multiple choice. The data dictionary in
02-zorologistics-data-generator.ipynbwritesdata/data-dictionary.mdfrom a list of tuples. What four fields does each tuple carry? (see notebook "data dictionary" cell) a. table, column, dtype, meaning b. table, seed, dtype, count c. column, value, sample, note d. name, type, nulls, sourceShort answer. Why is the same seed a contract ("same seed, same company") for the whole program, rather than just a convenience? (see Concepts §6 and the Friday Zorost gate)
Answer key
b. Ng's four areas are building/deploying AI applications, software engineering fundamentals, using coding agents, and shaping the build. Prompt engineering and RAG are building blocks within area one, not the four areas themselves.
b.
data.pyrunspd.concat([df, df.sample(frac=0.002)])to plant ~0.2% duplicate rows (200 of 100,000) so Week 2 has a real cleaning task.The identical list
[89250, 773956, 654571, 438878, 433015]. A fixed seed makesdefault_rngreplay the same sequence; only a different seed (e.g.7) produces different numbers.b.
numpy.random.default_rng(seed)returns a local generator object, so no hidden global state can be re-ordered by other library calls.np.random.seedmutates global state and can silently break reproducibility.6 means all six checks passed (Python version, imports,
zoro.datacompleteness, Git, NumPy, determinism) and the environment is ready. At 5, read each FAIL line, fix the one broken check, and re-run until it is 6, do not continue on a failing environment.b.
shipments.lane_idreferenceslanes.lane_id;shipment_idis the shipments table's own primary key, not a foreign key.a. Without resolving to the repo root,
save_all()would write relative to the kernel's cwd, often the notebook folder, so the CSVs would land in the wrong place and break every later week'sdata/paths.Duplicate shipment rows (~200, from a 0.2% sample),
NaNweight_kgvalues (~301, from a 0.3% sample), andNaNlane.distance_km(~1, from a 5% sample of 20 lanes). All three are planted so Week 2 has something to find.a. Each tuple is
(table, column, dtype, meaning); the notebook builds a DataFrame from these and then writes the Markdown table.A seed lets any stranger re-run your fork and get byte-identical data, so a metric measured in Week 23 on "the same" dataset is comparable to Week 1's baseline. Determinism is what turns an anecdote into a reproducible artifact; without it, later weeks' comparisons are meaningless.