[Teaching Problem Solving with AI] PL Reflection - Interacting with AI

Think of the last way you interacted with AI. Describe the interaction, what was it like working with AI? Try to provide a balanced perspective and include both positive aspects as well as critiques.

This discussion question is from the Self-Paced Professional Learning for Teaching Problem Solving with AI.

My wife was out to dinner with friends and they were joking about inventions they wish they could make. She started texting me their ideas and asked me to generate images of them using AI. I inputed some prompts into ChatGPT and it was humorous to watch how it interrupted them. At first it was on the right track, but then one prompt sent it into a spiral and it generated something completely random. So while it created a interesting visual, it was limited once I tried to get into the specifics.

Last time I used AI was trying to get some answers for my multiple choice questions to get some choices for answers. It was ok, not the answers I really liked. Some I used, some I did not.

1 Like

Listing ingredients I have in the kitchen and finding time appropriate recipes. I have always been able to find recipes that work in lab. It is also nice to find recipes for dietary limitations.

The last time I worked with AI was creating a flyer for my niece. She was selected to be a contestant for Miss Samoa here in the US and she needed to get information out about the event and raise money. I was able to have AI help create the flyer, however, the colors weren’t great at first and the suggestions I gave the AI had to be refined many times. After a bit of asking better questions, I was able to get the idea I wanted and then go in and change the colors of the flyer to match a traditional outfit she was wearing in the flyer. It took some time to do, but was fun with the assistance of AI and what I was able to do in a decent amount of time.

Es impresionante el resultado al usar chatGpt, en mi experiencia pregunte que me ayude a investiga un determinado tema y el resultado me permitiĂł interactuar para mejorar el resultado.

I have been using AI to help me create summaries of the CEDs for my AP classes. It did provide good summaries, and the better or more specific my prompt was, the better results. For example, I typically use chatGPT or NotebookLM and have created and trained chatbots in both. I asked each the same question of each chatboit: “Can you give me some concrete examples of abstraction?”

Here is the NotebookLM prompt

Abstraction in computer science is a powerful concept used to manage complexity by focusing on essential information while hiding underlying details. The sources provide concrete examples of abstraction primarily in two forms: data abstraction and procedural abstraction, as well as in the context of simulations.

Here are some concrete examples of abstraction:

  • Data Abstraction: This form of abstraction provides a name for a collection of data without needing to reference the specific details of its representation.

    • Lists (or other collection types): A key example is the use of a list to represent multiple related items using a single variable. This simplifies the program by treating many individual data points as one conceptual unit. For instance, a program might use a list to store all the items on a grocery list or the seating assignments on a seating chart. Without a list, managing many individual items would require significantly more complex code, or it might not be feasible at all.

    • Binary Representation: At a lower level, the way computers represent data digitally is an abstraction. Bits (0s and 1s) are grouped together to represent more complex abstractions like numbers, characters, or colors. For example, a specific sequence of bits might represent a number in one context but a color in another. This hides the complexity of how the actual electrical signals or magnetic states are interpreted by the computer.

  • Procedural Abstraction: This involves naming a group of programming instructions (a procedure, also known as a method or function) so that it can be used by knowing what it does, not how it does it. This allows a large problem to be broken down into smaller, more manageable subproblems.

    • Procedures with Parameters: Procedures often use parameters to generalize their functionality, enabling them to be reused with a range of different input values. For example, instead of writing separate code segments to draw a square of side length 10 and another for side length 100, a programmer can create a single drawSquare procedure that takes sideLength as a parameter. This generalizes the functionality and makes the code reusable for any square size. This practice extracts shared features and avoids duplicating code, which helps manage complexity and improves readability.

    • Reusing Code for Repetitive Tasks: If a program needs to perform the same set of actions multiple times but with slight variations, a procedure can abstract this repetition. For instance, in a program that outputs a nursery rhyme, a programmer could create separate procedures for each “verse” or “chorus” that can be called as needed, rather than writing out each line repeatedly. This makes the overall code more streamlined and easier to understand.

  • Simulations: Simulations are abstractions of real-world objects or phenomena, simplifying functionality or removing specific details for a particular purpose.

    • Modeling Real-World Events: Simulations can mimic real-world events that are impractical for experiments due to factors like size, speed, cost, or danger. Concrete examples include simulations of traffic patterns, stock market fluctuations, or weather systems. These simulations use varying sets of values to reflect the changing state of the phenomenon, often incorporating random number generators to simulate real-world variability.

And here is the ChatGPT response

Absolutely! Let’s break down abstraction with concrete, student-friendly examples—especially the kinds that show up in AP CSP projects and Create Task responses.


:bullseye: What Is Abstraction?

Abstraction means simplifying complex things by hiding the details and showing only what’s necessary. Think of it like using a TV remote: you don’t need to know how the remote sends infrared signals—you just press a button, and the channel changes.

In computer science, abstraction often shows up in two ways on the AP exam:

  1. Procedural Abstraction – using procedures (functions) to hide details.

  2. Data Abstraction – using lists (or collections) to organize and access data.


:white_check_mark: Concrete Examples of Abstraction

:small_blue_diamond: 1. Procedural Abstraction Example

Scenario: You write a procedure called calculateGrade(percentage) in your program.

function calculateGrade(percentage) {
  if (percentage >= 90) {
    return "A";
  } else if (percentage >= 80) {
    return "B";
  }
  // and so on...
}

Call Site:

