Beginning CS Education Should Be Offered In Different Paths
Legacy CS education teaches the basics needed to be an engineer: languages, databases, networking, and so on. After you’ve learnt the basics and are qualified to be an engineer, you may find yourself specialising in an area, be it mobile development, computer vision, data pipelines, or any other:
The boxes on the right are labeled ADVANCED because they assume you already know the basics.
But a better path is to decouple them. Offer introductory CS courses in different flavors: one trains you to be a mobile engineer. Another trains you to be a game developer. A third trains you to work in image-processing. A fourth trains you in ML. And so on. These courses should not assume any prior knowledge, unlike today’s courses, which assume you know basic programming. Let beginners pick what they want to learn.
What are the advantages of this model?
First, it’s an optimised path. If you want to be a game developer, you don’t need to learn databases. It doesn’t contribute to your goal. It only delays achieving your goal. Traditional CS training takes years, which is not necessary.
Second, being asked to wait for years demotivates people, causing some to lose interest in CS. Inspiration is perishable. We’re not robots. We’re emotional. When we’re excited by something, and take action, we want to get results in months, not years. Go against human nature, and you’re losing a lot in the process, just as running through a swimming pool loses a lot of energy.
If, after some years, you decide to move on from game development, you can always take more courses. Instead of this pattern:
Study → Study → Study → Study → Work → Work → Work → Work
a better pattern is:
Study → Work → Study → Work → Study → Work → Study → Work
Just because you’re not learning databases on day 1 doesn’t mean you can never learn them. Databases are not going to go away — they’ll always be there when you’re ready to learn them. Don’t front-load everything. Get to results quickly.