The three shifts in CS Education

I see three fundamental shifts that have been happening over the years in the software engineering and CS education space.

Shift in Education: Why do we study before starting work?

The boundary between time for education and time for work is blurring.

Since education was in-person, in designated spaces, and in cohorts, and since learning was intended to be done without work distraction, we separated UG education (and in fact all education) from work. You first get your education, then you do work.

Technology changes, needs of the market, and societal changes have ensured education doesn’t need to be in-person, in designated spaces, or in groups. This means it is now possible to mix work and education in interesting ways to produce work-integrated learning and learning-integrated work programs that can be offered right after the school years.

Shift in Curricula: Which courses are Foundational CS courses?

Software is increasingly getting complex, and thanks to AI Copilots, we are entering an era when coding will be an activity mostly associated with machines. Given how programming-centric our CS and Software Engineering curricula are on the ground, what does it mean for a course to be foundational is changing. Human engineers need to be thinking at a higher level of abstraction, and they need to exhibit the skills of analysing, critiquing, evaluating and judging. Skills like systems thinking, problem solving, design, modelling and courses like system design and architecture, automata theory, programming language principles, mathematical computer science, etc. need to be considered foundational. Programming and Data Structures, Databases, technology-focused courses (web, cloud, data) will cease to be as important.

Shift in Practices: Why is it a big deal to get the architecture and design right?

Irreversible decisions and risk mitigation have been the cornerstones of Software Engineering (SE) practices (requirements, planning, analysis, construction, deployment, etc).

Architectural and design decisions are hard to roll back and hence were better done thoughtfully and deliberately, before getting to writing code. Producing and testing code are expensive, so we don’t want rework. Customers may change their minds, or external factors may change the requirements, and since the above limitations exist, we need to mitigate this risk by being agile.

Thanks to AI and sophisticated tools, these assumptions are changing. You may be able to take a full turn through software practices in a matter of hours or days. When AI-generated code is the majority, you can easily throw away and recreate the code – programming is cheap. The assumptions about decisions being hard to change and programs being expensive are changing.

This, in turn, means that software engineering practices will fundamentally alter when code becomes cheap to build and rebuild. Model-driven development and similar ideas should be much more doable, and more engineers need to be looking at them.

The practices are already changing in organisations that use AI-enabled IDEs like Cursor.

Reimagining Computer Science and Software Engineering Education

The future of Undergraduate Education in Computer Science and Software Engineering needs to be work-integrated. This is how we tame the complexity of software engineering – it is a problem solved only when academia and industry can work together. In such a system, as industry adapts software engineering practices to fit the new needs and new assumptions, academia and students get to adopt them quickly and learn them, analyze them, research them, and evolve them, thus benefitting the industry in turn. This symbiotic relationship is key to future undergraduate (and other) education in CS and SE.

The industry collaborations of the kind where industry delivers technology courses aligned to their own hiring needs will no longer work and in fact put the colleges and students in a false sense of confidence. This has been quite popular in Indian colleges and need to be thrown out. A deeper collaboration where students work and learn in a blended way will be required and it will benefit both industry and academia.

We will also need to rethink what is considered foundational. We also need to rethink how particular specializations are taught when work and education blend into one. There are a lot of opportunities for innovation in education when we incorporate these shifts taking place right now.

If you are an instructor, course owner or academic administrator, you need to carefully understand what these shifts mean to their existing and prospective students and design their curricular changes and industry collaborations appropriately.

If you are a student, consider how you can embed work in your learning. Take side projects, go for internships, start building something of your own, help someone who is running a company.

If you are a working professional, consider how you can embed learning in your work. Enrol in a program, for learning and not degree. Carefully reflect on your work and apply Work-Integrated Learning techniques to learn from the work you do. Get mentorship from within and outside your company.

We can’t wait for these shifts to complete, we need to make these shifts so that they work for us, not against us!

References

  1. Cooperative and Experienail Education: Annual Report (University of Waterloo)
  2. Future of Work and Learning: The Big Blur (BestColleges.com)
  3. What is work-integrated learning? A comprehensive guide to WIL (Riipen)
  4. Work-Integrated Learning Isn’t a Trend (Evollution)
  5. Earn while you learn: is a degree apprenticeship the right choice for you? (The Guardian)
  6. The Impact of AI on Computer Science Education (Communications of the ACM)
  7. Computer Science Education in the Age of Generative AI
  8. The Impact of AI Use in Programming Courses on Critical Thinking Skills
  9. Research: quantifying GitHub Copilot’s impact on developer productivity and happiness (GitHub)
  10. LLM as a code generator in Agile Model Driven Development