var studentGrade = calculateGrade(87);

  • Abstraction here: The main program doesn’t worry about the exact logic of how grades are calculated. It just uses calculateGrade() to get a result.

  • Why it matters: It makes the program easier to read, reusable, and less repetitive.


:small_blue_diamond: 2. Data Abstraction Example

Scenario: You create a list of scores:

scores = [93, 88, 76, 91];

You then loop through that list to find the highest score.

var highest = 0;
for (var i = 0; i < scores.length; i++) {
  if (scores[i] > highest) {
    highest = scores[i];
  }
}

  • Abstraction here: Instead of creating a separate variable for each score (like score1, score2, etc.), you’re using a list to group them. You can now sort, search, and process data with loops.

  • Why it matters: It simplifies how data is stored and manipulated—you don’t have to write repeated code for each item.


:small_blue_diamond: 3. Real Student Example from AP CSP Create Tasks

  • A student made a to-do list app where:

    • The addTask() procedure added new tasks.

    • A list called taskList stored all the tasks.

    • A loop displayed all tasks on the screen.

Abstraction examples in their project:

  • The addTask() procedure is procedural abstraction.

  • The taskList list is data abstraction.


:brain: Why It Helps You on the Create Task

  • You must show and explain abstraction to earn points on Row 2 and Row 4 of the written response.

  • You need to:

    • Show code that stores and uses a list.

    • Explain what the list represents and why using a list makes the program better (manages complexity).

    • Include a student-developed procedure with a parameter, explain what it does, and how it contributes to your program’s purpose.


:memo: Quizlet-Ready Flashcards

Abstraction: The process of simplifying complex systems by hiding unnecessary details and showing only essential features.

Procedural Abstraction: Using functions or procedures to reduce code repetition and improve readability.

Data Abstraction: Using data structures like lists to organize related values and simplify access or manipulation.

List: A data structure that stores multiple items under a single name, allowing for efficient iteration and processing.

Procedure: A named set of instructions that performs a specific task and can be reused throughout the program.

Parameter: A variable passed into a procedure that affects how it runs.

Managing Complexity: Using abstractions (like procedures and lists) to simplify program design and reduce repetition.


I have done more training of the AI in ChatGPT ChatBuddy

Nevertheless, I think these two responses would go well together to help me craft a lesson with concrete examples of Abstraction.

I have been studying prompt engineering for a little while now.

I think I am going to give the kids a mnemonic: RIDER.

R - Role. Tell the AI what role to play in the interaction. You can ask it to be anything. Ask it to be a software engineer if you want it to create code. Ask it to be Dr. Seuss to write a story! You should also think about tell the AI who you are. Our tell it the audience of the prompt. You will get very different responses if you say “I am a software engineer” than if you say “I am a high school student.” You could even say “this is for my English teacher.”

I - Instructions. Give it some instructions on how to produce what you want. If the task should be well known just name the task. If you want a graph for example instruct it to plot this data versus that data as a line or bar. To write a story just say write a story. Instructions can also be partial. You can say “first step:” You can also include instructions like “think deeply” or “double check your work” and get a more accurate result.

D - Data. Tell it where to get the data you want to use. Don’t rely on it knowing the dataset you need. If you want a Dr. Seuss story then tell it to read the published works of Dr. Seuss. You can also give it specific websites to read that you may have already found in your own search.

E - Example. Give an example of what you want to see. It doesn’t have to be a long example. It could be a photo or something you found on the internet that is similar to what you want.

R - Repeat (as needed.) You can tell all the new AIs to make changes as needed or add some new elements to what you already have. If you told the AI to take a first step you may now give the second step in the process. That is a very good way to avoid too general or summarized responses.

Here is an example:

Read all of the published works of Dr. Seuss. (Data) Become Dr. Seuss. (Role) Write a story about a high school math teacher who cannot get his students to put down their phones. (Instructions) Make it similar to “if I ran the zoo”. (Example)

Give that to an AI and you get:

If I Taught the Class

My name is Miss Factor, I teach Algebra Two.
I’ve got lessons to give, but what can I do?
For my students don’t listen, they all sit and stare—
At their shiny, bright boxes that glow everywhere!

I holler, I scribble, I leap and I shout,
But their thumbs keep on tapping—there’s no getting out!
They scroll and they swipe and they snap and they text,
And I never know what in the world will come next.

So I’ve thought of a plan, a remarkable trick,
To pry those devices away—super quick!
I’ll trade every phone for a creature or two,
The sort you won’t find in a cage or a zoo.

A Frabjabber Fractionator, furry and tall,
That solves tricky problems in seconds—that’s all!
A Long-Legged Logarithm, striped in bright teal,
It dances out graphs with a cartwheel and squeal!

A Quadratic Quokka, who hops in a square,
And a Parabola Panda, with roots in its hair.
A Pi-Spinning Platypus, round as a plate,
Who counts to three-point-one-four while it skate.

I’d let them parade down the rows, up and down,
Making math the most marvelous show in the town.
And my students would cheer, “Who needs phones anymore?
With creatures like these, math could never be bore!”

So perhaps if I taught with a beast or a rhyme,
They’d drop all their gadgets and learn for a time.
For algebra’s magic, geometry too—
But only if numbers feel wondrous and new!

I could go from there and ask for illustrations. (Repeat) I could also tell it to fix some of the broken grammar. (Repeat)

P.S. Gemini makes better Seuss stories that ChatGPT. The above is ChatGPT.