The Future of Computer Science Education in the Age of AI
The change in the way code is delivered becomes more and more evident with AI tools demonstrating strong code-writing capabilities. The amount of AI-written code in production increases every hour, and nobody really knows what the near future looks like, or what skills software developers should train in today to be efficient tomorrow. Interestingly, the first AI developer - named Devin, was just introduced 3 weeks ago.
Some people argue that software development is becoming obsolete and that we need to prepare for most IT-related jobs being taken over by AI soon. Others believe that we are all safe because it's impossible to replace humans by simply predicting the most probable answer to questions, which is essentially what Large Language Models do. Internet forums are flooded with people asking about future-proof jobs in IT. The times have not been this turbulent for a long time, raising the question: What is the right way forward? When it comes to computer science and software development, what should we teach, how should we teach it, and will it be helpful in the real job?
Create New Ribbons
This reminds me somewhat of Isaac Asimov's novella, "Profession." In his story, Asimov imagines a future where education and career assignments are determined by scanning and directly imprinting knowledge into young people's brains using "ribbons." A ribbon contains all you need to know about a subject; by scanning it and writing the knowledge directly into your brain, you become a professional. It's as simple as that.
The protagonist, George Platen, eagerly anticipates his "Book Day" at the age of eighteen, when he will learn his profession. However, he is devastated when he is deemed "Unassigned" and sent to a House for the Feeble-minded.
While reading this, I was completely drawn into the story, and everything seemed logical until George encountered the question: "Who creates new ribbons?"
This question sent shivers down my spine because it exposes a significant flaw in the concept of "predetermined" education devoid of creativity. If your knowledge is limited to what is contained in ribbons, and you've never learned how to learn on your own, how could you invent anything new?
There is no way. People, or at least a group of people, need to receive education "the old way," understanding concepts one at a time, sometimes through hard work and struggle. This is how creativity is fostered. This is how new ribbons are created.
The new way
The new curricula need to blend the traditional "write your own code" approach with the use of AI code generation tools. The optimal strategy to avoid becoming obsolete as a professional is to embrace these innovative AI tools, learn to use them efficiently and enhance your productivity through their use.
Here's how I envision it:
- Prioritize problem-solving and critical thinking over knowledge of languages/frameworks.
- Instruct students to write code manually, without the aid of AI code generation.
- Encourage them to create something real without relying on AI code generation.
- Amplify their efforts using all the AI tools at their disposal.
And now, for a bit more detail.
1. Prioritize problem-solving and critical thinking over knowledge of languages/frameworks
Regardless of whether AI is involved, the essence of software development lies in problem-solving. We tackle a wide array of challenges: UI issues, performance bottlenecks, gameplay mechanics, AI behaviors, data analysis, and any other problem life might present. Problem-solving is a crucial skill that will always be in demand. Even as we shift towards using AI for code writing, imagine a scenario where your AI tool loses internet connectivity – that's a problem requiring a solution. Here are more instances where human intervention is necessary, even with AI code generation:
- An AI suggests a solution that is prohibitively expensive, necessitating an evaluation.
- The AI introduces a bug it cannot rectify.
- Custom code is needed for a niche problem area not covered by the AI's training data.
- The AI generates outdated code because it hasn't been trained on the latest version of a framework you're using.
- AI code generation is restricted by company or departmental policies.
- And more.
Until AI can operate autonomously, problem-solving skills remain as vital as they've always been.
2. Instruct students to write code manually, without the aid of AI code generation
Even though AI can generate code, we are not yet at the point where we can rely entirely on AI for writing applications. As software developers, it's crucial that we understand how to write our own code. This skill may seem less critical now, but it remains a common requirement in job interviews and will continue to be for the foreseeable future.
Using programming to solve problems is an excellent way to train emerging talent.
Note: Assessment becomes challenging, as entry-level programming tasks can be easily completed using ChatGPT and similar tools. You need to set clear boundaries to ensure students are learning to program and not just how to use AI tools. An effective method to deter cheating at this stage is to have brief one-on-one discussions with students, which can quickly reveal whether they have written the code themselves or relied on AI.
3. Encourage them to create something real without relying on AI code generation
By "something real," I mean any software that fulfills more than just an educational role. Whether it's a game, a website, a phone app, or anything else you can imagine, this involves integrating code across various files, utilizing third-party libraries, ensuring functionality at least on your own computer, and occasionally collaborating with other students along the way.
When I mention working "without AI code generation," I don't mean to exclude AI assistance altogether. It can indeed be a valuable educational aid. For instance, you could use it to guide you in a certain direction without actually generating the code for you, similar to how we utilized smart hints in CodeEasy.
Once the project is completed, the student will have gained sufficient knowledge to venture into...
4. Amplify their efforts using all the AI tools at their disposal
Now it's time to go wild. We are beyond 2010, even beyond 2020. We have AI code generation at our fingertips. What possibilities does it unlock? Here are some ways to leverage ChatGPT(as an example) for educational purposes:
- Rewrite the same project mentioned earlier, this time utilizing AI.
Reflect: Was the process quicker? Is the outcome superior? Could this have been achieved without first manually coding the project?
- Use ChatGPT to conduct a code review for the project developed by the student.
Reflect: Examine the review points—what adjustments are necessary? Is the solution improved with these changes?
- Employ ChatGPT to cover the project with tests.
Reflect: Did ChatGPT generate meaningful tests? How comprehensive is the test coverage? Was this approach efficient?
- Present a problem to ChatGPT and request multiple solutions, each focusing on aspects such as security, portability, maintainability, scalability, etc.
Reflect: How does the code alter with each focus area? Which coding style is preferable depending on the project's needs?
- Provide ChatGPT with a solution in one programming language and ask it to rewrite it in another.
Reflect: How does one select the most suitable language for a given problem? Why is it important for AI to understand human-readable programming languages?
Conclusion
AI is here to stay, and it's imperative that both the industry and academia recognize this. The optimal way to equip young talents for utilizing AI tools is by incorporating them into their studies, enabling them to become adept with these technologies.
Conversely, although AI code generation possesses considerable potential, we are not yet at a point where we can rely exclusively on AI-generated code. This underscores the ongoing and significant need for problem-solving skills among software developers. To cultivate these abilities effectively, it's crucial to initially learn programming without resorting to AI code generation. The ability to innovate and create new solutions — "new ribbons" — remains essential. Let's stay creative!