Live data from Hacker News

10000 things all CS students should do before graduating

tagide.com

121–130 of 164 posts

Re: 10000 things all CS students should do before graduating

#121

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 wi…

Building 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 langu…

(It seems like all the points in my list have been interpreted in many different ways here, so I apologize beforehand if any of you misinterpreted my list.)

I'm not talking about wasting years here, I'm talking about something that is possible to learn in a single course. [1] Also, I'm not talking about making a computer from scratch by building your own circuit board and make your completely own compiler to your newly designed programming language for your home made OS without any proper design. I meant simple stuff - simple compilers[2] and operative systems, because it may actually come back and help you someday - even if you're not going to make a programming language[3] or an operating system.

[1] http://video.google.com/videoplay?docid=7654043762021156507#

[2] http://norvig.com/lispy.html (maybe not THAT simple, but the idea is that doesn't have to take that long or be that hard.)

[3] http://steve-yegge.blogspot.com/2007/06/rich-programmer-food...

Re: 10000 things all CS students should do before graduating

#122
post #120

Earlier quoted context omitted.

That is definitely true. But how many compiler and VM jobs are there? How many web monkey jobs are there? It's like automotive engineers, as opposed to mechanics and drivers. Now, I realize that we're being trained as automotive engineers, but most of us get jobs driving. I think the blog post's advice is much more useful for that.

Good analogy, but then developers are more mechanics than drivers. You can use your cool and deep automotive engineering knowledge to "do mechanics", but most of the time is not efficient cost/benefit wise. Most of the time it's more important to get the thing running in order to start the business.

That is what I am trying to say.

Re: 10000 things all CS students should do before graduating

#123
post #52
post #38

Earlier quoted context omitted.

While I'm surprised someone got through four years of CS without learning to use mv, if you are looking for 'developers' then you should look for software engineering majors, and if you are looking for sysadmins then you should look at people with two year associates degrees in information systems or something. CS is a branch of mathematics; expecting fresh CS grads to make good sysadmins is like expecting comparativ…

We don't have good programs in systems administration and network engineering, but we should. (Any major university starting one?) In the meantime, a good CS program is a perfectly reasonable foundation for a career in systems and networks. I ran through the gamut of logic, basic logic circuits, assembly, algorithms, data structures, complexity and then features of various languages, operating system structures, and…

>I suspect the overall high failure rate of IT projects is attributable to "people with two year associates degrees in information systems or something". I'd rather hire an autodidact with a degree in math, physics or engineering.

yawn yeah, yeah, I know that going to yale makes you better than I am.

Kids today. No respect for the trades.

Everyone choosing a major out of highschool is encouraged to go in to something highly theoretical or impractical. I think it's a show of wealth. I mean, if you get a degree in fine arts or something, well, you had better have a rich uncle or something, right?

Granted, the fact that every SysAdmin education program I've seen was decidedly second rate doesn't help. /good/ sysadmin education programs would help a lot. Really, there is no excuse for the lack of good SysAdmin programs. *NIX is older than I am. It's not like the field changes faster than anything else to do with computers.

I think you have similar problems educating people as computer scientists and then expecting them to work as software engineers. We need a lot more software engineers than we need computer scientists; and if I need a program written, sure, I'd prefer an excellent software engineer who was also a computer scientist, but if I had to make the choice, I'd choose a software engineer who was not a computer scientist over a computer scientist who was not a software engineer for 95% of all projects. But what kind of high school kid choosing a major would choose to be a lowly Engineer instead of a Scientist?

Re: 10000 things all CS students should do before graduating

#124

Earlier quoted context omitted.

The skills learned from writing something like a compiler or operating system can be applied to any type of software development job and are more valuable than anything on the OP's list. College isn't a vocational school where you learn X so you can get a job doing exactly X. The idea is to learn a broad range of CS, Mathematics, and general problem solving skills. Doing so will allow you to write any type of softwar…

You believe that a toy compiler or operating system (which are common in CS curricula) will teach you more about software development than a toy LAMP application?

Don't you? Of course you would...

Re: 10000 things all CS students should do before graduating

#125
It is sad that CS students are now encouraged to become fancy sysadmins, linking existing technologies together 95% of the time and maybe adding 5% of actual stuff.

No wonder resumes come with tens of technology names on it, but the owner fails to implement basic things like itoa.

