Skip to content

Unit 0 Quiz

The goal of this page is to provide you with a single source of guidance on what to review and prepare for ahead of Quiz 0. The goal of the quiz is to assess your understanding of key concepts, ideas, and skills we have covered in the first two weeks of class.

Task Learning Objectives

From TK01

By completing TK01, you should have gained experience with:

  1. Writing Architectural Design Records (ADRs).
  2. Reading and extracting meaning from open-source documentation.
  3. Understanding the role of dependency/package managers in Python projects.
  4. Using an LLM to learn unfamiliar technical concepts and clarify trade-offs.
  5. Reasoning about diverging project paths where multiple choices are defensible.
  6. Answering the guided technical questions in the write-up.

From TK02

By completing this assignment, you should have gained experience with:

  1. Following a specific git branching and merging workflow.
  2. Commiting a markdown ADR and understanding its value in a project.
  3. Engaging with an AI agent to implement your architectural decisions.
  4. Auditing, verifying, and taking ownership of an Agent's work before committing it.
  5. Answering the key conceptual questions found at the end of the write-up.

From TK03

By completing this git diagram, you should have comfort diagramming:

  1. git commits
  2. git branch creation
  3. git branch switching
  4. git branch merging

For a solution to the diagram, see this demonstration: https://youtu.be/_uw0s4NrsRY

Reading Learning Objectives

For readings 01 through 08, reviewing Gradescope questions and your notes is preparatory.

Lesson Learning Objetives

LS01 - Architectural Design Records (ADRs), Lifelong Learning

  1. Gain experience applying ACM Code of Ethics Principles to a real-life scenario.
  2. Understand how AI can help you enhance learning or help you avoid learning depending on how you use it.
  3. Gain experience engaging AI with curiosity and avoiding engaging AI with laziness.

LS02 - Dependency Managers, LLMs, and Agentic IDEs

  1. Differentiate between a large language model (LLM) and runtime / inference engine.
  2. Understand that today's large language models guess likely next tokens given an input context in an inference loop until a stop token, or other condition, is encountered.
  3. Explain how a chat-like system is layered on top of a large language model.
  4. Understand how a context window impacts the quality of output tokens emitted.
  5. Explain what tool calling means to today's AI agents.
  6. Explain, at a high level, what context engineering means in a developer agent workflow.

LS03 - Conceptually Understanding Common git Operations

The readings on git provided much necessary background for this lesson.

  1. You should have comfort diagramming:
    1. git commits with parents
    2. git branches
    3. The HEAD branch
    4. git branch switching
    5. git branch merging
    6. Fast-forwarding vs. merge commits
  2. You should understand what happens when a branch is deleted.
  3. You should understand how one branch into another and be able to do so with git commands.
  4. You should understand the scenarios in which a merge is a fast-fowarding of a branch as opposed to producing a merge commit.
  5. You should understand the differences and relationships between pull, fetch, and merge. You should be able to sync a local branch with a remote branch of the same name.

LS04 - Testing Foundations: From Requirements to Automation

  1. Explain what a regression is in a software project and some scenarios in which it can occur.
  2. Defend the utility of automated testing in a software project.
  3. Differentiate between unit, integration, and end-to-end tests and the values and trade-offs of each.
  4. Differentiate between functional requirements and testing and non-functional ("cross-functional") requirements and testing.
  5. Write unit tests that cover specific branches/paths of a subject.