CSC 313 AI and code synthesisers in computing education
Read:
- The Robots Are Coming: Exploring the Implications of OpenAI Codex on Introductory Programming (Finnie-Ansley, Denny, Becker, Luxton-Reilly & Prather)
- Exploring the Learnability of Program Synthesizers by Novice Programmers (Jayagopal, Lubin & Chasins)
As you read these papers, spin up Chat-GPT or Copilot or their ilk and poke and prod at them, specifically in the context of solving programming problems or understanding APIs etc. For example, I used Chat-GPT while learning the language OCaml, and it gave me some sense of its limits and abilities. If you don’t have an “organic” programming task ahead of you to experiment with, try to use question prompts or code snippets from places like Leetcode or even your previous CS courses.
I’m interested in your use of these tools for learning — not simply to boost productivity. So in that vein, pick a language you don’t know (e.g., OCaml, JavaScript), an API you’re not familiar with, or some programming construct you may not be familiar with (like multi-threading in Java). Work through a few tasks in the domain(s) of your choice.
Concretely, answer the following in your reflection:
- Briefly describe the computing task(s) you performed to experiment with these AIs.
- What kind of help did you seek from the AI? Was it syntactic help, help with APIs (e.g., because it’s quicker than searching the documentation), code explanation help (“what does this code do?”), etc.
- What did the AI do particularly well?
- Where, if at all, did the AI lead you astray? How much domain knowledge would a user need to notice mistakes in the AI’s explanations/suggestions?
Come to class ready to discuss two things:
- How will AI change introductory programming courses in the immediate future? How should pedagogy change to take this into account?
- What’s your vision for how AI will affect introductory programming in the longer term (3–5 years)?