Live data from Hacker News

What every computer science major should know (2011)

matt.might.net

51–60 of 101 posts

Re: What every computer science major should know (2011)

#51

Earlier quoted context omitted.

My two latest research projects required all of those things. More specific, I tried (and failed) to model movement in an environment as a particle in an electric field. Defining this model required physics of a particle, and optimizing the parameters required differential equations. A sub-section of the project (not done by me) defined a grammar, which required some properties over a semi-ring, which I remember from…

That sounds interesting; can you provide a link to your homepage? Or describe the project in more detail?

Well, the first part of the project got scrapped, because it turns out people behave like a particle only under trivial conditions (or I modeled the problem wrong, that's also possible). The idea was that, since we know which target is attracting a pedestrian's attention, we could model both as a particle being attracted to a target (and being repelled by distractors). Whatever little remained of that idea ended up in another paper[1]. As for the grammar, the best I have is this paper[2].

I apologize for not having anything less dry to read than papers - as I'm not looking for another job, I don't feel the need to get off my ivory tower too often.

[1] http://ivan-titov.org/papers/emnlp13.pdf (poster: http://www.ling.uni-potsdam.de/~villalba/publications/refexp...)

[2] http://www.ling.uni-potsdam.de/~koller/papers/chart-gre-14.p...

Re: What every computer science major should know (2011)

#52
post #35

There is more harm in the notion that there is anything at all that absolutely everyone needs to know to succeed than there is benefit from the contents of such lists themselves (which boil down to "everyone needs to know what I know"). To succeed, all you really need to know is enough to be able to do meaningful contributions to society in any way whatsoever. This is all there is to it and there are thousands of ind…

Ooof, very much agreed. I studied electrical & computer engineering in college, and went on to work in software instead. I was a bit overwhelmed by most of this list, even though I consider myself a fairly successful software developer.

And then I got to the computer architecture section. Given my background and my time away from ECE, I've forgotten more about comp arch, semiconductor physics, and microprocessor design than most CS graduates I know have ever learned. And I think that's completely ok. Even most people I know (including past-me) who work on software for embedded systems don't really need all of that, though a healthy dose is helpful.

Re: What every computer science major should know (2011)

#53

"Scala is a well-designed fusion of functional and object-oriented programming languages. Scala is what Java should have been." The only thing I disagree with. Scala is the only language I know of that several startups have decided to give up on. How can you call C++ a necessary evil and recommend Scala, which is basically the JVMs C++? Anyway, that list is pretty long - I don't think I know any CS major with that sk…

I've gotten to the point where I won't write new JVM-based code in Java anymore. I think many companies that have tried and discarded Scala used too much of it. It has a lot of advanced features, and I'm not particularly good at using most of them (and some of them I probably don't even know exist).

If people start off thinking of Scala as simply a "better Java", and only move to use its easier-to-understand features, I think it'd be a lot easier to hire people to work on Scala codebases and/or train people in the language.

Re: What every computer science major should know (2011)

#54
There's a book that every person who is serious about databases should read: it's "Applied Mathematics for Database Professionals", by APress.

See here: http://www.apress.com/9781590597453

Here is the table of contents, just to give you an idea of why it's such an amazing book:

Table of Contents

1. Logic: Introduction

2. Set Theory: Introduction

3. Some More Logic

4. Relations and Functions

5. Tables and Database States

6. Tuple, Table, and Database Predicates

7. Specifying Database Designs

8. Specifying State Transition Constraints

9. Data Retrieval

10. Data Manipulation

11. Implementing Database Designs in Oracle

12. Summary and Conclusions

Re: What every computer science major should know (2011)

#55

"Scala is a well-designed fusion of functional and object-oriented programming languages. Scala is what Java should have been." The only thing I disagree with. Scala is the only language I know of that several startups have decided to give up on. How can you call C++ a necessary evil and recommend Scala, which is basically the JVMs C++? Anyway, that list is pretty long - I don't think I know any CS major with that sk…

> Scala is the only language I know of that several startups have decided to give up on. Not sure this makes any sense. Companies changing stacks for whatever reason happens about hundred times every day on this planet. Plus, I think the C++ comparison doesn't do you any favors...

In hindsight I shouldn't have posted this, language wars never lead anywhere. For an overview of why some people deem it unsuitable for big, long-term projects, this thread is a good starting point: https://news.ycombinator.com/item?id=9393551

Re: What every computer science major should know (2011)

#56
post #35

