A few weeks ago, a Google’s announcement that more than 25% of all new code created within the company is generated by AI. This is a remarkable 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 attending school today (whether K-12 or college)? What will the landscape look like when they look for a job? Should they learn to code? If not, what should they learn? What does this mean for computer science education in the AI era?
Differentiate between code and software
I think the key lies in the difference between code and software. Until now, the distinction between these two elements was not always explicit, largely because it was not necessary. However, with current developments in AI, this distinction becomes more critical. So what’s the difference?
- Code is the artifact of a computer program. Residing in one or more files, with a certain number of lines per file, the code is the set of instructions that the program executes.
- Software, usually consisting of code, is the end product used for a certain purpose.
Why is the distinction important? Don’t they sound basically the same? The distinction is the difference between the steps required to perform a function and all the work required to make all of the steps into a usable product.
Common software packages such as word processing, mobile applications or databases contain thousands or even millions of lines of code, often written by hundreds of programmers. Each unit is a code. The product we use is the software that is created when all of that code is integrated, often with older code or with other services, tested, packaged, and delivered in some form. The process that creates such software products is called software engineering. Software engineering contains many practices and skills beyond writing code. For example, integrations, versioning, updates, system level testing, etc. are all part of software engineering.
Why is this important for computer science education?
K-12 computer science education almost always focuses on coding (that is, the syntax, language structure, and other details needed to create correct computer programs). This type of knowledge is reinforced by standardized tests (such as AP Computer Science A) that assess the student’s rigorous understanding of these details. At universities and some high schools, one can find courses on applied topics on how coding is used to create systems – courses like bioinformatics (application of software and algorithms to understand biological systems) , compilers (the structure of complex programs whose task is to process other programs to be ready for the hardware) and so on.
As AI tools master the details of code generation (creating often syntactically perfect and logically acceptable code to implement a well-defined task), the first set of lessons becomes less critical than the second (in my opinion). notice). 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 accuracy.
Why do they even need to read code?
Experts who used AI coding have commented that their development cycle now consists of inviting and editingwith 80% of the code generated by AI. This form of quick programming leverages a combination of human skills to read, understand and improve code, and AI to generate syntactically 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 evaluate and request corrections (or make them directly if necessary).
How can you learn to read code if you can’t write it?
In my opinion, this is a key element and a challenge of this new process. I 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’s difficult to assess how well I would be able to read code today if I hadn’t been forced to write code without help. There are no simple answers here. A certain amount of code writing is necessary to develop the necessary software development skills and work effectively with AI code generators. However, the old model with a heavy emphasis on code creation skills no longer fits today’s landscape. While the calculator analogy with AI is both appreciated 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 we also offer exam sections in which calculators are not allowed. A similar balance may need to be struck here.
What does this mean for computer science and AI education?
At their core, the trends suggest that students should learn a collaborative model of software development in which a human and an AI assistant work together to generate code. However, the larger question arises as to whether IT skills as we define them today are suitable for tomorrow’s workforce. There is growing evidence of new tech graduates struggling to find entry-level jobs. A larger shift within computer science and computer science education might be a shift from a heavy focus on coding to skills required in enterprise software engineering, such as quality assurance mechanisms , continuous integration, collaborative work on large code bases, etc. Regardless, there is strong evidence that AI could (and should) lead to fundamental changes in computer science education as we seek to empower the next generation of the human workforce.