Live data from Hacker News

10000 things all CS students should do before graduating

tagide.com

91–100 of 164 posts

Re: 10000 things all CS students should do before graduating

#91
post #62

I'm a computer scientist, not a web monkey (FOOTNOTE). I'd say these are not the things all CS students should do before graduating. The field has much more to it. How about: 1) add or modify a significant feature of a working kernel 2) write a toy programming language 3) program in a programming language with concurrent constructs (e.g., erlang) 4) study some theoretical area, develop a practical application based o…

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

I think you are being a little shortsighted. You may mean it doesn't get you jobs in the specific area that employs most of the people you share online/offline time with.

I'de bet most of the guys that programmed the operating system you were running when writing that post got paid for they job. The same goes for people developing compilers or VMs, like, you know, the one Python/PHP runs on... and don't get me started on database servers.

Re: 10000 things all CS students should do before graduating

#93
Well, the author intends to give us advice on the the general purpose CS stuff which all the CS students should have a practical knowledge in.

I think its taken for granted that while graduating, we would be doing the more demanding things such as: -designing our own programming language. -developing a minimal OS dedicated for some specific task. -develop an new alogorithm or drastically improve upon an existing one. -etc...

While doing the things mentioned in the author's list, you may surely implement a few of the crypting concepts which you have learned during your graduation. No one is stopping you to do that.

Re: 10000 things all CS students should do before graduating

#94

Why is the rule restricted to LAMP? And why should the P = PHP & Python? What makes these special? Both are poorly designed languages (since I assume we're not talking Python 3k here)? If anything, I'd say, "Do the systems engineer job application challenge at Square in 2 languages of your choice, one of which should be Valley mainstream. Keep Python or Ruby in slot one, and aim for a big-iron language for #2, like m…

> "Why is the rule restricted to LAMP? And why should the P = PHP & Python? What makes these special? Both are poorly designed languages (since I assume we're not talking Python 3k here)?" Hehe, I think this is the exact attitude the author is trying to prevent. Far too many CS students become too enamored and obsessed with language purity, the perfect design, etc etc, that they end up never building anything. The LA…

> Hehe, I think this is the exact attitude the author is trying to prevent. Far too many CS students become too enamored and obsessed with language purity, the perfect design, etc etc, that they end up never building anything.

I build plenty of things. I just don't get why you'd focus on PHP, which has little business value anymore (no NEW, serious project is going to use it) or Python (which is itself less questionable, but in a big period of transition right now). I'm suggesting building something with technology you'll probably end up working with once you're out of school, and Python 2.* is probably leaving that list.

I don't know where you get "language purity" from.

> The LAMP stack (in both its variations) is by a really long shot the easiest stack to string together (honestly though, Rails will work too).

Nonsense.

> PHP is incredibly easy to approach from the perspective of someone who hasn't written too much code before, the documentation is way more extensive than just about any other platform, the user base is heavy and has a long track record for helping out.

The target audience here is CS students. Odds are they've got a bit of coding experience.

> The industry needs people who build things.

Actually, the industry needs people who can both build and learn. EVERY JOB you go to will have its own stack, with its own idiosyncrasies, and its own tooling. If you are not ready to learn something new every time you go into work, you probably shouldn't be in this career. Seriously. It's this sort of attitude ("Stop fucking around with all that learning and build something") that has screwed our industry over so consistently. It is possible, and mandatory, to do both.

> Whether or not you're familiar with Silicon Valley's Incestuous Circle of Hot Languages And Platforms is strictly secondary.

Not if you'd like to be employed.

Re: 10000 things all CS students should do before graduating

#96
post #62

I'm a computer scientist, not a web monkey (FOOTNOTE). I'd say these are not the things all CS students should do before graduating. The field has much more to it. How about: 1) add or modify a significant feature of a working kernel 2) write a toy programming language 3) program in a programming language with concurrent constructs (e.g., erlang) 4) study some theoretical area, develop a practical application based o…

Please allow me to use a car analogy:

If you want to get a job as a mechanical engineer and design car engines for a living, you don't necessarily need to know how to be an auto mechanic, however, if you spent a summer rebuilding a classic car engine, you might be surprised to learn a few things along the way that help you to design better engines when you do get a job.

I think this analogy works very well for simple web monkey tasks. Sure, building a simple LAMP application will not help your CS chops like writing your own toy programming language will, but you might learn something along the way about Apache, PHP/Python, Linux, or MySQL that will help you in your career. It also gives you a chance to question some of the fundamentals that have been with us for years - why do we use SQL for so many things? Maybe a key/value store would work better for certain apps.

Just like a mechanical engineer might be able to design an engine that is easier to work on if he rebuilt an engine in a garage once or twice, a software engineer might be able to write code that is more easily maintainable if he installed WordPress once or twice. Learning the difference between a good and a bad install procedure can at the very least help you write an installer that doesn't suck.

Re: 10000 things all CS students should do before graduating

#97

Earlier quoted context omitted.

Why should they all know how to configure LAMP? I use LAMP neither at work, nor at home; and even if I start running a server at home, the only things that will follow those initials there will be linux and python. I have no intention of using Apache or MySQL, so why LAMP? Furthermore, there are plenty of devs may never be on the web-app-dev/linux side of the world, so what's the point of Apache? (client-side develop…

Right, but if you had to configure LAMP, could you? What I said was, "every CS student SHOULD be able to configure LAMP." If you graduate with a degree and you can't configure the easiest web stack possible, then something went terribly wrong. edit sub LAMP with WISC# or whatever you want. The specific technologies aren't the point of the article. It's far more useful for him to say, "Do this in Python" for somebody…

I think that's a very valid point. I've had some wtf discussions with software engineers that were widely respected in their careers (usually Microsoft MVPs, for some reason) yet didn't understand something as simple as how to configure a web server, or what the significance of a subnet mask was to their ability to have a functioning network connection.

It was "beneath them", yet to me that's like an airplane pilot that doesn't know how to drive a car. Being able to fly a plane is great, but what about when you just want to get across town and buy some groceries?

Re: 10000 things all CS students should do before graduating

#98
post #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…

Wireshark should be a required tool for any developer writing netcode. If you don't understand the OSI model, or how a 3-way handshake works, how can you possibly debug your code?

I've had to work with customers before who were writing code to send data over XML to a web server before who had no idea how to use tcpdump and Wireshark - it was unbelievable, but I was able to show them bugs in their code because I could see where the TCP conversation broke down.

Re: 10000 things all CS students should do before graduating

#99

Earlier quoted context omitted.

But wasn't that how Linux came to be?

I'm not sure what you're saying, but regardless it's not useful to attempt to create another open source OS from scratch. Unless you're an expert you're probably not going to do a very good job anyway.

Can't you can write your own programming language and use someone else's parser? When we implemented our own subset of java, we hand wrote our own parser to see how to do it, but then the professor introduced us to JavaCC.

Re: 10000 things all CS students should do before graduating

#100

Earlier quoted context omitted.

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

I'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 p…

Actually 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).

Post reply on HN