Students

Adapting Computer Science Education to a Changing Tech Landscape

How Columbia is redesigning CS programming courses for an AI-powered industry

August 29, 2025
Bernadette Young

Artificial intelligence (AI) is rapidly reshaping the landscape of software development, raising questions not only about the future of entry-level coding roles but also about how universities prepare students for an industry in flux. 

At Columbia Engineering, faculty are rethinking the foundations of computer science (CS) education, increasing the emphasis on code reading and review,  while thoughtfully integrating AI as a tool for learning and creating. One outcome has been to rework the programming curriculum. The approach aims to better equip students to thrive in a field where human insight and AI-powered tools work side by side.

“The changes are ongoing as the technology is both new and quickly evolving,” said Adam Cannon, Teaching Professor of Computer Science at Columbia Engineering. “We are also working on leveraging AI to allow us to teach problem decomposition and working with existing code bases earlier in the course sequence than we were able to do before.”  

An example of this shift is an elective course (COMS 3107) offered in object-oriented programming that emphasizes design patterns and code quality. This semester, the course will integrate generative AI as a tool within the software development process. While the class will continue to center on what makes “good code,” students will now complete units where they assess the quality of AI-generated code, evaluating aspects such as correctness, efficiency, and design, and use AI to improve the quality of existing code. 

“The focus is not so much on ‘using AI to write code’ as it is ‘using AI to improve code, which I think is a skill that students will need in the workplace,” said Chris Murphy, senior lecturer in the discipline of computer science at the Engineering School. Murphy, with a cohort of computer science faculty members led by Cannon, has been actively working on the best methods for integrating AI into the teaching of coding skills. 

We spoke with some of these professors about how the department is rethinking its approach to prepare students for a tech industry transformed by AI.

There’s been a lot of discussion about AI reshaping entry-level coding jobs. What’s your take on how the landscape is evolving?

Chris Murphy, senior lecturer in discipline: As recently as a year ago, I was hearing from contacts in the software development industry that they were prohibited from using AI to generate code intended for production (i.e., for use in software that would be deployed to end-users) because there was too much risk and too much uncertainty. But now I am hearing that companies want their software engineers to focus more on the “big picture” of system design and to use  AI to fill in the details, i.e., to write the code that implements the design. 

However, regarding AI replacing entry-level jobs, an Engineering Manager at a large tech company told me that she has concerns about not hiring recent grads and early-stage programmers, because her organization has a process of helping them advance their careers and take on more responsibility. Her point is that if there are no entry-level programmers now, who will be the mid-level programmers in five years? 

So I suspect that even if there is a downturn in the number of entry-level jobs because of AI, tech companies will find a way to start hiring recent college grads as a way of filling their pipeline, but it’s just that the job responsibilities will change and they will need to use AI as a tool more than they are now.

Daniel Bauer, senior lecturer in discipline: Certainly, employers now expect computer science graduates to be comfortable with AI-assisted programming. The job market has tightened significantly, but I'm not convinced this is because AI is taking early-stage coding jobs. Rather, many technology companies overhired during the COVID pandemic and are now cutting back. AI may simplify mundane programming tasks, and that might result in reduced staffing needs at the margins. But large language models (LLMs) are not yet great at autonomously creating robust, efficient, elegant, and maintainable solutions, especially in larger software stacks. 

How did you decide what to change in the programming curriculum, what to keep, and why? 

Daniel Bauer: Our introductory courses will now adopt AI early on, both as a learning aid and as a programming tool. Students will use AI to generate, refine, debug, and test programs. Students have been doing this anyway, but we’re now explaining how to use AI in a way that supports their learning. LLMs also make it possible to build more complex and interesting programs early on, especially in courses for non-computer science majors. For example, students can use AI to build user interfaces or web-frontends for programs that were previously text-based. They can also quickly adopt programming libraries that are relevant to their field of study. 

What has not changed is that students still need to learn the basics of programming.  Even if they are using LLMs to generate code, they need to be able to read and understand the result, and to verify that it works correctly and efficiently. They also still need the foundations of computational thinking -- a problem-solving approach based on incrementally dividing larger problems into smaller pieces and then combining the solutions. This is essential to programming but widely applicable in other areas of engineering. In AI-assisted programming, computational thinking informs what prompts to write and how to make sure components fit together. 

Introductory courses will place a stronger emphasis on being able to read and understand code, and this will be reflected in the way we design homework, exams, quizzes, and other assessments, in a way that ensures academic integrity. 

We already have a number of advanced CS courses that adopt AI, as well as an  increasing number of courses focusing on the technology itself (AI/ML, NLP, deploying  ML models at scale, etc). 

How do you see these changes impacting students after graduation? 

Adam Cannon, Teaching Professor of Computer Science: The hope is that our students will be prepared to effectively and responsibly use generative AI tools right away to produce and evaluate software and to problem-solve in a wide variety of settings. Most importantly, our students will understand how to adapt, contribute, and add value as the process of producing and maintaining software continues to change.

How can graduates position themselves for success? 

Daniel Bauer: Graduates should cast a wide net. Computer science is more than just programming, and there are jobs other than software engineering (including in data science, cybersecurity, systems,  networks, hardware, devOps/cloud, UI/UX, computational biology, finance, AI/ML  research, project management, etc.). They should consider opportunities beyond the usual large software companies, including in finance, biomedical, aerospace, education, and startups. 

It's a good idea for students to try to find their niche within CS and to specialize in a specific area or combine CS with another field. 

Brian Borowski, senior lecturer in discipline: In addition to recent alumni, the following advice also applies to students in their senior year actively seeking full-time employment. Apply to a wide variety of jobs, including those outside CS, but where having a CS skillset will be useful. Do not be afraid to reach out to your network. Now more than ever, you need to be your own advocate, and communication is critical to achieving success. Outside of networking, do not be afraid to send out many, perhaps hundreds of, resumes. Applying to as many companies as possible greatly increases your chances of getting the initial interview. Finally, if you have an idea, consider forming your own startup. You never know...you might become a household name! 

What sets Columbia’s approach apart from other CS programs? 

Adam Cannon: Much of what we are doing here is happening elsewhere at our peer institutions. Indeed, as a community, there is a lot of communication across institutions about how to adjust. It is worth noting that at Columbia, our effort to integrate AI across our programming courses is coordinated across many classes. There is a working group of faculty members acting together to redesign entire sequences of courses in a coherent way. We are fortunate that our leadership recognizes the challenge and is providing the necessary resources to do this.


Lead Photo Caption: Adam Cannon, Teaching Professor of Computer Science, pictured teaching an introductory course in CS and programming
Lead Photo Credit: Timothy Lee/Columbia Engineering