Re: 10000 things all CS students should do before graduating

#126
Maybe different lists can be prepared for different career tracks. The items enumerated in the main article obviously has a Web development feel to it. For perhaps another track, I feel that the following tasks, actually performed by someone, can be re-formed into a similar list.

* modifying the Linux implementation of strace to implement system call interposition for CDE

* modifying the official C implementation of the Python interpreter to create IncPy and SlopPy

* prototyping Python interpreter extensions by hacking on PyPy, a Python interpreter (written in Python!)

* enhancing Klee, an automated test generation and bug-finding tool based on the LLVM compiler infrastructure (written in C++)

* performing quantitative data analysis using SQLite for data storage and retrieval, Python for ad-hoc data munging, and the R project for statistics

* creating lightweight interactive data visualizations using HTML and JavaScript with jQuery

* writing lots of Python scripts to automate routine tasks and to administer computational experiments

* writing a custom memory allocator for C programs

* creating dynamic program analysis tools in C using the Valgrind code instrumentation framework

* building components of a software simulator for semiconductor tester hardware using C++ within the Microsoft Visual Studio IDE

* creating an interactive image filtering application in C++ using OpenGL and GLU for image rendering and Qt toolkit for GUI.

* building graphical applications for Palm OS handheld devices in C using the Metrowerks CodeWarrior IDE

* writing a GUI for a handwriting recognition application in C++ using the Qt GUI toolkit

Programming, and indeed all of computer science, is a very mixed bag!

Source: http://www.stanford.edu/~pgbovine/academic.htm

Re: 10000 things all CS students should do before graduating

#127
post #38

Earlier quoted context omitted.

While I'm surprised someone got through four years of CS without learning to use mv, if you are looking for 'developers' then you should look for software engineering majors, and if you are looking for sysadmins then you should look at people with two year associates degrees in information systems or something. CS is a branch of mathematics; expecting fresh CS grads to make good sysadmins is like expecting comparativ…

Google expects its software engineers to do all that and more with a computer science degree. So what if it's not taught in the major? You're smart -- figure it out.

Don't get me wrong, I'm plenty capable with real world stuff. I just don't like it when people think a CS education should mean learning Java libraries and design patterns and server configuration. I'm glad I wasn't forced to waste my time taking classes devoid of conceptual material.

Re: 10000 things all CS students should do before graduating

#128

I think a lot of people here missed the point. This isn't a list of "stuff that will make you SUPER BALLER," it's a list of easy things that teach you very much and give you a lot of confidence for a very small amount of effort. Plus, all of these tasks are highly relevant in our web database-driven world. Not everyone wants to be Johnny Writes His Own C Compiler Geek, but every CS student SHOULD be able to configure…

Somebody should write a "stuff that will make you SUPER BALLER" list.

Didn't they do that and call it SICP(/TAOCP/K&R/HTDP/...)?

Re: 10000 things all CS students should do before graduating

#129

Earlier quoted context omitted.

Stuff on the list gets you jobs. Your stuff doesn't.

I would be wary of confusing the idea of pursuing an education with that of getting a job. There's a correlation between the two, for sure, but they're not the same thing. I think universities themselves have been pushing this correlation, but I don't think it's necessarily the right idea to push. raffi's point is a very good one. If you're a computer scientist, then study computer science. If you're a professional p…

Isn't the distinction kind of academic? Most people study computer science with the goal of getting a job as a professional programmer.

Re: 10000 things all CS students should do before graduating

#130

I'm a CS student, near the end, and let me add at least one or two things to this list: - Meet a lot of interesting students outside of CS - Go to at least one random social even that has no connection to CS - Minor in something non-technical, or at least take a few classes Not to detract from CS at all, but it discourages me how many of my classmates spend 4 years doing nothing but computer science and never think/l…

I agree with this list, but let me add that when you say "Go to at least one random social even that has no connection to CS" I hope you mean "make a commitment to a social group that has no connection to CS".

Also w/ regards to "Minor in something non-technical, or at least take a few classes" I can't agree more. I am a CE, not CS, but close enough. Currently I am taking German, and I would say it is one of my favorite classes. It has completely changed my way of thinking about languages, including English.

To be honest, my involvement with student gov, fraternity, and German is what keeps me sane for my technical classes.

Post reply on HN