No, I would have taught them the valuable lesson of not trying to invent the wheel. These students are obviously smarter than the average student, and therefore I would expect more of them, like inventing new OS concepts instead of mimicking age-old designs.
When I was 12 or so, I was fascinated by a video [0] visualizing the memory architecture of the Nintendo Entertainment System. I started researching the technical details of the console in order to try to make sense of what I was watching, and within a few hours I had decided to try to write a NES emulator.
Now, the NES emulation scene is extremely mature, and so I quickly came across a number of warnings essentially saying "the world has too may NES emulators, please don't write another one." I decided to go ahead anyway, and after spending about 2 years' worth of afternoons and weekends, the result was just another bad emulator. It was slow, buggy, incomplete, and the code was a mess.
By your standards, I wasted 2 years of my life making "yet another toy" emulator instead of "using [my] capabilities for a more useful goal." But I had a ton of fun, and the learning experience was absolutely invaluable. I learned in depth how a computer actually works at the hardware level (even though the NES is much simpler than a modern computer, the concepts and skills transferred over very quickly).
As a result, my practical programming knowledge today is vastly improved over where it would have been had I not "wasted" all those afternoons. Many of the career opportunities available to me so far have been directly attributable to the skills I gained working on that emulator.
Thanks :) I never published it anywhere and it's Mac-only, but if you really want to try it you can download the source from https://nobodynada.com/emulator.zip.
You can't build the next wheel without first getting a handle on how & why the existing wheels were built the way they were. Even CS undergrads start with toy operating systems that they fill in the parts for (adding a filesystem, writing a compiler for a toy language, etc). There's simply no better way to learn.
> These students are obviously smarter than the average student, and therefore I would expect more of them, like inventing new OS concepts instead of mimicking age-old designs.
You can disagree but here are the facts:
1. The students completed the task.
2. The professor had intentionally built slack into the schedule to let ambitious students take this further to play around with the tools & their knowledge to try doing creative things.
3. The students used this to recruit others students to form a larger team around a more ambitious end goal
4. Self-organized to distribute work & build a schedule that minimized interdependencies
5. Completed their goal.
Aside from the technical stuff, these all sound like valuable soft skills that were learned/applied in addition to the technical achievement. I'd say both the professor & students did a good job here.
What's hard for me to say is what year this is. In my old engineering school there was a final project in years 3 & 4. Your team would pick some kind of vague final project (with consultation from your teacher), you'd get a budget for materials + connections to companies/vendors for sponsorship, & then go about building your concept. That's a bit more complex than this but also lasts 1.5 years and happens largely outside of school. This blog post is about a project done within the context of 1 subject AFAICT. That makes it way more impressive.
Students at this level simply don't yet (at least generally) have the experience nor a good understanding of the space to understand what are more significant problems to go tackle. From what I've seen you usually start that journey as a masters/PhD student.
Im from the same uni, but from a different department. The project is famous as well as notorious for the commitment required.
Jp uni students typically write a thesis in the fourth/final year (is it called senior in the US?). This project is for the third year (junior in the US?). Probably there is also a difference between a (e.g. mechanical) engineering and a CS department. A typical CS conference paper does not need 1.5 year from initiation to publication, while I understand a mech work will need a lot more time. I moved from B.Eng to CS. With a proper guidance that lets a student focus on a particular subject (a research theme is given by the advisor), they do incredible work, although they may not have a broader view of the research field yet.
> These students are obviously smarter than the average student,
And yes these national university students are the top brains of the country. BTW, I am very sad that typical Japanese corporate organization basically rejects them as they are too smart and do not fit in their age-based structure. The author is in Microsoft anyways.
It's an undergrad class, and they sailed right past the expectations of the rubric and fit in with the culture of taking their project a bit further than what's required (but in a different direction than most.
Perhaps at some point one would expect students to invent something new, but it's generally after the OS/arch classes where you do things like implement toy OSes or toy CPUs. :P
By your logic, nobody should do almost anything unless its completely new or novel. Nobody would learn enough to actually make anything new and a lot of us would get bored or frustrated and leave to do something more fun instead.
I'm glad we can do whatever we find fun or interesting or because we want to learn it, rather than being told by someone like you that we're not allowed.
new doesn't come before knowing what exists and why, and to understand the latter making it is important. as a teacher if you fail to understand you should probably spend some time to read more why people study what exists in school and college for the better part of their life.
But, this was done by third-year students in an educational context. It is just a way of learning by doing instead of by only studying books, and even bright students have to learn the basics first.
I'm sympathetic for your goals, if not your means. I would point out that they ported an existing OS: a sign that perhaps they wouldn't have had enough time to finish with a novel design.
I hope that the code in the commons can continue to become more modular to the point that is is practical to try out some fresh ideas with like a library OS / exokernel that provides all non-novel bits without constraining the design space.
Good luck inventing something new and better without first understanding what already exists. In my experience it's much more efficient to master what already exists, first, noting down any novel ideas as they come to you, and then move on to implementing those novel ideas.