There is more harm in the notion that there is anything at all that absolutely everyone needs to know to succeed than there is benefit from the contents of such lists themselves (which boil down to "everyone needs to know what I know"). To succeed, all you really need to know is enough to be able to do meaningful contributions to society in any way whatsoever. This is all there is to it and there are thousands of ind…

Could not agree more, we really need to go away from the notion of doing 'IT' just for the sake of it, and use our computer knowledge to solve a problem (make sure the problem is real first). Which is why most of the awesome programmers I've met, NOT a major in IT, self-thought and actually used the computer as a tool to solve a problem.

No, doing IT as a hobby is still very valid. After all, it's where Linux and Unix both came from, as well as the Web.

Re: What every computer science major should know (2011)

#57
post #53

"Scala is a well-designed fusion of functional and object-oriented programming languages. Scala is what Java should have been." The only thing I disagree with. Scala is the only language I know of that several startups have decided to give up on. How can you call C++ a necessary evil and recommend Scala, which is basically the JVMs C++? Anyway, that list is pretty long - I don't think I know any CS major with that sk…

I've gotten to the point where I won't write new JVM-based code in Java anymore. I think many companies that have tried and discarded Scala used too much of it. It has a lot of advanced features, and I'm not particularly good at using most of them (and some of them I probably don't even know exist). If people start off thinking of Scala as simply a "better Java", and only move to use its easier-to-understand features…

You mention the key points - in order to use it successfully, you have to agree to use a common, safe subset of the language (e.g. no implicits), similar to C++. You then have to make sure everyone adheres to this, if possible by using automated tools. As a startup, you often don't have the luxury to be able to invest in that kind of infrastructure. You have to train people to use the language correctly, which is a huge time sink. Onboarding still is a huge problem.

Backwards compatibility is another big factor that has bitten people once too often. Compiler bugs, slow compile times, bad community attitude come on top of this.

>> If people start off thinking of Scala as simply a "better Java", and only move to use its easier-to-understand features, I think it'd be a lot easier to hire people to work on Scala codebases and/or train people in the language.

Yes absolutely, and I agree it can be used effectively in that case. But the language attracts people that like to think of themselves as wizards that want to master the advanced stuff, too. After all, the whole thing started basically a vehicle for Martin Odersky's papers, implementing any paradigm known to mankind.

Considering all those downsides - is Scala still worth the tradeoff? I do understand the appeal, but there are so many languages out there right now. You need a stable and reliable platform to base your business on, and after hearing - for several years - people moving away from it because it is lacking in that regard seem like something a responsible CTO should not ignore.

Re: What every computer science major should know (2011)

#58
post #30

I graduated 10 years ago and never used calculus, differential equations, linear algebra, or physics in my job. I'm not saying this to say they aren't useful. But does anyone find them generally useful for their job? If so, what for? I'd like to know what I'm missing here, if anything. I don't want to go through a refresher just to forget it in another couple of years.

I left college about 12 years ago and I use physics and linear algebra nearly every day, along with trigonometry and a bunch of other branches of math.

The thing for me is that I didn't use it until 4 years ago and now I find myself going through the bibliography of classes I took more than a decade ago to try and 'remember' all this stuff.

As for what I use it for? Right now I'm doing a bit of 3d stuff in the browser (javascript and three.js), the library takes care of many details, but one of the first things I had to do was print a trigonometry cheatsheat (sin, cos, arctan...) and put it on the wall.

Re: What every computer science major should know (2011)

#59
post #40

Earlier quoted context omitted.

That's great, but who said anything about success? The article is about how to be a well-informed computer scientist. This guide will put a graduate in a great position and open up a lot of opportunities. Whatever "success" means is only loosely related.

From the article: I've tried to answer this question as the conjunction of four concerns: What should every student know to get a good job? What should every student know to maintain lifelong employment? What should every student know to enter graduate school? What should every student know to benefit society? For all the four points listed the attitude of focusing on some checklist covering everything is not really…

[deleted]

Re: What every computer science major should know (2011)

#60
post #58
post #30

I graduated 10 years ago and never used calculus, differential equations, linear algebra, or physics in my job. I'm not saying this to say they aren't useful. But does anyone find them generally useful for their job? If so, what for? I'd like to know what I'm missing here, if anything. I don't want to go through a refresher just to forget it in another couple of years.

I left college about 12 years ago and I use physics and linear algebra nearly every day, along with trigonometry and a bunch of other branches of math. The thing for me is that I didn't use it until 4 years ago and now I find myself going through the bibliography of classes I took more than a decade ago to try and 'remember' all this stuff. As for what I use it for? Right now I'm doing a bit of 3d stuff in the browse…

[deleted]
Post reply on HN