5 ms·
It's an interesting list, but I do believe it lacks a lot of computer-specific things which I personally think people should do. For example - Build your own
by JeanPierre 15y ago
It's an interesting list, but I do believe it lacks a lot of computer-specific things which I personally think people should do. For example
- Build your own computer
- Build your own (small) operative system
- Build your own programming language
would be on my list of things a CS-student should do before graduating, because you will most likely get into problems where knowledge of the three things mentioned above will help you understand/solve the problem. Obviously, that list is not complete, but I think those are some of the more important points.
- natural219 15y agoI wouldn't recommend that EVERY CS student do those. I mean, I would, but you can't expect every person to be able and willing to build any of those things. I think that this list is great in that it's reasonable; none of these things are particulalry hard, but each one of them actually sounds fun and produces something cool.
- sanderjd 15y agoI assume he means putting together a computer in the sense of constructing one from commodity parts, in which case that one is definitely in line with the rest of the list. The other two are certainly more advanced exercises than the rest, but I think they are absolutely things CS students should be expected to be able to do, though many won't be willing to. Many won't be willing to do the other things on the list either, that's kind of the point of making an inspirational list, isn't it?
- natural219 15y agoOh. I read it as, "design and construct your own circuit board." Building your own computer isn't that hard, but I don't know what (if anything) it has to do with computer science / software engineering.
- esrauch 15y agoYou would be surprised how many CS students don't even know what parts are in the computer. Picking parts yourself forces you to research exactly what each part does. Though I think that is a much lower bar than pretty much anything that is on the list there, any nontechnical person could figure out what parts to buy and put it together but it would be a lot harder for those people to write a MapReduce.
- dkersten 15y agohttp://www1.idc.ac.il/tecs/ http://www1.idc.ac.il/tecs/
- Locke1689 15y agoBuilding your own computer or your own operating system very rarely help, in my opinion, because the real systems you work on are so much more complex than the pretend stuff you build that you miss massive layers of complexity. It's far better to have a good knowledge of how modern systems work than waste years attempting to build such a system. Similarly, I have no idea why you would build your own programming language. You're very rarely likely to run into a problem with closure conversion in a programming language you wrote, but you might run into a problem with peephole optimization that you would never get to implementing unless you have a PhD in PL.
- spacemanaki 15y ago> Similarly, I have no idea why you would build your own programming language. So, I might be biased because I'm a wannabe languages geek, but I think studying PL really does give you a lot of insight. I think if more people tried to write their own language, there would be far fewer flame wars about inane things like syntax, and far fewer poorly argued debates about types. Plus, learning about parsing is definitely practical and useful.
- Locke1689 15y agoI'm doing research in PL, but as much as I like it I just don't think that designing your own PL is much of a benefit. I think if more people tried to write their own language, there would be far fewer flame wars about inane things like syntax, and far fewer poorly argued debates about types. I'd much rather people just leaf through some the PL research that already exists rather than try and invent their own. Most people don't even know what HM is. Plus, learning about parsing is definitely practical and useful. I completely disagree. Writing a parser is a character-building exercise. It ultimately wastes more time than its worth and you're better off using someone else's parsing system anyway.
- spacemanaki 15y agoActually I think we basically agree, it's just a matter of degree. When I read "write your own language" I'm mostly thinking of the kinds of work you might do in an undergrad PL class, which I think works well as a kind of antidote to the Java monoculture. I agree that inventing and designing a custom language with no reference, in a vacuum, would probably not be helpful. As for parsing, that was almost exactly my point, learning about parsing, and realizing what kind of work is involved, is just the experience you need to reject being assigned the writing of a custom XML parser by a clueless manager (true story).
- cstavish 15y agoI absolutely agree. Many would scoff at the prospect of writing a barebones OS for educational purposes, claiming that they would never have to use that knowledge in the real world. While they will not be given such a task by an employer, realistically, the vast insight gained from the project about process scheduling, interrupts, memory protection, hardware interaction, etc. is incredibly valuable. Programmers not at least familiar with low-level concepts are not grounded in reality. Their solutions to problems and code may be of worse quality than those of more well-rounded programmers. I probably sound like quite a snob, but I'm the kind of guy who reads Understanding the Linux Kernel before bed and reverses parts of the stage 2 iPhone bootloader for fun, so put what I say into perspective.