Live data from Hacker News

Learning to Code vs Learning Computer Science

shkspr.mobi

101–110 of 116 posts

Re: Learning to Code vs Learning Computer Science

#101

Fundamentally I agree, but I question why we do not teach computer science/coding the same way we teach music? For example, when I first learned how to play piano, I wasn't taught how to play Major 9th chords. Rather, I learned simple melodies and expanded into more complicated harmony as I grew older. The reason why I began learning more theory was because I knew of its potential to make me a better musician. This c…

I agree with you, but this somewhat flies in the face of what he says. He is arguing that CS is important, not just learning to code. But I think learning to code is important because it is what attracts creatives, and both creatives and engineers are needed in development. There are two things that attracted me to programming: 1. Telling something else to do what you want, and it does it. 2. Being able to be creativ…

But I think learning to code is important because it is what attracts creatives, and both creatives and engineers are needed in development.

You're guessing here (and you admit it), but I'm a very strong data point for the opposite. Anyone who knows me would tell you I'm creative (I started out, and still am a filmmaker and it's all I'd do if I could afford it).

I had thousand of hours of computer science before I wrote my first line of code, at age 20, and I didn't seriously get into coding until I was 24.

So no, I don't think coding and creativity have any link whatsoever. I find CS extremely creative and enjoyable, much more so than coding, which I consider to be "S" work in the Myers-Briggs taxonomy. When I want to be creative, I step back into CS mode.

Re: Learning to Code vs Learning Computer Science

#102
post #94

Earlier quoted context omitted.

> Similarly, architects and engineers have to understand how the materials they're planning to use are made, what their capabilities and limits are, and how they can best be used to implement their vision for a building or a bridge. They can ignore how the bricks are made and how they perform, but their structure will not last. Np, they don't. At least not to the degree that some people here think programmers and sof…

This! This is the first comment I've read in this thread that's dealt with the core issue. We, the world, don't need millions of people who can write a good sorting algorithm. A few thousand will do. We need millions of people who can use the sorting algorithm that those thousand people wrote, to build things higher up the stack, and billions of people who can use the things those millions of people wrote to do their…

Excel and macros etc are the beginnings of this

One of the startups I'm CTOing is working on exactly that problem, or rather, has worked on it and is commercializing the solution.

Logo[0] (the language for children) is actually more complex and abstract than what we've got, which isn't a language at all, but closer to a spreadsheet for code, except...people don't even know they are coding, much less using what everyone here would call a debugger. They're just doing stuff that, if you were a computer scientist, you would recognize as coding.

I'm pretty excited about it, we're beta testing with an 800 person company in Australia at the moment, and hope to go into a general release over the summer. I think it's similar in significance to the business world as the spreadsheet, which allowed non-programmers to do number crunching. Our stuff allows non-programmers to do the vast majority of business automation and back office coding being done today.

[0] http://en.wikipedia.org/wiki/Logo_(programming_language)

Re: Learning to Code vs Learning Computer Science

#103
Learning to code is a prerequisite for learning computer science. You will not ever get interested in how to sort numbers in an efficient way until you've had to try to do it yourself because you needed it in some of your own projects. This practical need of yours will put everything else into a context and things will flow from there.

For example, I think I "invented" selection sort when I was maybe 10-11 years old because that was the obvious choice. Then few years later when I first read about quicksort, I kind of already had an intuition to why that just might be a heck a of a lot faster than what I had used before. And also to why selection sort might actually be really, really slow.

I also think that coding and computer science are so tightly connected that in practice you can't do one without the other even if you wanted to. I also think there's no easy path to coding: you need to start from the lowest level and build from there. Or start a bit above the lowest level but go for a dive down later, and only then continue upward.

Re: Learning to Code vs Learning Computer Science

#104
post #7

Computer science is to programming as physics is to civil engineering.

No, that's not even remotely an accurate analogy. Computer science is a branch of applied mathematics; not a physical science. Engineers need to have a basic understanding of core physics principles in order to do good work. That analogy doesn't hold with respect to programming and CS. A better analogy is that CS is to programming as number theory is to arithmetic: a person doesn't have to know what a "field" is in o…

I'd split Computer Science in two - the basic stuff and the cutting edge. While most CS graduates have the former, they are ignorant of the latter, unless they read up research papers.

It is good to have a foundation, and coding alone doesn't give it, hence the need to learn basic CS, but probably nobody can keep up with the cutting edge of it, being so vast and dynamic.

Re: Learning to Code vs Learning Computer Science

#105

Earlier quoted context omitted.

No, that's not even remotely an accurate analogy. Computer science is a branch of applied mathematics; not a physical science. Engineers need to have a basic understanding of core physics principles in order to do good work. That analogy doesn't hold with respect to programming and CS. A better analogy is that CS is to programming as number theory is to arithmetic: a person doesn't have to know what a "field" is in o…

I'd split Computer Science in two - the basic stuff and the cutting edge. While most CS graduates have the former, they are ignorant of the latter, unless they read up research papers. It is good to have a foundation, and coding alone doesn't give it, hence the need to learn basic CS, but probably nobody can keep up with the cutting edge of it, being so vast and dynamic.

