Outcomes and Key Concepts
Reminder that during exams and quizzes you will be expected to understand and debug code, but you will not have to write code from scratch. This means that if print() is listed in the outcomes you will need to understand what it does and debug if the code uses it incorrectly, but you won't have to write code from nothing with that command.
Weeks 5 and 10 are excluded as they are focused on midterm exams.
Week 1
- Explain what a program is and how computers execute instructions
- describe computational thinking
- set up and navigate a Python development environment
- write and run basic Python scripts using print()
- articulate lab expectations
Key Concepts
- Computational thinking
- Python environment
- Print statements
- Running scripts
- Programs as instructions
- Course pillars
- Language-independent programming ideas
Week 2
- Translate a non-technical description into a requirements list;
- distinguish inputs, processes, and outputs;
- distinguish inputs, outputs, and constraints
- break a problem into sub-tasks;
- write clear pseudocode;
- distinguish specification (requirements), algorithm (idea/plan), and implementation (code);
- critique pseudocode for clarity.
Key Concepts
- IPO model/IPC model;
- requirements;
- specification;
- algorithm;
- implementation;
- top-down decomposition;
- pseudocode;
Week 3
- Identify and use int, float, str, and bool;
- assign and name variables using Python conventions;
- evaluate arithmetic and relational expressions by hand;
- apply type conversion functions;
- identify the intended type of a variable;
- choose descriptive names;
- recognize that Java requires explicit variable types.
- understand how to indicate types in Python code
- get input from users with input()
Key Concepts
- Data types;
- type awareness;
- variable assignment;
- naming;
- arithmetic operators;
- relational operators;
- type conversion;
- static vs dynamic typing at a conceptual level.
Week 4
- Write if/elif/else statements;
- construct compound Boolean expressions;
- draw a flowchart for a decision-based algorithm;
- trace a conditional block;
- distinguish syntax errors from logic errors;
- determine whether code will run before predicting its output.
Key Concepts
- if/elif/else;
- Boolean operators;
- flowcharts;
- tracing;
- syntax errors;
- logic errors;
- compiler mindset.
Week 6
- Write while and for loops;
- use range() for counted iteration;
- trace loops manually;
- identify common loop errors;
- explain what changes each iteration;
- explain what remains constant throughout loop;
- reason about loop termination (esp. infinite loops)
Key Concepts
- while loops;
- for loops;
- range();
- loop patterns;
- trace tables;
- loop invariants;
- termination;
- off-by-one errors;
- infinite loops.
Week 7
- Define and call functions with parameters and return values;
- explain scope;
- decompose a larger problem into reusable functions;
- describe a function as an interface or contract with inputs, behavior, and output;
- identify preconditions and expected results.
- specifications vs. algorithms vs. implementation
Key Concepts
- def;
- parameters;
- return values;
- scope;
- top-down design;
- function contracts;
- method signatures preview;
- decomposition
Week 8
- Trace algorithms step by step;
- predict program output;
- classify bugs as syntax, runtime, logic, input-assumption, or boundary-case errors;
- explain compile-time errors conceptually;
- apply a systematic debugging process;
- reduce a problem to a smaller failing case.
Key Concepts
- Algorithm tracing;
- trace tables;
- debugging workflow;
- error types
Week 9
- Write structured prompts;
- evaluate AI-generated code;
- use AI to explain code, trace execution, find assumptions, suggest tests, and improve documentation;
- reject incorrect AI output;
- describe limitations and ethical considerations of AI-assisted coding.
Key Concepts
- Structured prompting;
- AI as reviewer;
- AI code evaluation;
- test generation;
- documentation support;
- assumptions;
- ethics;
- verification responsibility.
Week 11
- Create and manipulate lists, tuples, and dictionaries;
- iterate over collections;
- choose the appropriate collection for a problem;
- compare representations;
- apply list methods and dictionary operations;
- reason informally about whether a solution scales to larger data.
Key Concepts
- Lists;
- tuples;
- dictionaries;
- iteration;
- choosing representations;
- data structures;
- informal complexity;
- scaling from 10 to 100 to 10000 items.
Week 12
- Read from and write to text and CSV files;
- process structured data;
- handle common file errors gracefully;
- explain files as persistent information;
- create a test plan for file-based programs.
Key Concepts
- open();
- read/write modes;
- csv module;
- file errors;
- persistence;
- external data;
- test plans.
- loops
Week 13
- Focus on Project
Key Concepts
- Focus on Project
Week 14
- Model program behavior using a state diagram;
- Group related information into conceptual models.
- Identify the attributes and responsibilities of a model.
- Plan a multi-component software system.
- Divide a project into tasks and team roles.
- Create a lightweight architecture diagram.
- Conduct structured code reviews.
- Use AI tools responsibly during collaborative development.
Key Concepts
- Program state
- State diagrams
- Data modeling
- Attributes and responsibilities
- Top-down design
- Architecture diagrams
- Team roles
- Task decomposition
- Version control concepts
- Code review
- Communication
- Docstrings
Week 15
- Present a software solution;
- demonstrate design decisions;
- reflect on team process;
- connect course concepts to broader CS contexts;
- explain how the project was designed, tested, improved, and verified.
Key Concepts
- Program state;
- state diagrams;
- top-down design;
- integration;
- data modeling;
- records;
- attributes;
- operations;
- object-thinking without Java classes.
- Demo day;
- presentation;
- retrospective;
- course synthesis;
- design document;
- test plan;
- reflection;
- professional communication.