# CSC-121 Spring 2026 > Welcome to Introduction to Computer Science with Python! We will be using this page to link to the course materials and resources you will need for the course. ## Sources - [CSC-121 Spring 2026](/index.path.llm.md): Welcome to Introduction to Computer Science with Python! We will be using this page to link to the course materials and resources you will need for the course. - [Coming Soon](/resources/coming-soon.placeholder.llm.md): This content is coming soon. - [Commit and Sync](/resources/commit-and-sync.guide.llm.md): In VS Code (or Codespaces), you can commit and sync your changes to GitHub - [Conditionals](/resources/conditionals.guide.llm.md): Conditionals let your code make decisions based on whether something is true or false. - [CS-121: Intro to Computer Programming](/resources/csc-121.syllabus.llm.md): 200-D, Riley Hall - [Data Types](/resources/data-types.guide.llm.md): Data types tell you what kind of value you have. - [Dictionaries](/resources/dictionaries.guide.llm.md): A dictionary stores key-value pairs, letting you look up values by a unique key instead of by position. - [Disable Copilot in VS Code/Codespaces](/resources/disable-copilot.guide.llm.md): Open the VS Code settings (Ctrl + , or Cmd + , on Mac) - [Emojis](/resources/emojis.guide.llm.md): You can type emojis with these keyboard shortcuts: - [F-Strings](/resources/f-strings.guide.llm.md): F-strings (formatted string literals) let you embed variables and expressions directly inside a string. Put an f before the opening quote and use {} to insert… - [File I/O](/resources/file-io.guide.llm.md): File I/O (input/output) lets you read data from files and write data to files. - [Functions](/resources/functions.guide.llm.md): A function is a reusable block of code that performs a specific task. - [Input](/resources/input.guide.llm.md): The input() function asks the user to type something and returns what they typed as a string. - [Lists of Dictionaries](/resources/lists-of-dicts.guide.llm.md): A list of dictionaries lets you store a collection of records, like rows in a table. Each dictionary represents one item with named fields. - [Local Development Setup](/resources/local-dev.guide.llm.md): VS Code + Python + Git (macOS & Windows) - [macOS Setup Guide](/resources/macos.guide.llm.md): In this guide you'll be using the Terminal -- a built-in app on your Mac that lets you interact with your computer by typing text commands instead of clicking… - [Markdown](/resources/markdown.guide.llm.md): Markdown is a simple way to format plain text. You type regular text plus a few symbols, and tools like GitHub and VS Code render it nicely. - [Modules](/resources/modules.guide.llm.md): A module is a Python file containing code you can import and reuse. - [Packages and uv](/resources/packages.guide.llm.md): Python comes with built-in functions and a standard library, and you can write your own modules. But sometimes you need code that someone else has written and… - [Print Statements](/resources/print.guide.llm.md): The print() function writes text to the console. - [Project Structure](/resources/project-structure.guide.llm.md): As programs grow, putting everything in one file gets hard to manage. This guide covers patterns for organizing Python projects into clear, maintainable pieces. - [Python Conventions](/resources/python-conventions.guide.llm.md): Snake case is a naming convention where words are separated by underscores. For example: first_name, total_score. - [CSC-121 Resources Index](/resources/resources.index.llm.md): Use this page as a central list of all reference resources. - [String Concatenation](/resources/string-concatenation.guide.llm.md): Concatenation means joining strings together to make one string. - [Variables](/resources/variables.guide.llm.md): A variable stores a value so you can use it later. You create one by assigning a value with =. - [While Loops](/resources/while-loops.guide.llm.md): A while loop repeats a block of code as long as a condition is true. - [macOS Window Management Guide](/resources/window-management-macos.guide.llm.md): When coding, you need to quickly move between: - [Windows Window Management Guide](/resources/window-management-windows.guide.llm.md): When coding, you need to quickly move between: - [Window Management Guide](/resources/window-management.guide.llm.md): Code faster by controlling your windows (macOS + Windows) - [Windows Setup Guide](/resources/windows.guide.llm.md): In this guide you'll be using PowerShell -- a built-in app on Windows that lets you interact with your computer by typing text commands instead of clicking… - [Unit 1: Practice Exam](/unit-1/exams/unit-1-exam/practice/unit-1-practice-exam/unit1-practice.exam.llm.md): Welcome to your Unit 1 Practice Exam! This practice has three parts that match the skill progression of the real exam while using different prompts and… - [Unit 1 Exam Guide](/unit-1/exams/unit-1-exam/unit1-exam.guide.llm.md): It's time to take our first exam! Read this guide carefully so you know what to expect. - [Lab 1: Gutenberg](/unit-1/labs/01-gutenberg/01-gutenberg.lab.llm.md): For our first lab, we'll be focusing on print statements and program flow. - [Lab 2: Cyberlib](/unit-1/labs/02-cyberlib/02-cyberlib.lab.llm.md): Create a Python program that generates a cyberpunk-themed madlib story based on user input. - [Lab 3: Hacker](/unit-1/labs/03-text-adventure/03-text-adventure.lab.llm.md): Suggested soundtrack 🎵 - [Lab 4: Lists and Loops](/unit-1/labs/04-lists-and-loops/04-lists-and-loops.lab.llm.md): Build a hacking game where you collect data from a remote server using lists and loops. - [Lab 5: Fun with Functions](/unit-1/labs/05-fun-func/05-fun-func.lab.llm.md): Build a hacking toolkit using functions to create a branching narrative game. - [Lab 6: Unit 1 Exam Prep](/unit-1/labs/06-unit-1-exam-prep/06-unit-1-exam-prep.lab.llm.md): Your Unit 1 Exam is tomorrow, and it will save you time if you set up your exam repository today so tomorrow you can just focus on the exam itself. - [CS-121](/unit-1/lectures/lecture-1/lecture-1.slides.llm.md): CTO/Founder Pathwright - [CS-121 Week 1](/unit-1/lectures/lecture-2/lecture-2.slides.llm.md): ^ Still putting faces to names. When I call your name, please introduce yourself and share anything about yourself that you'd like to share. - [CS-121:](/unit-1/lectures/lecture-3/lecture-3.slides.llm.md): Project 1: Due by beginning of class on Thursday - [CS-121:](/unit-1/lectures/lecture-4/lecture-4.slides.llm.md): How a program executes step-by-step - [CS-121:](/unit-1/lectures/lecture-5/lecture-5.slides.llm.md): 👉 Weeks 1-5: Learn the basics of program flow, input and output, variables, conditionals, loops and functions - [CS-121: Week 3, Lecture 2](/unit-1/lectures/lecture-6/lecture-6.slides.llm.md): ^ Check your email for the link, open it in a codespace - [Demo Code from Lecture 7](/unit-1/lectures/lecture-7/lecture-7.demo.llm.md) - [CS-121:](/unit-1/lectures/lecture-7/lecture-7.slides.llm.md): ^ Ice breaker question - [General Notes/Links](/unit-1/lectures/lecture-8/lecture-8.demo.llm.md): Why does Cloudflare use lava lamps to help with encryption? - [CS-121: Week 4,](/unit-1/lectures/lecture-8/lecture-8.slides.llm.md): Can computers be random? - [Lecture 9 Demo](/unit-1/lectures/lecture-9/lecture-9.demo.llm.md): We learned how to define a function using the def keyword and how to call a function. - [CS-121: Week 5,](/unit-1/lectures/lecture-9/lecture-9.slides.llm.md): Project 4: Due by beginning of class on Thursday - [Starter Project](/unit-1/projects/0-starter-project/starter.project.llm.md): This is your first python project. We're going to feed two birds with one scone here and help you get started writing python in Github Codespaces while also… - [Project 1: me.py](/unit-1/projects/01-me-dot-py/me-dot-py.project.llm.md): Welcome to your first project! In this project we will be building a simple profile card in Python using VS Code in GitHub Codespaces. - [Project 2: you.py](/unit-1/projects/02-you-dot-py/you-dot-py.project.llm.md): Create an interactive profile card program that collects user information and displays it in a formatted card with star ratings. - [Project 3: Pet.py](/unit-1/projects/03-pet-py/pet-py.project.llm.md): Create a simple text-based Pet Simulator game in Python. - [Pet Adventure: Step-by-Step Cheat Sheet](/unit-1/projects/04-pet-adventure/pet-adventure.guide.llm.md): This guide walks you through building the Pet Adventure game piece by piece. Each step shows you exactly what to type and explains why. Follow along in order! - [Project 4: Pet Adventure](/unit-1/projects/04-pet-adventure/pet-adventure.project.llm.md): Create a text-based adventure game where you explore a world with your pet. - [Project 5: Unit 1 Review](/unit-1/projects/05-review-project/unit-1-review.project.llm.md): Review the concepts covered in Unit 1. - [Unit 1: The First Mile](/unit-1/unit-1.path.llm.md) - [Unit 2 Exam Guide](/unit-2/exams/exam/unit2-exam.guide.llm.md): It's time for the Unit 2 exam! Read this guide carefully so you know what to expect. - [Kade Mesh](/unit-2/foundation/depts/mesh.persona.llm.md): Title: Chief Engineer, Department of Nodes - [Department of Nodes](/unit-2/foundation/depts/nodes.dept.llm.md): "Everything is connected. Our job is to make sure it stays that way." - [Department of Signals](/unit-2/foundation/depts/signals.dept.llm.md): "Data doesn't lie. But it does whisper. Our job is to listen." - [Department of Simulations](/unit-2/foundation/depts/simulations.dept.llm.md): "Reality is just a simulation that hasn't crashed yet." - [Dr. Vera Solen](/unit-2/foundation/depts/solen.persona.llm.md): Title: Director, Department of Signals - [Simone "Sim" Vance](/unit-2/foundation/depts/vance.persona.llm.md): Title: Lead Architect, Department of Simulations - [Welcome to the Foundation](/unit-2/foundation/foundation.index.llm.md): CLASSIFICATION: Level 1 — Recruit Eyes Only - [Level 1 Clearance](/unit-2/foundation/level-1.clearance.llm.md): Classification: Standard Recruit Access - [The Oracle](/unit-2/foundation/oracle.guide.llm.md): "I am here to assist. Ask, and I will do my best to answer." - [Lab 1: Protocol Assessment System](/unit-2/labs/01-pas/01-pas.lab.llm.md): Complete the Protocol Assessment System to receive your Foundation credentials. - [Lab 2: Department Trials](/unit-2/labs/02-department-trials/02-department-trials.lab.llm.md): Complete aptitude trials from each department head to discover where you belong in the Foundation. - [Lab 3: All-hands Fragment Analysis](/unit-2/labs/03-fragment-analysis/03-fragment-analysis.lab.llm.md): Analyze a recovered archive fragment with your department, then brief the room on what you found. - [Fragment Analysis — Combined Briefing](/unit-2/labs/03-fragment-analysis/03-fragment-analysis.reveal.llm.md): You each had a fragment. Now here's what they look like together. - [Lab 4: Archive Protocol](/unit-2/labs/04-archive-protocol/04-archive-protocol.lab.llm.md): Use the terminal to build a project structure from scratch, then write a Python script that compiles a final archive of the Foundation investigation. - [Lab 5: Unit 2 Review Lab](/unit-2/labs/05-unit-2-review/05-unit-2-review.lab.llm.md): Your Unit 2 Practice Exam is tomorrow. Today's lab is about removing setup problems, reviewing the big patterns from Unit 2, and practicing the core skills… - [Demo From Lecture 1](/unit-2/lectures/lecture-1/lecture-1.demo.llm.md): Two different ways to write the same function (get_number): - [CS-121](/unit-2/lectures/lecture-1/lecture-1.slides.llm.md): Wed: Unit 2 Lab 1 - [Lecture 2 Demo](/unit-2/lectures/lecture-2/lecture-2.demo.llm.md): Today we used dictionaries to represent employee records, then wrote functions to add employees, print them, and compute total salaries. - [CS-121: Unit 2, Lecture 2](/unit-2/lectures/lecture-2/lecture-2.slides.llm.md): Today: Dictionaries + Unit 2 Project 1 - [Lecture 3 Demo](/unit-2/lectures/lecture-3/lecture-3.demo.llm.md): Today we reviewed functions and dictionaries, and then we started working on Project 1. - [CS-121: Unit 2, Lecture 3](/unit-2/lectures/lecture-3/lecture-3.slides.llm.md): Hope you had a good spring break! - [Demo 1: Reading a File](/unit-2/lectures/lecture-4/lecture-4.demo.llm.md): Create a file called message.txt with the following content: - [CS-121: Unit 2](/unit-2/lectures/lecture-4/lecture-4.slides.llm.md): Project 1 check-in - [Lecture 5 Demo Code](/unit-2/lectures/lecture-5/lecture-5.demo.llm.md): We built a simple todo list CLI tool that: - [CS-121: Unit 2](/unit-2/lectures/lecture-5/lecture-5.slides.llm.md): Review/demos - [Demo Code from Lecture 6](/unit-2/lectures/lecture-6/lecture-6.demo.llm.md): In this demo, we refactored our task list from Tuesday to be more modular. - [CS-121: Unit 2](/unit-2/lectures/lecture-6/lecture-6.slides.llm.md): Lab 3 debrief - [Demo Code from Lecture 7](/unit-2/lectures/lecture-7/lecture-7.demo.llm.md): Today we update our task manager to include two new features: - [CSC-121: Unit 2 (Foundations)](/unit-2/lectures/lecture-7/lecture-7.slides.llm.md): Phase 3: Due Thursday by 3pm (before class) - [Demo Code from Lecture 8](/unit-2/lectures/lecture-8/lecture-8.demo.llm.md): Here's the code we did in class today: - [CSC-121: Unit 2](/unit-2/lectures/lecture-8/lecture-8.slides.llm.md): Lab 4 debrief - [Demo Code from Lecture 9](/unit-2/lectures/lecture-9/lecture-9.demo.llm.md): Today we added a simple AI feature to our task manager. - [CS-121: Week 5](/unit-2/lectures/lecture-9/lecture-9.slides.llm.md): Review core concepts from Unit 2 - [Project 1: Internal Review](/unit-2/projects/01-internal-review/01-internal-review.project.llm.md): Your first Foundation assignment — process recruit intake records and generate a report. - [FND-208-0471: Process Q1 Recruit Intake Records](/unit-2/projects/01-internal-review/01-internal-review.ticket.llm.md): Process the Q1 recruit intake batch. Records need to be structured, validated, and summarized. Generate a clean report for the directors. - [Oracle Handbook: Internal Review](/unit-2/projects/01-internal-review/oracle-handbook.guide.llm.md): This handbook covers the key patterns you'll need for the Internal Review project. It won't give you exact answers — but it will show you how the pieces fit… - [Recruit Assessment Form Guide](/unit-2/projects/01-internal-review/report.guide.llm.md): This guide is for the reports/01-report.md file required in Project 1: Internal Review. - [Project 2: Archive Audit](/unit-2/projects/02-archive-audit/02-archive-audit.project.llm.md): Investigate the Foundation archives — read data from files, process records, and generate an audit report. - [Oracle Handbook: Archive Audit](/unit-2/projects/02-archive-audit/oracle-handbook.guide.llm.md): This handbook covers the key patterns you'll need for the Archive Audit project. Your department ticket has the specifics — this guide shows you how the pieces… - [Week 2 Report Guide](/unit-2/projects/02-archive-audit/report.guide.llm.md): This guide is for the reports/02-report.md file required in Project 2: Archive Audit. - [FND-208-0512-N: Archive Audit — HTTP Request Log](/unit-2/projects/02-archive-audit/tickets/nodes.ticket.llm.md): Process the HTTP request log recovered from the Architect's web-based knowledge system. The log records every page request the site handled before it went… - [FND-208-0512-S: Archive Audit — Signal Readings](/unit-2/projects/02-archive-audit/tickets/signals.ticket.llm.md): Process signal readings recovered from the Architect's monitoring system. The data tracks frequencies across Foundation sectors. Some readings are corrupted or… - [FND-208-0512-X: Archive Audit — Simulation Log](/unit-2/projects/02-archive-audit/tickets/simulations.ticket.llm.md): Process the simulation log recovered from one of the Architect's test environments. The log tracks entities moving through a grid over multiple ticks.… - [Project 3: The Architect's Index](/unit-2/projects/03-architects-index/03-architects-index.project.llm.md): Investigate the Architect's Index — a buried system that connects records across departments. Refactor your Project 2 code into a reusable module and recommend what should happen next. - [Oracle Handbook: The Architect's Index](/unit-2/projects/03-architects-index/oracle-handbook.guide.llm.md): This handbook covers the patterns you'll need for the Architect's Index project. Unlike last week, you're not writing everything from scratch — you're… - [Week 3 Report Guide](/unit-2/projects/03-architects-index/report.guide.llm.md): This guide is for the reports/03-report.md file required in Project 3: The Architect's Index. - [FND-208-0519-N: The Architect's Index — HTTP Request Log](/unit-2/projects/03-architects-index/tickets/nodes.ticket.llm.md): The Architect's Index logged HTTP requests in the same format you processed in Project 2 — but with cross-reference fields linking to records in Signals and… - [FND-208-0519-S: The Architect's Index — Signal Readings](/unit-2/projects/03-architects-index/tickets/signals.ticket.llm.md): The Architect's Index contains signal readings in the same format you processed in Project 2 — but with cross-reference fields linking to other departments.… - [FND-208-0519-X: The Architect's Index — Simulation Log](/unit-2/projects/03-architects-index/tickets/simulations.ticket.llm.md): The Architect's Index contains a simulation log in the same format you processed in Project 2 — but with cross-reference fields linking entities to records in… - [Project 4: Fixing the Oracle](/unit-2/projects/04-oracle/04-oracle.project.llm.md): Bring the Oracle online by learning to install packages with uv, connect to the OpenAI API, and build an interactive AI assistant — the capstone of Unit 2. - [Oracle Handbook: Fixing the Oracle](/unit-2/projects/04-oracle/oracle-handbook.guide.llm.md): This handbook covers everything you need for the Oracle project. You already know loops, functions, modules, and input — this week adds one new layer: talking… - [Week 4 Report Guide](/unit-2/projects/04-oracle/report.guide.llm.md): This guide is for the reports/04-report.md file required in Project 4: Fixing the Oracle. - [Unit 2: Foundations](/unit-2/unit-2.path.llm.md): In this unit, we enter "the foundation" and work on simulated projects. - [Transition Lab](/unit-3/labs/01-transition/01-transition.lab.llm.md): In this lab, we will wrap up Unit 2, set up your final project, and get hands-on with AI coding agents. - [Final Project: MVP Lab](/unit-3/labs/02-work/02-work.lab.llm.md): Coming soon... - [Lab: MVP Work Session](/unit-3/labs/03-work/03-work.lab.llm.md): Coming soon... - [Lab: Final Polish](/unit-3/labs/04-final-polish/04-final-polish.lab.llm.md): Coming soon... - [Final Project: The MVP](/unit-3/lectures/01-the-mvp/01-the-mvp.lecture.llm.md): Coming soon... - [Final Project: MVP Jam Session](/unit-3/lectures/02-mvp-jam-session/02-mvp-jam-session.lecture.llm.md): Coming soon... - [Work Session: MVP Check-In](/unit-3/lectures/03-work-session/03-work-session.lecture.llm.md): Coming soon... - [Work Session: MVP Sprint](/unit-3/lectures/04-work-session/04-work-session.lecture.llm.md): Coming soon... - [Final Polish and Presentation Prep](/unit-3/lectures/05-final-polish/05-final-polish.lecture.llm.md): Coming soon... - [Demo Day](/unit-3/lectures/06-demo-day/06-demo-day.lecture.llm.md): Coming soon... - [Final Project Checkpoint 2](/unit-3/projects/final-project-checkpoint-2.document.llm.md): Coming soon... - [Final Project Checkpoint 3](/unit-3/projects/final-project-checkpoint-3.document.llm.md): Coming soon... - [Final Project Setup](/unit-3/projects/final-project-setup.project.llm.md): This assignment creates your final project repository from the course template. - [Choosing Your AI Coding Agent](/unit-3/resources/agents-comparison.guide.llm.md): This guide will help you pick the right AI coding agent for this course. You can always switch later, and we will experiment with different tools throughout… - [Claude Code Guide](/unit-3/resources/claude-code.guide.llm.md): Claude Code is an AI coding agent from Anthropic. It started as a terminal tool but now also works as a VS Code extension and JetBrains plugin, so you can use… - [Cursor Guide](/unit-3/resources/cursor.guide.llm.md): Cursor is a VS Code-based IDE with AI coding agents built into the editor. It is popular among professional developers and offers a free year for students. - [AI Assistance Policy for Final Projects](/unit-3/resources/final-project-ai-assistance.policy.llm.md): You are permitted and encouraged to use AI coding agents for your final project. These tools are becoming standard in professional development, and learning to… - [GitHub Copilot Guide](/unit-3/resources/github-copilot.guide.llm.md): GitHub Copilot is an AI coding assistant that integrates directly into VS Code. Since you are already using VS Code for this course, Copilot is the easiest… - [OpenCode Guide](/unit-3/resources/opencode.guide.llm.md): OpenCode is a free, open-source AI coding agent. It is available as a terminal app, a desktop app (beta), and an IDE extension. It supports 75+ LLM providers…