How AI Will (or Should) Change Computer Science Education

A few weeks ago brought an announcement from Google that over 25% of all new code created within the company is generated by AI. This is a notable statement from a company that creates some of the most advanced software on the planet – suggesting that AI has much to add to streamlining and accelerating code written by career professionals. But what does this mean for the student in school today (whether it is K-12 or university)? What will the landscape look like when they look for a job? Should they learn to code? If not, then what should they learn? What does it mean for Computer Science education in the age of AI?

Differentiating Code And Software

I believe the key lies in the difference between code and software. Till now, the distinction between these was not always explicit, largely because it did not need to be. However, with the current developments of AI, this distinction is becoming more critical. So what is the difference?

  • Code is the artifact of a computer program. Residing in one or more files, with some number of lines per file, the code is the set of instructions that the program executes.
  • Software, usually made up of code, is the end product that is used for some purpose.

Why is the distinction important? Don’t they sound basically the same? The distinction is the difference between the steps needed to execute some function and all the work that goes into making the set of steps a usable product.

Common software packages such as word processing, mobile applications, or databases, contain thousands to millions of lines of code, often written by hundreds of programmers. Each unit is code. The product we use is the software that gets created when all that code is integrated, often with older code or with other services, tested, packaged, and delivered to us in some form. The process that creates such software products is called software engineering. Software engineering contains many practices and skills beyond code writing. For example, integrations, release management, updates, system level tests, etc.are all part of software engineering.

Why Does This Matter For Computer Science Education?

K-12 education in computer science almost always focuses on coding (that is the syntax, language structure and other details that are required to create correct computer programs). This type of knowledge is reinforced in standardized tests (such as AP Computer Science A) which assesses a student’s rigorous understanding of these details. In universities, and in some high schools, one can find courses on applied topics of how coding is used to create systems – courses like bioinformatics (applying software and algorithms to understand biological systems), compilers (the structure of complex programs whose task is to process other programs to be ready for hardware) and so on.

As AI tools become proficient in the details of code generation (creating often syntax-perfect and logically acceptable code to implement a well defined task), the first set of courses becomes less critical than the second (in my opinion). Students need to be able to read, update, modify, and extend code, but it may no longer be so important that they can write it from scratch with perfect correctness.

Why Do They Even Need To Read Code?

Experts who have used AI coding have commented that their development cycle is now about prompting and editing, with 80% of the code generated by AI. This form of prompt driven programming leverages a combination of human skill to read, understand and improve code, and the AI to generate syntax correct code for specific tasks. Being productive in this style of software development requires human proficiency in reading and understanding code, as well as sufficient knowledge to assess and request corrections (or make them directly if necessary).

How Can You Learn To Read Code If You Cannot Write It?

This is in my view a key element and challenge of this new process. I have personally found the prompt-driven programming model to be very effective. That said, I learned to code by writing code from scratch in many languages. It is hard to assess how well I would be able to read code today if I had not been forced to write code with no assistance. There are no simple answers here. Some amount of code writing is required to develop the necessary software development skills and work effectively with AI code generators. However, the previous model of heavy focus on code creation skills is no longer a good fit for the current landscape. While the calculator analogy to AI is both liked and derided depending on who you ask, there may be a parallel here. We now teach students how to solve higher level problems using calculators, but also have exam sections where calculators are not allowed. A similar kind of balance may need to be struck here.

What Does This Mean For Computer Science Education And AI Education?

At a base level, the trends suggest that students should be learning a collaborative model of software development where a human and an AI assistant work together to generate code. However, there is a larger issue of whether computer science skills as we define them today are even suitable for the future workforce. Evidence is growing of fresh tech graduates struggling to find entry level jobs. A larger shift within computer science and computer science education may be to move from a heavy focus on coding to skills that are required in corporate software engineering, such as quality assurance mechanisms, continuous integration, collaborative work on large codebases, and so on. In any case, indications are that AI could (and should) drive fundamental changes in computer science education as we seek to empower the next generation of the human workforce.

Leave a Comment