Hacker News new | ask | show | jobs
by DawkinsGawd 3798 days ago
Disappointed. I thought the article was going to focus on why a computer isn't even necessary for a computer science degree. In other words - how a computer science degree is mostly just a degree in mathematics, and a lot of the coding that you do (algorithm work, obviously not a software engineering or programming intensive course) should be done with pencil.

I have been seeing a lot of articles claiming that a barrier to CS curriculum in high school is that they don't have the technological capabilities to support such curriculum. Nonsense. If I ran an AP computer science class we would never touch a computer. Pencil and paper only.

10 comments

Computer science is not really about computers -- and it's not about computers in the same sense that physics is not really about particle accelerators, and biology is not about microscopes and Petri dishes...and geometry isn't really about using surveying instruments. Now the reason that we think computer science is about computers is pretty much the same reason that the Egyptians thought geometry was about surveying instruments: when some field is just getting started and you don't really understand it very well, it's very easy to confuse the essence of what you're doing with the tools that you use."

-- Hal Abelson (1986)

> Computer science is not really about computers

He also added (prepended, to be precise) that it's not a science. :)

well the answer to that depends on whether in one's language "mathematics" is a "science" -- as I have (to no small surprise) discovered, in English it's quite often not, and there is no really agreed-upon definition of what science is...
I took AP Computer Science my senior year in high school (would have been... 2010? So 6 years ago) and we didn't touch computers until about halfway through the class. Before then, it was all theory and logic and big O and the like mostly in pseudocode. Then, we jumped into writing Java to match the theory we had learned. It worked wonderfully, and I found my first year in college was pretty much just re-learning what I learned that year in high school but much, much, much, much (much) slower because they were teaching Java WITH the theory instead of separate to it (which had a side effect of students being locked-in to Java in later years and not able to reason about theory in other languages)

Also, the AP test that we had to take after all was said and done was required to be done in pencil. So it was good to be used to writing pseudocode and actual code in pencil.

In college, I wouldn't have even considered typing my notes during class. I'd say about half the students in my classes used pencils, the other half typed (but were always actually checking facebook, looking at reddit, etc.). After a while, I stopped taking notes altogether when I figured out they really don't help me in any way and I never go back to them (anything I could forget is a google search and a stack overflow answer away).

>Nonsense. If I ran an AP computer science class we would never touch a computer. Pencil and paper only.

You would want to be the Dolores Umbridge of high school computer science?

> If I ran an AP computer science class we would never touch a computer. Pencil and paper only.

That would be a disservice to the students. Being able to code is probably the best predictor for students successfully completing a CS degree.

You can write code with pencil and paper
Yes but it's a little harder to prove that the algorithm you've described works.
But almost nobody proves that programs they write on computers work either. When was the last time you proved a program correct?
They didn't mean "prove" as in mathematically "prove" than an algorithm works, they meant it in mechanical terms (does it compile, does it run, does it past test inputs, etc.).
That is not a proof by the CS standard though -- well, unless the job is defined as "write a program that processes these N test inputs known in advance", in which case a program that prints the expected hardcoded output in response to each of the expected inputs and otherwise returns an error would be a good implementation :)

I personally avoid using a word "proof" to mean anything other than a mathematical proof. It can be done with code, for sure, but as grandparent said, usually isn't.

You don't prove that it's "correct," as there is no such thing as a "correct" program. You prove that it works.
I think you may be assuming that the purpose of a CS degree is to teach people how to write programs that work, while it's really not :)

And there is such a thing as a correct implementation of an algorithm. Running it does not exactly prove things either, and it might not necessarily work on actual hardware, but it does show that the person understands at least part of the material.

Growing up I didn't have a computer at home. I would write my solutions in a paper, evaluate it mentally/with a pencil a few times, take it to my school or a friend's place and run it; only to find there is an issue. Rinse and repeat. I did this quite a few times and got really good at it. However, none of the languages are intuitive when you are learning it for the first time. You could easily be stuck at the most trivial of things about syntax, scoping, ..etc. Mistakes in a situation like mine are expensive - it usually takes a few days before I could verify again if my solution worked. It's really easy to lose your patience and move on.
> Nonsense. If I ran an AP computer science class we would never touch a computer.

That would be as about as engaging as a biology class without microscopes or a chemistry class without labs.

Never?

That sounds like a sure way to make sure any students who took that class would be very disengaged.

Depends on what you are doing. If you're trying to teach Van Emde Boas trees, then yeah without coding no one will like to work on that, but there are so many insightful topics.

One example would be modal logic. There is something inherently attractive about reasoning about time. Once you put it into context, it is very difficult to not find it inspiring.

I did my first programming with pencil and paper, and I'm still engaged 30+ years later
We're talking about high school here though. Seems to me it would be like running a chemistry class without doing any lab work.
I agree. One of the most magic moments when you start programming is when you write your first program that does a truly significant amount of work. You run it, you're still kind of on human time scale and think it's going to take a few seconds, but it finishes instantly. That was the moment that really hooked me into programming.
Not trying to be argumentative or anything, but that's how chemistry is taught in 3rd world countries. Labs are a luxury :)
Eh fair, although RPi Zeros are pretty cheap these days :).
And rural America :)
My first formal CS class was in high school (last two years), and my teacher then personally advised parents not to get a computer just for that class. Looking back I think that was one of the best things a teacher has done for me.
Along with all the other reasons why this is terrible, I would despise this because I just can't write as fast as I type. Having to use paper/pencil for the SAT was troublesome enough.
At least for me, as I explained in the article, this was a primary benefit of writing out notes. Having less time forced me to summarize and synthesize, rather than transcribe.
Thanks for the downvote - I was referring to actual coding. And with regard to note taking, I never had the problem of transcribing instead of summarizing because I was typing.
I didn't downvote you.
why, so they can be completely unemployable?

figuring out how to get your shit to work and debugging it on the computer you're using is the actual hard part of CS.