Live data from Hacker News

10000 things all CS students should do before graduating

tagide.com

51–60 of 164 posts

Re: 10000 things all CS students should do before graduating

#52
post #38

Earlier quoted context omitted.

Its not, and that's the point. I've seen computer science students struggle at basic system administration tasks - even things like moving files and directories. I maintain that half the trouble we have deployment is that developers don't know anything about how configuration and setup works in the real world. This list helps to bridge some of that divide by having programmers deploy software, not just build it. EDIT…

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 finally graphs, automata, networks and projects in all of the above. All of that is a solid base. As with anything else worth doing, you then need to build on that base with the tools of the day.

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.

Re: 10000 things all CS students should do before graduating

#53
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.

I'd go so far as to say that I've never read a job description that was looking for a CS major and didn't expect them to know how to do these things.

Re: 10000 things all CS students should do before graduating

#54
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…

If there's ever a program that should fall under a polytechnic or college umbrella rather than the university umbrella, systems administration and network maintenance is one.

Re: 10000 things all CS students should do before graduating

#56
post #8

Earlier quoted context omitted.

That's the point. There's a general disconnect in a good amount of CS programs between the curriculum and reality. This post is trying to bridge the two. I'd also like to add: 10000 Learn to use source control, use it to store your new LAMP code on Github. 10001 Start studying design: web, graphic, type.

Whats a good place to start studying for 10001? Say for someone engineering minded.

I offer you a few gateway drugs:

The Visual Display of Quantitative Information by E. R. Tufte;

The Elements of Typographic Design by R. Bringhurst;

The Design of Everyday Things by D. Norman;

Don't Make Me Think! by S. Krug.

Beware of Tufte. Using charts to abduct engineers into the world of design is just dirty.

Re: 10000 things all CS students should do before graduating

#57

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…

I 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.

Re: 10000 things all CS students should do before graduating

#59

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…

While I totally agree with you, I don't think that: "1000 -Use a packet sniffer to learn about the network requests your computer does to your favorite game server." Is an easy thing to do. The first time I learned networking, packet encapsulation, protocols and so on, it took me a while to get the concepts. It's only after a few years of CS studying that I got fluent in wireshark (if that's even possible).

This is a list of hard things to do from a beginner, freshman, perspective. But they are also highly necessary if you want to work on fun stuff later on.

A sysadmin who doesn't understand pools of threads will go nowhere, same goes for a developpers who doesn't know what database replication implies.

Re: 10000 things all CS students should do before graduating

#60
post #17
post #8

Earlier quoted context omitted.

That's the point. There's a general disconnect in a good amount of CS programs between the curriculum and reality. This post is trying to bridge the two. I'd also like to add: 10000 Learn to use source control, use it to store your new LAMP code on Github. 10001 Start studying design: web, graphic, type.

I am wary of that sort of very specific advice. Why LAMP, just because it's fashionable? There are many, many other sorts of web stack alone, let alone the many, many other sorts of application. Same with GitHub (which I use myself, btw), there are plenty of others. It just sounds like ESR's advice, to be a great hacker you should be just like me...

Specific advice is good when the audience doesn't necessarily know enough about what they need to differentiate between the various options. Thousands of man-hours are wasted every day by people trying to decide which of two (or more) entirely adequate tools they should use.

I think it's better presented as a heuristic instead of an imperative (as it is here), though: "Use X until you can articulate a reason not to."

Post reply on HN