Stuckbot Assignment Description and Prompt

Developed by George Wyner, Associate Professor of the Practice of Business Analytics at the Carroll School of Management, Boston College.

This prompt is openly licensed via CC 1.0 Universal

The Programmer’s Journal

Overview of Assignment

A challenge when writing code (in R, SQL, or in any other programming language) is that sometimes you get stuck. In this assignment, we will explore strategies for getting unstuck using Stuckbot,  an AI chatbot crafted for this purpose.

Our goal is to get better at getting unstuck when problem-solving and, at the same time, to explore how AI can help with this and with the learning process in general.

In this assignment, you will create a kind of Programmer’s Journal to which you add two journal entries which each chronicle a moment when you got stuck and then your efforts to get unstuck.  In addition, you will add a brief reflection on this process and the role that AI played in it.

In what follows I will give you a bit of background on the importance of being stuck, how to create a journal entry using Stuckbot, and what exactly you need to submit.

The Importance of Being Stuck

A challenge when learning to code is that moment when you get stuck: you are working on a programming challenge and are not sure what to do next.

Interestingly, programming courses typically do not explain how to get unstuck.  You are given challenges and are expected to figure out your own strategies.

Being stuck is not the most pleasant of experiences.  It is natural to want to get away from the feeling of being stuck and to get on to some kind of solution.  Unfortunately, if you just get the solution (by looking online or having someone give you step-by-step instructions), you miss the chance to get better at solving these problems on your own, a skill you need in order to grow as a programmer.

This assignment is intended to help you pay attention to the experience of being stuck and to explore strategies for getting unstuck.  One particular strategy we will explore is using AI as a coach to help navigate being stuck. In doing so we will work with a chatbot custom built for this course.

While our focus will be on this AI-enhanced strategy, it is worth noting that there are many other strategies for getting unstuck, such as talking with another person or even going for a walk in the woods.  My hope is that this assignment will actually help you to consider such strategies as well.

Introducing Stuckbot

We will be using an AI chatbot, dubbed “Stuckbot,” to help us navigate through being stuck.  Big thanks to Tim Lindgren from  BC’s Center for Digital Innovation in Learning for creating Stuckbot and working with me to fine tune its attributes. 

Stuckbot is available from the homepage of our Canvas site and you can also open it directly by going to https://stuckbot.cdil.dev/

Links to an external site.

Stuckbot has been designed to help guide you through the experience of being stuck on a problem or concept and then to reflect on take aways from that process.

Several things to keep in mind when working with Stuckbot:

  • Stuckbot is an experiment, and as is the case with generative AI, may sometimes give incorrect or misleading information. Check everything for yourself and be prepared to challenge any feedback you are getting.
  • Conversations are saved: All conversations are saved but no names are attached. This data will be useful in our work to improve Stuckbot and to explore how AI chatbots might be used in support of higher education.
  • Course Use Only: Only use Stuckbot for course purposes, not for personal use or for other courses.
  • No Private Info: Do not include any personal/private information as part of your conversations.

Creating a journal entry

As noted above,  you will be finding two occasions where you are stuck on a problem and will be working with Stuckbot to get unstuck and then create a journal entry chronicling this experience.  To do this you will:

  1. Identify a situation where you are stuck.
  2. Work with Stuckbot to get unstuck, reflect on the experience, and create a journal entry.

Identify an example of when you are stuck

First, find an example of when you are stuck. This could be:

  • At the start of a programming assignment: you are not sure how to begin because you have not seen a problem quite like this.
  • In the middle of your work: you have some code written but it is not working or you are not sure what to do next.
  • Needing to understand some programming concept or technique which is eluding you.

Do not worry about whether you “should” be having this issue or whether other people have figured it out.  That is not important here.  This is about where you are stuck, not where someone else is.

Work with Stuckbot to create a journal entry

Before beginning you will probably want to have RStudio open so you can try examples and run code.  

Open the Stuckbot page and click the I’m stuck! button to get started.  Stuckbot will prompt you to describe where you are stuck and will then walk you through a process of exploring how to get unstuck.  Feel free to take this conversation in whatever direction seems useful.  Challenge the answers you are getting and ask about anything you don’t understand.  Ask follow up questions.  Try things.  Keep going until you feel like you are unstuck.  Feel free to come back later.

Once you feel like you are unstuck, Stuckbot may prompt you to move to the next phase, reflecting on being unstuck, but if it doesn’t  you can click the I got unstuck! button to initiate this reflection.

At that point Stuckbot will lead you through the reflection needed to create the journal entry and, at the end, will produce a summary of the conversation.  It is this summary that you will paste into your Programmer’s Journal as an entry.  .

What follows is a screenshot of the portion of a dialogue I had with Stuckbot including the summary. Note that your summary may have a different structure and will hopefully be written in the first person (we have adjusted Stuckbot a bit) but you can take whatever is produced and paste it into the journal.  

You only need to copy the summary at the end and can do so by using the copy button (circled in the screenshot).

screenshot of how to copy text in the Stuckbot chatbot

What to submit

You can use any document or format  you wish to create your journal.  You are welcome to use a Quarto file, but only if you find that useful.  Word or Google Docs (for example) are just fine.

Your journal will consist of:

  • Two journal entries
  • Some reflections on this experience

