Is it not hypocrisy to slam current education practices while being a professor who practices them?
However, I think that it would be worth trying a radical experiment in college-level computer science education. This experiment would start with a small group of students, but be conducted with serious attention to scalability. A four-year program would be based on a small set of big projects addressing problems we do not know how to solve. If the projects are successful, they could have major impact. Those projects would be defined by a rolling committee of faculty and students with external input, and would be hard but not unrealistic for making substantial progress in four years; would involve several areas, skills, and talents; and would be manageable by faculty and students. The projects would be organized to cover the core knowledge, skills, and open questions that we believe computer scientists need to command. Let's call those the topics. Incoming students would go through an initial period in which they would select a subset of projects with a balanced coverage of topics, with the help of a faculty advisor and more senior students. Like when selecting a major, students would sample different projects before settling on a portfolio with a balanced coverage. Instead of signing up for classes, students would sign up for tasks in projects. Their evaluation would depend only on how they perform on their selected tasks. Specific tasks would need specific knowledge and skills, which students would be free to acquire in whichever way works best for them. Faculty (and possibly) others would offer short courses on important topics that serve multiple projects, but the main role of faculty would be to guide projects and their participants. There would be no difference between research and teaching. Faculty would ensure that projects and project assignments are demanding so that students have to get deep knowledge and skills across a range of topics. Faculty would work with students to help them find the best way to succeed. But each student would have an individualized curriculum tied to their projects and their topic coverage requirements.
In other words, undergraduate education would be run like a (large) set of graduate research or cutting-edge industrial R&D projects. Lectures, reading, assignments would be provided to satisfy problem-solving demand, instead of the current model in which they are imposed on students independently of their stage in their education.
Projects would have concrete outcomes, for example papers, online services, and open-source software. Individual faculty, or small groups of faculty, would be project directors, with students playing appropriate roles in different project functions.
This is a very rough sketch. I'm sure there are many objections. But something like it has to emerge. Fun and profit demand it.