Live data from Hacker News

Learning to Code vs Learning Computer Science

shkspr.mobi

111–116 of 116 posts

Re: Learning to Code vs Learning Computer Science

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

Decision 1 brings back memories ... As I recall, that was the 'easy' module that everyone would do well at (precisely because it was rote-learning basic algorithms, possibly without even the use of the word 'algorithm'), to compensate for the world of pain that was Pure 3.

10 years later, however, most of it spent doing literature degrees, I remember a lot more integral calculus than box-filling.

Re: Learning to Code vs Learning Computer Science

#112

As a musician and a scientist, I wonder if music and art are better analogies than science? And what if we had the luxury to teach some things in school just because they're interesting and fun? Isn't that why most of us learned programming? When kids learn music, they typically start out by playing an instrument, or singing. Teachers are comfortable letting theory be taught later, if ever. Even the dilemma of what p…

> As a musician and a scientist, I wonder if music and art are better analogies than science? And what if we had the luxury to teach some things in school just because they're interesting and fun? Isn't that why most of us learned programming?

I agree that Computer Science is not a science. It does contain elements of science, but on the whole it is an inter-disciplinary subject.

Rather than compare programming to music or art, I would compare it to craft. The difference being that programming is mostly done with a practical end-use in mind. It's more like being a stone mason or a goldsmith.

Re: Learning to Code vs Learning Computer Science

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

> Computer science is a branch of applied mathematics; not a physical science

I would disagree. Whilst CS did originally branch from mathematics, nowadays it is an interdisciplinary subject and to call it a branch of applied maths would exclude huge areas of CS such as HCI.

Re: Learning to Code vs Learning Computer Science

#114
I should really write a blog article about this, but let me make a few meta-points on the subject of CS:

1. I don't think it should be called CS. Not everything in CS is a science. It could be called "Computing" instead.

2. CS is not a branch of mathematics. HCI is not mathematics, for example, and HCI is an important part of CS.

3. CS is as a unique and inter-disciplinary subject.

4. Programming is not a science, or an art, or a branch of mathematics. Most of the time. The best description I have come across is that programming is a craft. CS involves and supports programming. You can program without a CS degree, but knowing CS will make you a better programmer than you would have been without it.

5. The term "Software engineering" is very unfortunate, just like the term CS. I'd prefer "software development", and as indicated above I consider it not to be like traditional engineering (Safety-critical systems etc. excluded). Software is not like bridge building, as many many people have previously pointed out.

6. Making analogies with other academic subjects is not particularly helpful, as CS is quite unique. Physics, Chemistry and Biology mostly study natural systems. In CS we are usually studying systems we have created ourselves.

I think it's all very frustrating, as our young discipline continues to seek an identity. There's a false dichotomy between CS being science or engineering; we need to get past that.

Re: Learning to Code vs Learning Computer Science

#115

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…

Fundamentally I agree, but I question why we do not teach computer science/coding the same way we teach music?

There are many reasons. One is that the fundamentals of classical music-- the notation, the instruments, the techniques-- have not changed substantially for hundreds of years. Compare the evolution of the keyboard from 1700-present to the evolution of computers during the same timeframe.

Another is that while programming is an activity, it is not a performance. Musical training is designed to impart specific technical skills for use in performance of music. Programming is more akin to composition.

Re: Learning to Code vs Learning Computer Science

#116
post #28

Earlier quoted context omitted.

(In that spirit: "there their!") Medical software is now clawing its way out of lots of bad software written by people with good domain knowledge and too little programming and CS chops. Really, the point should be to make sure the larger culture knows what it doesn't know. Imagine if many financial institutions didn't fully understand their debt instruments...that would be bad, right? (2008) Well, many companies don…

make sure the larger culture knows what it doesn't know A million times this. I am not sure if it is possible though. I fear that any programming training as part of basic education will only expand the number of people who feel entitled to code, because they've been exposed to it, and then commence to build absolute shit. That is already a big enough problem, with large-scale failures like the Target breaches or hea…

> Target breaches

That was plain stupidity and not a direct result of an exploit in software that was written. The malware used the default passwords on the embedded XP Payment software to gain root access and scrape the database.

> healthcare.gov

Although I tend to agree, I think this points more a flaw at the Government contract bid structure versus poorly developed code.

Post reply on HN