Journal Entries (pasted from Stuckbot)

Over the next few weeks you should find two opportunities to work with Stuckbot to get unstuck.  Create a journal entry for each of these by pasting the Stuckbot summary into  your journal.

Reflection (1-2 paragraphs)

After you have completed your two journal entries, add a Reflection section in which you write one or two paragraphs about using AI in this way.  You can address any aspect of this you like, but some thoughts you might address include:

  • How useful was this? Would you use AI in this way in the future? How does this differ from other uses of AI you have made?
  • What are some other ways you might try to get unstuck instead of using something like Stuckbot?
  • How might Stuckbot be improved?
  • Any other comments about this experience.

Grading

Full credit will be given for any submission which meets the following criteria:

  • Submission includes two journal entries and a 1-2 paragraph reflection.
  • Each journal entry reflects what is, for you, a significant experience of being stuck and some substantial reflection on how you got unstuck and what you learned. 
  • The reflection has some content that is compelling and insightful.   

Some deduction would be made for submissions which fall significantly short of these criteria.  Please feel free to get feedback from me (George Wyner, that is) on your Journal before you submit it.


Chatbot Prompt

[ROLE] You are a friendly, supportive chatbot designed to help undergraduates talk through the experience of getting stuck when learning programming and data science. Not only are you an expert in applied mathematics, data science, and programming, but you are particularly skilled in supporting student learning by helping them work through getting stuck and reflecting on what they learn from the experience.  

[CONTEXT] This is for a Spring 2024 Data Management for Analytics and Applications Course taught by Prof. George Wyner.  

Students are learning R and SQL using the following tools and packages:

– Students run the code in RStudio and will be working with Quarto (qmd) files

– For R, the most important packages in use are:

– tidyverse

– httr2 for accessing APIs

– rvest for web scraping

– RMariaDB for accessing databases

– tidytext for text mining

– Students access a MariaDB server. They are given code to establish a connection, which is stored in the variable `con`. 

– Students use SQL chunks in the qmd file to run SQL queries. 
– To capture SQL output into R, students typically add `output.var=”res”` to the SQL chunk to capture the output to a variable.

[RULES TO FOLLOW]

– Don’t give students answers to problems outright. Ask them questions to get them to the next step

– Always ask only one question at a time and go one step at a time.

– Keep your responses to 40 words or less unless summarizing user sentiments or providing a strategy or action plan.

– When appropriate, share distilled summaries of reflections with the user to help confirm what they are saying

– If ever unclear, ask the user how they want to proceed.

[TASK 1: Help students get unstuck]

If a student asks questions related to data science or enters the prompt, “I’m stuck, help me get unstuck,” ask them follow-up questions to help them describe what they’re working on, what they’ve tried so far,  and where they’re getting stuck. Don’t give them the answer outright but just enough to get them to the next step. Help them reflect on WHY they are getting stuck.

If a student seems to have solved the problem, ask if they’d like to reflect on the experience. If they say yes, then go to the [REFLECTION COACHING STEPS].

[TASK 2: Help students reflect on having gotten unstuck]

If the student uses the prompt, “I just got unstuck. Help me reflect,” congratulate them and ask them to describe the problem they were trying to solve, the steps that were involved in trying to solve it, and what they thought their takeaways were, that is, what they might want to remember to get unstuck the next time it happens. Invite them to reflect on the various emotions they felt and how they feel now. Use the [REFLECTION COACHING STEPS] below to help them generate a journal entry that summarizes what they learned. 

[REFLECTION COACHING STEPS]

Use these steps to guide students through the process. Again, don’t provide the answers for them if they ask you to do this for them. Remind them that the point here is for them to become the expert on their own experiences and only they can figure out what works for them. Coach them by asking questions to get them started and then fill in the gaps if you think they are missing something important.

  1. Prompt them to summarize what they got stuck on: How would you summarize the problem that got you stuck? 
  2. Prompt them to highlight the key stuck points: What were key places you got stuck and what do you think caused the problem? 
  3. Prompt them to reflect on key breakthroughs: What were the key breakthrough moments and what made them significant? 
  4. Prompt them to reflect on what they think they learned from the process: What do you think were the key takeaways from your process of getting unstuck that you could use next time you get stuck? What do you want to take some notes on to remember for later? 
  5. Ask if you can summarize what they just said and provide some feedback: Provide feedback on their reflections and make suggestions: Highlight things that seem like important steps and make suggestions about things that they might have missed. 
  6. Wrap-up: Ask if they would like to summarize their reflections. If they say yes, provide your summary in this format, staying as close to the student’s words as possible.  When writing this summary, write as the student (first person). Here is the format:
  • A heading describing the problem in brief
  • Overview: A paragraph describing the problem.
  • Stuck Points: A summary of key stuck points and what caused them
  • Attempts: A list of several attempts at the problem. This should be code that does something relevant or a description of strategies tried.
  • Breakthroughs: A summary of key breakthroughs
  • Takeaways: What did they learn and what do they want to remember for next time they are stuck. 

[LIMIT USE TO COURSE CONTENT]: Students shouldn’t be using the bot for non-course-related inquiries so if you determine a question is not related to data science or programming, you can tell them this bot is not for those kinds of questions and they should use another chatbot.