OIM3640 - Problem Solving and Software Design

2026 Spring

Session 11 (2/26)

contain

Today's Agenda

  • Announcements/Updates
  • Quiz 1 (~30 min)
  • Mini Project Work Time
    • Proposal check
    • Share and feedback
    • Working with GitHub Copilot
    • Reflect and share

Announcements/Updates

  • Quiz 1 today! (see next slide)
  • Mini Project 1 - PROPOSAL.md soft deadline is today
    • Please read the instructions carefully
    • Peer review and AI work time this session
    • Instructor is checking GitHub commit history
  • Communication
    • Office Hours: Walk-in or by appointment
    • Email: Specify course # in subject, e.g., "OIM3640: GitHub settings"
    • You are required to meet with me at least once this semester
  • Questions?

Quiz 1

  • Paper quiz, ~30 minutes

  • Please put away all electronics.

  • Read each question carefully before answering.

Good luck!

🛠️ Mini Project Work Time

Proposal Check

Quick self-check before we start:

  • Is your repo/folder set up per the mini project instructions?
    • Separate repo, OR under oim3640/projects/<your-app-name>/
    • Your oim3640/README.md has a link to your project (so I can find it)
  • Is PROPOSAL.md inside that repo/folder and committed?
    • Is it formatted properly as markdown? (headings, bullet points, etc., not just plain text)
  • Is your app a terminal (command-line) app? (no web apps, no GUIs)
  • Is your project idea genuinely something you want to build?

If any answer is no - take 5 minutes to fix it now.

💬 Share & Feedback

Work with your neighbor or classmates. Take turns walking through your proposals.

Share:

  • What are you building, and why did you choose this?
  • Show any code you have - does it match the proposal?

Ask your partner:

  • Is this idea personal and original, or could anyone have picked it?
    • What specific twist, use case, or personal story could make it yours?
  • What's missing or unclear in the proposal?

Goal: honest feedback + expansion ideas. Append both to your partner's PROPOSAL.md before switching.

🤖 Working with GitHub Copilot (VS Code)

Copilot Chat Modes

Mode What it does Analogy
Ask Answers questions, explains code, gives suggestions. Does NOT touch your files. Asking a tutor
Plan Designs an implementation plan (steps, files, structure). Does NOT write code yet. Drawing a blueprint
Agent Executes tasks: creates/edits files, runs commands, iterates on errors. Hiring a contractor

Workflow: Ask (understand) → Plan (design) → Agent (build)

Switch modes using the dropdown at the top of the Copilot Chat panel.

Pick Your Track

After peer exchange, pick your track:

Your situation Track
Have PROPOSAL.md, little/no code Track A: Critique, Plan, Agent
Have existing code Track B: Plan then Agent (compare!)
Still only a rough idea Track C: Ask to build specs first

Track A: Proposal Ready, No Code Yet

  1. Critique first - open Copilot Chat (Ask mode):

    "Read #file:PROPOSAL.md and critique it. Is anything vague or missing? Is the idea original, or if not, what personal elements make it yours? Is it feasible?"

    Update your proposal based on the feedback.

  2. Switch to Plan mode for implementation planning:

    "Read #file:PROPOSAL.md and create an implementation plan for my Python terminal app. Ask me clarifying questions first."

  3. Review the plan - push back if it seems too complex or off-target

Track A (continued): Build and Read

  1. Switch to Agent mode to build

  2. Read every line of generated code. If you don't understand something:

    "Simplify this and/or explain what it does"

    AI may also generate if __name__ == '__main__': - this is good practice. Ask Copilot to explain any pattern you don't recognize.

Track B: Already Have Code

  • Use Plan then Agent with the same prompt as Track A
  • Let Copilot generate fresh code from your proposal
  • Add to the prompt: "Do not overwrite any existing files."
  • Then compare with what you wrote:
    • What did AI do differently?
    • Which approach is cleaner or easier to understand?
    • Did AI use functions where you didn't (or vice versa)?

Track B (continued): Improve with Agent Mode

Based on what you learned from comparing, use Agent mode:

  • Modularize: "Read #file:main.py. Group related code into functions. If the file is too large, split into multiple .py files. Show plan first."
  • Optimize: "Simplify any functions that could be written more concisely."
  • Validate: "Add input validation - what happens if the user types nothing or the wrong type?"
  • Test: "Write test cases for the 3 most important edge cases."
  • Expand: "Pick the most natural extension and implement a basic version."

Track C: Just a Rough Idea

(I hope you did more than this.)

  1. Let AI interview you - open Copilot Chat (Ask mode):
    "I want to build a Python terminal app about [your idea]. Ask me 5 questions to help me turn this into a concrete proposal with specific features."

  2. Answer honestly - don't just accept suggestions. Push back if it's not what you want.

  3. Ask for a draft:
    "Based on my answers, draft a PROPOSAL.md with: what I'm building, why, core features, and what I don't know yet."

  4. Edit in your own words, commit, then go to Track A.

💬 Quick Share

Turn to your neighbor:

  • What did Copilot do that you didn't expect?
  • What's new or better in your code now?
  • Anything Copilot got wrong or that you had to push back on?

Alternative: Finish Spelling Bee 🐝

If you've finished everything above, continue from last session:

  • uses_only(word, letters) - word uses only the given letters?
  • is_bee_valid(word, letters, center) - all three checks combined
  • Find all valid words from a word list file (this is the goal!)
  • Extension: scoring (4-letter word = 1 pt, longer = 1 pt per letter)
  • Extension: what other features could your solver have? Or try reverse-engineering it - build the game itself instead of solving it

Before You Leave

  • Any questions?
  • Push all changes to GitHub (code + updated PROPOSAL.md)
  • Continue your Learning Log for this week (logs/wk06.md)

Next session: Lists - Chapter 9

global styles