Live data from Hacker News

Putting the Science back in Computer Science

cs.princeton.edu

31–40 of 42 posts

Re: Putting the Science back in Computer Science

#31
"1970s: Want to use the computer? Take intro CS.

2000s: Intro CS course relevant only to future cubicle-dwellers"

This is a serious problem. When I speak to students from programs other than Computer Science, even from other scientific disciplines, they question why they should ever have to take a Computer Science class. But if you tell a Chemistry major he needs a Physics course, or tell a Biology major that he needs a Chemistry course, it is likely to be accepted as perfectly reasonable. To many, CS == Computer Programming.

But this is a tough problem. To get non-CS students interested, we probably need to stress the applicability and practicality of being able to understand fundamentals and concepts of Computer Science as applied to other scientific disciplines. "Putting the science back into Computer Science" may be the only way to do so, while also dispelling the notion that you only need Computer Science education if you wish to program computers for a living.

Re: Putting the Science back in Computer Science

#32

I thought his reasons for advocating Java for teaching are interesting, in particular: Q. Why not Python? A. Poor data abstraction; everyone needs layers of abstraction I've recently been telling my dad that he should teach himself Python (he has no programming background aside from BASIC), perhaps I should rethink this. I like Python's REPL for teaching, but back in my Java days I used to use http://www.beanshell.or…

I'm not entirely sure that's a cogent argument. Two major objections: 1. If anything, I think the problem with Java is that it encourages too much abstraction. This isn't inherent in the language design, but is a product of Java culture—the massive UML diagrams and fragile class hierarchies which are glorified in Java tend to encourage adding extra abstractions to things which don't really need to be abstracted away,…

My impression (given the next FAQ about Matlab) is that by "abstraction" he means "static types". Whether static typing is better or worse for beginners than dynamic typing is (as far as I know) an open question, like (unfortunately) most questions about software engineering practices.

Re: Putting the Science back in Computer Science

#33
post #30

You know, correct me if I'm wrong, but I always viewed a true science as something held the scientific method at its core. So the big test for me is whether computer scientists apply the scientific method. And to be honest, I can't think of many examples where people rigorously chase a problem using the scientific method. From Wikipedia, in case anyone's unfamiliar: 1. Define the question 2. Gather information and re…

That sounds very much like the debugging process in an open source project.

Re: Putting the Science back in Computer Science

#34
post #31

"1970s: Want to use the computer? Take intro CS. 2000s: Intro CS course relevant only to future cubicle-dwellers" This is a serious problem. When I speak to students from programs other than Computer Science, even from other scientific disciplines, they question why they should ever have to take a Computer Science class. But if you tell a Chemistry major he needs a Physics course, or tell a Biology major that he need…

It seems like most computer scientists, when observing the general lack of mainstream interest in computer science, assume that there's actually a problem with having a low number of computer science students. I disagree. Why do we ("we" being the computer science community, of which I casually consider myself a member) need more people? Is there reason to assume that there are many people who would be interested in and excel in computer science that never gave it a try? A decent portion of the supposedly interested computer science students I've interacted with don't even seem like they're a good fit for studying CS. If anything, I think we should have fewer CS students (perhaps this could be accomplished by requiring earlier or more difficult weed-out courses like Discrete Math, Algorithms, or Theory of Computation).

Especially with today's ubiquity of personal computing, certainly anyone who's interested in computers or computation can seek it out themselves—I don't think they need CS departments to cater or market themselves to them.

Oh, and about the "CS == programming" debate: If you don't like the act of programming, I really don't see how you're a good fit for studying computer science. This isn't to say that computer science and programming are one and the same. Consider this: biology != dissection, but if you can't stand dissection, I doubt you're a good fit for studying biology.

Re: Putting the Science back in Computer Science

#35

I thought his reasons for advocating Java for teaching are interesting, in particular: Q. Why not Python? A. Poor data abstraction; everyone needs layers of abstraction I've recently been telling my dad that he should teach himself Python (he has no programming background aside from BASIC), perhaps I should rethink this. I like Python's REPL for teaching, but back in my Java days I used to use http://www.beanshell.or…

By abstraction, the author mentions interfaces earlier on. I take the point of the other commenter who states that Java practitioners use too much abstraction, and would also point out that the later versions of Python add abstract base classes: http://docs.python.org/library/abc.html

After comparing Java and Python solutions on Rosetta Code: http://rosettacode.org/ I think new programmers would find it easier to learn when using Python.

- Paddy.

Re: Putting the Science back in Computer Science

#36
post #33
post #30

You know, correct me if I'm wrong, but I always viewed a true science as something held the scientific method at its core. So the big test for me is whether computer scientists apply the scientific method. And to be honest, I can't think of many examples where people rigorously chase a problem using the scientific method. From Wikipedia, in case anyone's unfamiliar: 1. Define the question 2. Gather information and re…

That sounds very much like the debugging process in an open source project.

