We used to give students dozens or hundreds of small targeted programming tasks, drilling each aspect of the syntax – the words and symbols – of programming. That worked well as a starting point, except now generative AI tools can solve all of these problems. Educators can try to ban these tools (good luck with that!), or embrace them. We chose to embrace them in our new course, where students learn to program – supported by a generative AI assistant.
What does the course explore?
The course re-imagines what learning to program means now that generative AI is available to handle more of the low-level syntax issues that have historically slowed down and frustrated students. The more students struggle with finicky syntax details, the less time and energy they have to accomplish their programming-related goals like starting a business, writing apps for social good, or contributing to projects that are meaningful to them.
Generative AI clears the decks for us to focus on more valuable, high-level skills that students need to become effective programmers. For example, generative AI struggles to solve large problems; we still need humans to divide those problems into bite-sized chunks – a process known as problem decomposition – each of which AI can solve well. People are still needed to test code to ensure it’s doing what was intended, and to ensure that the code is used to help, not harm, society and its vulnerable groups.
Why is this course relevant now?
Professional programmers in droves have already adopted generative AI tools and are using them to be more efficient in their daily work. If the goal is to prepare students for these jobs, teachers need to train them in how to use these new tools.
A critical lesson is that generative AI is impressive, but that it is fallible. You cannot simply ask it for code and assume that the code it gives you is perfect. It may not do the right thing. It may produce errors, or bugs. It may cause security concerns. It may exclude underrepresented groups or discourses. You need to critically examine the code that you get from generative AI.