Illustration of AI producing code while a human engineer examines mathematics, algorithms and system design.
Illustration generated with Generative AI.

A student can now describe an application in a few sentences and ask an AI tool to build it. Within minutes, there may be an interface, a database connection, an API and several hundred lines of code.

A few years ago, that would have felt remarkable. Now it is becoming an ordinary part of how people experiment with software.

I use these tools myself. I think students should learn to use them too. But there is a question I keep coming back to, especially when we talk about what universities should teach.

If AI can write the code, does a student still need to learn how to program?

And what about mathematics, algorithms, statistics, data structures and the rest of the subjects that students sometimes find difficult or disconnected from a job?

My answer is yes. Not because the old curriculum is perfect. It certainly isn't. But because generating code and understanding software are two different things.

Writing code was never the whole job

When I look at AI-generated code, the first question is not whether it looks impressive. It is whether I can trust it.

What assumptions has it made? What happens with unexpected input? Will the database query still perform when a table has millions of records? Is a library being used securely? Is the model being evaluated on data it has already seen?

These are not syntax questions. They require some knowledge of algorithms, systems, mathematics and software engineering.

An assistant may suggest a machine-learning model in seconds. A student still has to recognise data leakage, class imbalance or a misleading accuracy score. It may produce a perfectly reasonable-looking function that becomes painfully slow at scale. Someone has to see why.

The CS2023 curriculum, developed by ACM, the IEEE Computer Society and AAAI, covers mathematical and statistical foundations, algorithms, programming, systems, security and AI. [1] That does not mean every degree should teach identical subjects. To me, it shows why learning AI and learning the foundations of computing need to go together.

The easier it becomes to produce an answer, the more important it becomes to know how to question it.

Vibe coding is useful. It is not a substitute for engineering

I do not have a problem with using AI to put together a quick prototype. That is one reason vibe coding has caught people's attention.

But not all AI-assisted programming is vibe coding. There is a difference between reviewing and testing the changes an assistant suggests, and accepting those changes mainly because the app seems to work. That difference matters once the software moves beyond a demo.

It can help a founder test a concept, a researcher build a small tool or a student explore an idea without spending weeks on the interface. Even experienced developers can benefit from assistance with repetitive tasks.

But a working demo is not the same thing as a dependable system.

Software has to survive changing requirements, broken dependencies, unusual user behaviour, security threats and mistakes made during maintenance. A tool that generates code can help with that work. It does not automatically make the person using it capable of judging the result.

Does AI actually make developers faster? It depends on the work. In three field experiments involving 4,867 developers, researchers reported an average 26% increase in completed tasks among developers given an AI coding assistant. [2]

But a trial involving 16 experienced open-source developers found that early-2025 tools increased task completion times by 19%. METR revisited the question in February 2026. Its newer data suggested that later tools might help more, but the researchers said participation and task-selection biases made the size of any speed-up difficult to establish. [3]

Neither study gives us a universal answer. They make me more interested in what people actually achieve with the tools, not just how quickly they can produce code.

Universities cannot become three-month training centres

I understand why students ask for more industry-focused teaching. They pay substantial fees. They want useful skills. They want to graduate with some confidence that they can actually work on real problems.

Universities should take those concerns seriously.

I would welcome more industry projects, better internships, stronger practical assessment and teaching that uses modern development environments and AI tools. A computing degree should not feel disconnected from how software is built outside the classroom.

But replacing fundamental subjects with whichever platform or certification is currently popular would be a mistake.

A certification may help someone learn a cloud service or a particular tool. That can be valuable. A good degree should help the same person understand a different tool when the first one changes or disappears.

Frameworks come and go. Cloud services evolve. The basic reasoning behind data structures, probability, computational complexity, networking and secure systems lasts longer.

This is not an argument against certifications, vocational education or freelancing. Those paths can be excellent choices. It is an argument for being clear about what a university education is supposed to add.

AI may change the number of jobs. It is already changing the work

There is an uncomfortable possibility here. If AI tools take over more routine development work, some organisations may need fewer people for certain tasks.

That is a plausible scenario, not a prediction I can put a reliable number on. We do not know that ten engineers will become two, or that any specific percentage of jobs will disappear.

The effect will also differ across companies and types of work. More productivity could mean smaller teams in some settings and more ambitious products in others.

What interests me is the skill mix that may be required.

Someone will still need to make design choices, review changes, understand failures, deal with security and decide whether a system should be deployed. Research on AI-generated code has identified security weaknesses in real GitHub projects, which is another reason not to confuse generated output with reviewed engineering work. [4]

The amount of routine coding may decrease while the level of judgment expected from an engineer increases.

That is the future I think computing education should prepare students for.

What I would change in a computing curriculum

I would not tell students to stop using AI. I would build AI into the learning process while making sure they still learn to think without it.

A student should be able to write and trace a basic program, explain why an algorithm works, understand the mathematics behind a model and identify the limitations of an evaluation method.

Then give them an AI assistant and ask them to build something more ambitious. But make the assessment about the decisions, not just the final product.

Why this design? Why this data structure? How was the result tested? What did the AI get wrong? What would you change before the code went into production?

I would like to see students asked to defend an AI-generated solution, deliberately break it, repair it and explain its behaviour. That is a more useful demonstration of learning than simply submitting a polished application.

And yes, there should still be moments when students have to work without AI. Not because they will spend their careers writing everything by hand, but because we need to know what they actually understand.

The skill is not typing faster

I suspect the biggest educational mistake would be to train students to compete with AI at generating syntax. That is unlikely to be a good long-term strategy.

The better goal is to help students direct it, test it, challenge it and take responsibility for the result.

AI can be a powerful assistant. But if someone cannot recognise a poor design or an incorrect answer, that assistance may simply allow them to make mistakes on a larger scale.

A weak programmer with powerful AI may produce a very large amount of convincing bad code.

That is why I would strengthen the foundations, not remove them.

Teach programming. Teach mathematics. Teach algorithms and systems. Teach AI as well. Then let students use those skills together to solve problems that would previously have been beyond their reach.

The question for universities is not how much coding they can stop teaching because AI can code.

It is whether graduates will understand enough to know when the machine is wrong.

References

  1. ACM, IEEE-CS & AAAI. CS2023: Computer Science Curricula — Knowledge Areas. https://csed.acm.org/knowledge-areas/
  2. Cui, Z. et al. The Effects of Generative AI on High-Skilled Work: Evidence from Three Field Experiments with Software Developers. Microsoft Research, 2025. https://www.microsoft.com/en-us/research/publication/the-effects-of-generative-ai-on-high-skilled-work-evidence-from-three-field-experiments-with-software-developers/
  3. Becker, J. et al. We Are Changing Our Developer Productivity Experiment Design. METR, 24 February 2026 (follow-up discussing both studies). https://metr.org/blog/2026-02-24-uplift-update/
  4. Fu, Y. et al. Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study. ACM Transactions on Software Engineering and Methodology, 2025. https://doi.org/10.1145/3716848

← Back to Perspectives