Teaching Software Development with AI

How do you innovate in education when the school you teach at is already a remote school underpinned by technology and couldn't operate without it? Every class meeting is online, with the likes of Zoom or Google Meet. Communication between staff and students is via Slack instant messaging. Course exercises, projects and learning materials are all delivered via our web-based LMS (Learner Management System) iQualify (in the form of videos, tutorials, exercises and quizzes).

You lean into technology is how. Every week new tools are released that you can incorporate into your education practices. We have seen the most significant growth in Machine Learning technology with the increase in the ability of Large Language Models at an almost frightening pace. Since late last year, we have seen huge jumps in the capability of generative AI art models to produce fantastic images from simple text prompts. We have seen all the GPT (Generative pre-trained transformer) tools like ChatGPT, for example, that given short text prompts can produce answers for simple facts to writing history essays. What’s even more exciting is the adoption of the technology companies adding these capabilities to products we already use and love. AI answers have now been incorporated into searches on Bing and Google, so your answers are provided directly in the search engine itself. Adobe has added generative image creation into Photoshop to create extraordinary images with text prompts. Canva can produce multiple templates on the fly from a user uploading an image and some colour prompts.

We have benefitted significantly at Developers Institute by integrating digital learning into our practices. What was once an in-person school in Whangarei teaching Software Development in a class environment. We now teach students from all over the motu in Aotearoa to even some overseas online by embracing digital technology in our teaching practices. But there are still more tools we can embrace to benefit the learners.

One of these ways is to incorporate ChatGPT as another tool for our students to get support in their learning, exercises and projects. With ChatGPT, there can always be help available to answer questions at any time. ChatGPT was trained on a large portion of code on GitHub, the collaborative version control software that hosts an extensive collection of open-source projects. Because of this, it can answer most questions about code syntax and provide examples for learners. Say a learner wanted to know how to fetch some data in a format called JSON (JavaScript Object Notation) using the JavaScript programming language. They could ask this to ChatGPT, which would explain with an example code like in the screenshot below. The answer has a step-by-step breakdown of what needs to happen, an example snippet of code and a summary explaining how it works.

ChatGPT fetch example
ChatGPT fetch example

To ensure new and existing learners can take advantage of this incredible technology, we are planning on creating a supplementary course in our learner management system that will cover the following items (Fraiwan et al., 2023)1:

The course will be a mix of documentation on advising on how to write prompts for ChatGPT and video screencast tutorials where teach leads (our industry-aligned name for teachers) in our teaching team will walk through real-life examples and demonstrations on common issues our learners have previously had. Just like learners would have previously learnt how to use a search engine like Google, they will be taught how to interact with ChatGPT and what prompts can elicit different responses. While ChatGPT is a valuable tool, we will also have to remind our learners that it is an early technology tool and not infallible, it still has issues with “hallucinations” of facts that are entirely fabricated, a concept popularised by Google AI researchers (Agarwal et al., 2018)2. Learners must verify answers with reliable sources, official documentation, or via our learner support team.

GitHub Copilot is a plugin for Visual Studio Code, the IDE (integrated development environment) we use at the Developers Institute. It is an extension of a developer's work environment and acts as an AI pair programmer that helps one write code. It does this by prompting suggested code based on the context of your existing code and interpreting code comments. It will show this suggested code in the grey text beside the cursor. If it seems satisfactory, pressing the tab key will embed this suggestion into your code base. The suggestions can be from a simple line to multiple lines, depending on what the AI model predicts you will use. It will also suggest multiple options, generally more than one. If unhappy, use the “Next" suggestion keyboard shortcut. The predictions/suggestions will even use the declared variables in your existing code.

Visual Studio Code with GitHub Copilot
Visual Studio Code with GitHub Copilot

The benefits that most developers find when using Copilot are the following:

We plan to integrate Copilot with the previously mentioned course with ChatGPT. Again adding screencasts and tutorials on how to make the most of it. This course will be called "Enhancing Development with AI", which we plan to be 2-3 weeks of content and can be completed after our first program in the student's software development journey as a supplementary self-paced online course. That way, existing students and new learners alike can up-skill.

Another great tool that enables collaborative learning between students and teaching staff is GitHub Codespaces. It is a cloud-based development environment. It allows you to code as if using Visual Studio Code, in the cloud via a browser (or your local copy of VS Code). There is no need to set up a local environment to install Node.js or Python (or whatever language you require) and necessary dependencies etc.

Visual Studio Code using Codespaces
Visual Studio Code using Codespaces

Some of the benefits of Codespaces are the following (Malan, 2022)5:

In the long term, we plan to migrate our existing exercises and projects to use development containers config files to take advantage of Codespaces, locally or in the cloud. With many exercises to convert, it will take some time to complete.

Finally, we want to embed environmentally sustainable software practises into our course. We want to minimise the impact of software systems on our environment by reducing energy consumption and using green energy, reducing carbon emissions.

There are several ways to do this:

If each graduate can help make environmentally sustainable efforts for software development in Aotearoa more common, we can get a little closer to our reduction of greenhouse gas emissions goals of 2030, and reduce the impact of climate change.

In conclusion, as a remote school heavily relying on technology, it's important to continue innovating in education to enhance the student's learning experience. We need to educate students in tools like ChatGPT and GitHub Copilot to assist and support them when practising to become software developers. Allowing collaboration and learning to be more accessible to staff and learners by easily sharing their current issue(s) without frustration and hassle using Codespaces. We need them to go into the industry with a good grasp of environmental sustainability concerning software development to help with impending climate change. Incorporating these tools and knowledge into our teaching practices will ensure Developers Institute is at the forefront of digital and collaborative learning.


References

  1. Mohammad Fraiwan, Natheer Khasawneh (2023). A Review of ChatGPT Applications in Education, Marketing, Software Engineering, and Healthcare: Benefits, Drawbacks, and Research Directions. https://arxiv.org/abs/2305.00237 ↩︎

  2. Agarwal, A., Wong-Fannjiang, C., Sussillo, D., Lee, K., & Firat, O. (2018). Hallucinations in Neural Machine Translation. https://openreview.net/pdf?id=SkxJ-309FQ ↩︎

  3. Sida Peng, Eirini Kalliamvakou, Peter Cihon, Mert Demirer. (2023). The Impact of AI on Developer Productivity: Evidence from GitHub Copilot. https://arxiv.org/abs/2302.06590 ↩︎

  4. Wermelinger, Michel. (2023). Using GitHub Copilot to Solve Simple Programming Problems. https://doi.org/10.1145/3545945.3569830 ↩︎

  5. David J. Malan. (2022). Standardizing Students’ Programming Environments with Docker Containers. https://cs.harvard.edu/malan/publications/iticse22.pdf ↩︎

  6. NZX (2023, May 25). CEN signs 10-year renewable energy agreement with Microsoft NZX. https://www.nzx.com/announcements/412004 ↩︎

  7. Abhishek D S, Anusha V, Bheemappa, Chaitra B R, Mallesha Holeyache, Vijaykumar, Dr. Sheela S V. (2021). Green Software. https://www.ijres.org/papers/Volume-9/Issue-8/Series-8/C09081219.pdf ↩︎

Tags:
 chatgpt,
 copilot,
 codespaces,
 education,
 innovation,
 machine-learning,
 environmental-sustainability