Debugging a program is slightly different from trying to understand the nature of the world, no? I suppose that's the other major criteria I tend to use when thinking about scientists.

Re: Putting the Science back in Computer Science

#37
post #28

Quadratic algorithms are useless because performance matters? That is a textbook false dichotomy. Performance obviously matters, but the time hierarchy theorems suggest that there is certainly legitimate computation that requires quadratic time. Max flow will need at least quadratic time.

There are lots of algorithms with very high time-compleity that are still usefull in practice. One nice example is the decision-algorithm for Presburger arithmetic which runs in O(2^2^n).

Re: Putting the Science back in Computer Science

#38

Hard to say. Computer science has always been in an awkward position. Is it science, is it math, is it engineering? Some people say that it's an entirely new thing, the "study of the artificial" Personally my impression is that work in description logics, databases and such has been held back by a focus on mathematics. Roughly, the more powerful a logic system gets, the harder it is to 'compute' about it, both in the…

You wrote:

"Personally my impression is that work in description logics, databases and such has been held back by a focus on mathematics."

and

"highly descriptive representations"

These two remarks were very popular during the hype period of 'artificial intelligence' (AI). The dream was that we could avoid math, use your

"highly descriptive representations"

and some magic dust, and, presto, get great results. We didn't.

Instead, it remains: To build something solid, we need solid specifications of (1) what the thing is to do and (2) what we have to work with and then actually design the thing so that we are fairly sure from the design that we will get (1).

E.g., to build a bridge across the Golden Gate of SF, we still need solid specifications of (1) what the bridge is to do and (2) steel, concrete, the bedrock, etc. Otherwise you won't want to drive across the bridge.

Well (1) is a 'specification', and so far we still need one. AI, etc. just wanted to say, I won't have a specification and, instead, will know I like it when I see it. Doesn't work well enough.

When my team and I gave a paper at an AAAI IAAI conference, nearly all the good work was from solid, traditional engineering with careful design as I have outlined.

For problems such as you mention,

"Captain Kirk is a person is the Star Trek universe"

a specification is difficult to write. It remains, for this difficulty, the only hope we have is math, but, yes, the math for such a specification is difficult and likely needs some advanced prerequisites and maybe some original work.

Possible in some seemingly challenging cases? Yes. Easy? No. Doable for all such problems now? No.

Without the math, with a lot of effort, some human 'domain expertise', some heuristics, a lot of fitting ('machine learning') to a lot of empirical data, a lot of testing and revision, we can build software that can do well, say, playing chess or answering questions on TV.

Still, you wouldn't want to drive across a bridge built that way. If the bridge had stood for a year, then maybe you'd try it. But you wouldn't want to be a test pilot for an airplane designed that way.

If constructing solid math specifications is too difficult and just "I will know I like it when I see it" is too sloppy, then we could use some new 'paradigms'. Here's a quarter, and it's worth more than a pair of dimes!

Re: Putting the Science back in Computer Science

#39
Poor Sedgewick: He's looking for work! Close to the terms of Steve Blank, he is looking for "product/market fit"! So far, he's a long way from finding it!

Computing is the greatest gift horse to civilization so far. Yet poor Sedgewick wants to look at this horse, strain to find a flea on its back, rush off to do a 'scientific' study of how to overcome fleas, and then scream that he has saved hackers in cubicles struggling with performance problems and has enabled the power of the gift horse for the benefit of civilization.

So he wants to "Save the world" and, thus, get praise, acceptance, approval, status, prestige, popularity, admiring Princeton coeds, lecture invitations, and book contracts! Heck, just the coeds should do! A lot of them have rich fathers who actually have done well finding product/market fit!

Part of his evidence for the value of his 'science' are enrollments in his 'computer science' courses! He interprets the enrollments as high interest in overcoming fleas instead of just using the horse!

For the science, he wants to use old Princeton heroes von Neumann, Ford, and Fulkerson.

Alas, in his steps toward science, in his first step he talks about 'randomness' and falls flat on his face in the mud. Instead, he needs to walk across campus and talk to some people who actually know how to define and work with 'randomness'; there are such people, but I will omit names here!

Then he wants to claim to use 'von Neumann's science' to dig into details of performance of Ford and Fulkerson graph problems and try to find one measure of performance "to rule them all".

Then he discovers generating functions!

Where does he get that really strong funny stuff he's been smoking?

But, the rest of us can relax: So far Sedgewick at Princeton hasn't found anything important in 'computer science' beyond some middle school course in Java!

Re: Putting the Science back in Computer Science

#40
post #36
post #33

Earlier quoted context omitted.

That sounds very much like the debugging process in an open source project.

Debugging a program is slightly different from trying to understand the nature of the world, no? I suppose that's the other major criteria I tend to use when thinking about scientists.

Sure, I'm just comparing the methods. I think its interesting that as software systems become more complex that scientific methods become more and more useful.
Post reply on HN