> I'd split Computer Science in two - the basic stuff and the cutting edge. While most CS graduates have the former, they are ignorant of the latter, unless they read up research papers.

That's pretty much true of graduates in any field of science, not just computer science. A BS is a fine grounding in the basics of a field, getting a grip on -- usually some slice of -- the cutting edge is something you do by reading current research in the field.

Re: Learning to Code vs Learning Computer Science

#106
The one thing a lot of people really miss when talking about education is proper motivation. Believe it or not, it is not natural to want to know what the 'sort' function does. Even the most curious, smart individuals may ponder for a moment the implications of not knowing what that black-box function is doing, but very few are compelled to start digging.

And really, what's so bad about that? If the sort function solves your problem, then guess what, you just solved your problem. Now, next week when they plug in some new sets of numbers and their program breaks, they'll have to figure out what the hell the sort function actually does. Then two weeks later when they need to plug in large data sets, and the program takes days to run, they'll need to investigate better algorithms, and so on.

It's called classic problem solving, and it doesn't get nearly the credit it deserves. It provides proper motivation (not forced motivation, or misguided motivation). One is not simply compelled to ask "Are there more or less efficient ways to sort numbers?". There must always be a reason.

Lastly, what is academias obsession with berating professional coders?

>I learned the BASIC and Pascal languages at school. Who uses those now? No one. Learning to code an iPhone or Android app is great fun - but in 10 years time when those children are adults, the world will have moved on and Objective C will be yet another obsolete language.

Let's just ignore the implied purity of the former two languages mentioned, but Objective C is used to program for the most popular phone the world has ever seen. You average kid grew up with one of these things, it's very natural to want to make something for it. This attitude is really unfortunate. People that go from zero to making shippable apps are pretty awesome, it takes a lot of effort to persistently learn (by yourself!). What makes it worse is that the computer scientist and the coder who wants to solve/ship something are trying to solve two completely different problems. There is no reason for this kind patronizing.

Re: Learning to Code vs Learning Computer Science

#107
post #72

Earlier quoted context omitted.

A well-taught computer science course will not force anyone to rote-learn algorithms. Instead it ought to walk the students through the discovery process of improving from a naive but simple bubble sort, through more complicated algorithms. Once they understand the complexities, they can appreciate the genius of quicksort. And with the sort problem well established in their minds, they're ready to appreciate the valu…

>A well-taught computer science course will not force anyone to rote-learn algorithms. Agree but with the correction that you mean well-structured computer science course. The UK national A-level syllabus for "Decision 1", that which is under discussion, largely demands rote-learning for the examination. To avoid this, for whatever reason, would be very poor teaching. There are structural deficiencies here, which tea…

> [...] To avoid this, for whatever reason, would be very poor teaching.

Depends. You can teach for the grades, or you can teach for lifes. In general, it's mostly university entrance requirements that care about the grades. Otherwise, don't worry about the grades at all.

Re: Learning to Code vs Learning Computer Science

#108
post #35

I find sorting algorithms a bizarre and damaging introduction to computer science. If, as suggested, you ask an interested teenager how they sort a list of numbers on paper, they can usually give a reasonable algorithmic explanation, e.g. "Find the smallest number in the list, and write that first,..." Then, they have to throw that thought process away, and rote learn some different and esoteric alternative - the A-l…

In my view a reason to teach sorting is simply that it provides a set of relatively simple cases for studying things like execution speed and storage requirements.

I completely agree; in my experience sorting algorithms were a precursor to learning asymptotic notation

Re: Learning to Code vs Learning Computer Science

#109
post #103

Learning to code is a prerequisite for learning computer science. You will not ever get interested in how to sort numbers in an efficient way until you've had to try to do it yourself because you needed it in some of your own projects. This practical need of yours will put everything else into a context and things will flow from there. For example, I think I "invented" selection sort when I was maybe 10-11 years old…

> Learning to code is a prerequisite for learning computer science.

I know what you mean, but there's a lot of people who have CS degrees and have /absolutely no idea/ how to code - when I was a Unix admin, this described most of my colleagues.

They knew sorting algorithms well enough to pass an exam, but parse a spreadsheet with some proposed file systems and make them? That was a big deal.

Re: Learning to Code vs Learning Computer Science

#110
post #70
post #35

I find sorting algorithms a bizarre and damaging introduction to computer science. If, as suggested, you ask an interested teenager how they sort a list of numbers on paper, they can usually give a reasonable algorithmic explanation, e.g. "Find the smallest number in the list, and write that first,..." Then, they have to throw that thought process away, and rote learn some different and esoteric alternative - the A-l…

Not to mention that using N different sorting algorithms as your introduction to computer science (as is often the case) has to be the most boring, un-motivating content to choose from. The only thing worse is "lets learn about recursion using the fibonacci sequence." Ugh.

+1000.

I 'learnt about recursion' from the fibonacci sequence four of five times.

Then one day I had to make a threaded message board. And I actually learnt about recursion.

Post reply on HN