
CS Unplugged – Computer Science without a computer - Schiphol
https://csunplugged.org/en/
======
elldoubleyew
I remember one of the first realizations I made as an undergrad was that CS !=
code. I think this book does a good job of removing the two from the
beginning, and it would have been useful for me to have instruction like this
when I started learning.

Later on I realized that most jobs that ask for a CS degree don't actually
have you doing any computer science. More often you are glueing together tools
or writing a bunch of boring business logic for some specific application at
best. At worst you are maintaining an old monolith trying to figure out
someones logic from 15 years ago.

Having a CS background in most software jobs is useful in the same way having
a chemistry background is useful to someone working as a nurse. Sure there
will be situations where that knowledge might help you make a connection more
quickly, but you're sure as hell not a chemist.

~~~
AnimalMuppet
CS != software engineering, too.

Like your chemistry example. There's chemistry, and then there's chemical
engineering. Chemists worry about the properties of atoms and molecules, and
reactions that move from one state to another, and about the energy
differences in reactions. Chemical engineers worry about how to efficiently
make the stuff in multi-ton quantities without blowing up the city. It's
related, but it's really a different set of concerns.

In the same way, CS worries about the efficiency of algorithms, and about what
things particular language features make easier or harder to express. Software
engineering worries about how to efficiently construct and maintain larger
programs that adequately do what is needed. [1][2]

The thing is, almost everyone who graduates with a CS degree is going to be
employed as a software engineer, not as a computer scientist. I fear that
their education is mostly preparing them for the wrong thing.

\-----

[1] Or perhaps, "construct less inefficiently" \- there's inefficiency no
matter how well you do it, but you have to control the amount of that, or it
will destroy you.

[2] Note that I said that they "adequately do what is needed", rather than
bug-free. Larger programs are never bug free.[3]

[3] Well, almost never. You can get there with formal verification, if you
have a bug-free specification, and if the formal verification covers every
relevant category of bug. But that's _really_ difficult to do, and we're back
at the "less inefficiently" issue.

~~~
peter_d_sherman
Absolutely correct, CS != Software Engineering.

CS != Code, as a previous poster suggested.

CS != Business aspects of software development.

CS != Guarantee that you'll get a job you'll like as a programmer, or even a
job as a programmer.

CS != Guarantee that you will be able to fix systemic problems in systems,
understanding, culture or process in corporations or other organizations, by
fixing code.

CS != Guarantee that you'll launch a successful website, or start a successful
startup.

CS != Guarantee that you'll be able to raise venture capital, or be able to
sell enough to gain your first customers to become "ramen profitable".

CS != Guarantee of success, or that you'll get what you want in life...

I am 99.44% self-taught -- my opinion is that CS degrees are overvalued and
overpriced, but that being said, they're not wrong for everybody...

~~~
DeathArrow
On the contrary. I feel that having a formal CS education (VS and MsC) in CS,
made me a much better software engineer and a better coder.

Most of the stuff I use (languages, tools, frameworks) I've learned myself.
But CS courses have taught me a lot, I have a deeper understanding of how
things work and I can solve hard problems, I know instinctively where to look
to solve an issue, and what I need to research to make things work as they
should.

Based on my experience, employers tend to prefer people with CS education over
people without, if that is the only difference.

Also, talking with my peers, I have the sense that people with formal CS
education managed to negotiate better salaries.

Also, I my country, programmers with degrees in CS have lower income taxes.

For me it payed big time to spend that time learning, even if in the first two
years when the courses seemed boring I did have the opinion that I was wasting
time.

Some of my colleagues dropped out to work in the industry, some were working
and studying in parallel. Those who dropped out have a harder time now. They
have a harder time finding a good workplace and they have lower wages.

Would you agree to undergo surgery by a self taught physician or you would
trust more one with formal education?

~~~
peter_d_sherman
Did I not say "they're not wrong for everybody", in what I wrote?

?

Look, more power to you if you have a CS degree.

Sure, they can open doors, I agree. If I were an employer, and I had only two
job applicants to choose from, and the choice was between someone with a CS
degree and without one, and there were no other differences, nothing different
in the way that they thought, no difference in what books they read, no
difference in their general level of intellectual achievement, no difference
in their goals and aspirations (perhaps one strongly desires to learn
technical things without having a degree, and perhaps one does not...).

Well, without any of those other differences, if one has a degree and the
other doesn't, then yes, I'd choose the one that has the degree over the one
that doesn't.

But that's assuming that I'm a standard employer... and that I don't know the
first thing about CS myself...

If I'm a smart employer, I might test both individuals' ability to cognitively
reason about problems.

For example, I might have both candidates add the numbers from 1 to 100, and
see what they do.

This was a challenge that was historically put forth to Carl Friedrich Gauss
when he was a student (I should point out, he didn't know the first thing
about computers or programming, as they didn't have computers, programming, or
CS degrees back then).

All of the other children attempted to add the numbers from 1 to 100 one at a
time, for example, 1+2 (3), 3+3 (6), 6+4 (10), etc.

This took them a very long time.

You see, the teacher had expected that this would take a long time for most
students, that it would keep them occupied. That was the teacher's goal.

The teacher was very surprised when after a few minutes when Carl Friedrich
Gauss' hand shot up.

He had solved it!

He had solved it _not_ by adding all of the numbers one at a time, but solved
it by realizing that if you added the first term and the last term (1+100,
2+99, etc.), it resulted in 101 every time, now all you needed to do was
multiply 101 by half of 100, which is 50.

Which is much, much faster!

We call that an algorithm.

A CS degree is < 10% code, and > 90% algorithms.

You see, the teacher could have used that simple test to see that Carl
Friedrich Gauss -- was going to go places in life.

He was going to go to great places, and do great things... and he did!

Even without a CS degree... which they didn't have back then...

If I gave this test, or others like it, other tests involving mathematical /
logical reasoning to people with CS degrees and without, and if the people
without a CS degree answered these questions correctly, _reasoned correctly_ ,
it would show that they have the talent, they have the capacity for computer
science, with a CS degree -- or without...

"Would you agree to undergo surgery by a self taught physician or you would
trust more one with formal education?"

It will always be the person that persuades me that their knowledge/experience
relative to the goal I'm seeking is the highest among all candidates. If
that's someone university educated, then that's someone university educated.
But show me a faster/better way to do things, and prove to me that you're
knowledgeable and it works, and I'm all in...

------
dang
The submitted URL was
[https://classic.csunplugged.org/books/](https://classic.csunplugged.org/books/),
but that doesn't contain much information, so we switched it to the main page.

The book is here: [https://classic.csunplugged.org/wp-
content/uploads/2015/03/C...](https://classic.csunplugged.org/wp-
content/uploads/2015/03/CSUnplugged_OS_2015_v3.1.pdf)

~~~
marktangotango
Harels Algorithmics is a wonderful book in this same vein:

[https://www.goodreads.com/book/show/2378136.Algorithmics](https://www.goodreads.com/book/show/2378136.Algorithmics)

------
Koshkin
_Computer Science is no more about computers than astronomy is about
telescopes._

\- A quote (mis)attributed to E.W.Dijkstra.

------
airstrike
I'm just a hobbyist programmer, and the only class I ever actually took in CS
in university actually taught Scheme/Lisp. Homework and exams were all pencil-
on-paper, which I thought was very strange, but at the end of the semester
made me feel very comfortable with the quality of the code I was writing

~~~
BossingAround
> Homework and exams were all pencil-on-paper, which I thought was very
> strange

Sounds like what I've heard of CS education in a lot of developing countries.
When students can't commonly afford computers, computer science courses turn
to pen and paper.

~~~
kevin_thibedeau
That was the norm before everyone had WiFi and wired lecture halls.

------
toomanybeersies
Tim Bell, one of the creators of CS Unplugged, was one of the biggest
influences on me discovering my love of computer science and learning how to
program in high school. I wouldn't be where I am and doing what I do if it
wasn't for him.

I wasn't originally planning on becoming a software developer as a career, I
started studying Mechanical Engineering. However, I failed first year (due to
undiagnosed ADHD and a lack of interest). Luckily Tim was a lecturer at my
university (University of Canterbury), and let me jump straight into second
year computer science.

He was definitely one of the best lecturers I had, alongside Richard Lobb.
It's not often that you meet an academic who's more interested in teaching
than research, but they were, and it showed.

Thanks Tim.

------
odomojuli
“A man provided with paper, pencil, and rubber, and subject to strict
discipline, is in effect a universal machine.” - Alan Turing

------
inportb
> The easy and fun activities in this book, designed for studentren of all
> ages, introduce you to some of the building blocks of how computers work —
> without using a computer at all!

> The studentren are actively involved in communication, problem solving,
> creativity, and thinking skills in a meaningful context.

It seems as if they wrote "children" and then replaced s/child/student/g in
some sections :)

------
petschge
As the old quip goes: A real computer scientist would not work with anything
less portable than a #2 pencil.

And at the risk of explaining a joke that applies to both the weight and the
applicability of the results to ALL computers.

------
DeathArrow
Growing up in a former eastern block country, this bring memories.

I went to high school in '90s and was assign in an intensive CS class. At the
beginning, most of learning were done using pen and paper, writing pseudocode
and also Pascal and C. Me and most of my peers were poor enough to not have a
computer home, and the school only had ZX Spectrum clones running Basic.
However, the school got some used 386 and 486 next years, so we got to use
"the real deal". In my last year, my parents also got enough money to buy me
an used 486 SLC - which got intense use since I also had Borland C++ compiler
and a C++ for dummies book. I did my final project for CS in Borland C++ on
that PC. It was a DOS based MS Paint clone.

Before that, I owned a ZX Spectrum clone when I was in secondary school, and
while I did some programming, most of it was written on paper first and typed
on Spectrum later. I compiled and debugged "in the brain" because I couldn't
save programs and if a program halted, I had to reboot the thing wasting all I
have written. A guy my father knew hacked a cassette player to help me load
programs and games, but sadly it didn't work to save anything.

Even now, I sometimes like to draw diagrams, sketch code flow and write bits
of pseudocode on paper before I start coding something, if I feel I need to
clarify the idea.

------
gorgoiler
Yes! Love it!

It’s fun bringing the computers in to play as well, because I pitch to all my
classes that we are in the age of information and the primary usefulness of
algorithms is productivity.

A whimsical classroom example: programming a robot that can type for you, with
an instruction set that consists of capital letters. _Q_ returns to that key.
_LRDU_ are left a key, right, down, and up a key, and _P_ means “press the key
you are over”.

Step one: create robot code to type HELLO. Answer: QRRRRRDPLLLUPRRRRRRDPPUP.

Step two: create code to turn a robot code into a string: similate the robot
essentially.

...which is about it for the coding, but then we make a robot print
instructions for a second robot to print instructions for a third robot to
print HELLO. We end up with something super weird looking but tractable
because all the components were built from the ground up.

Computation is that wonderful meeting place between theory and leverage — the
kind of leverage you get when you can do “2+2=4” 3 billion times a second.

------
andrelgomes
"I'd like to welcome you to this course on Computer Science. Actually thats a
terrible way to start. Computer science is a terrible name for this business.
First of all, its not a science. It might be engineering or it might be art.
Well actually see that computer so-called science actually has a lot in common
with magic. We will see that in this course. So its not a science. Its also
not really very much about computers. And its not about computers in the same
sense that physics is not really about particle accelerators. And biology is
not really about microscopes and petri dishes. And its not about computers in
the same sense that geometry is not really about using a surveying
instruments."

------
dang
A thread from 2019:
[https://news.ycombinator.com/item?id=20314713](https://news.ycombinator.com/item?id=20314713)

2018:
[https://news.ycombinator.com/item?id=17661707](https://news.ycombinator.com/item?id=17661707)

2015:
[https://news.ycombinator.com/item?id=10171469](https://news.ycombinator.com/item?id=10171469)

2008 (not very good, and look at that typo):
[https://news.ycombinator.com/item?id=158948](https://news.ycombinator.com/item?id=158948)

------
Schiphol
This loos like a nice thing to try and do with my kids while we are confined.
Does anybody have any experience with it? Do you know of other comparable (or
better) resources to introduce kids to CS?

~~~
teach
I spent 20 years as a public school teacher and am still active in the
Advanced Placement Computer Science teacher community.

This is good stuff, and very well-regarded by my colleagues.

Depending on the age of your kids,
[https://automatetheboringstuff.com/](https://automatetheboringstuff.com/) or
another of Al's books are quite good to start with and free to read.

For younger kids, Code.org's "Hour of Code" stuff uses Scratch, which is a
nice block-based visual programming language that's still a real enough
language under the hood; I had co-workers who used Scratch to have their AP CS
students sorting lists of numbers and other "real" algorithmic tasks.

And I'd be remiss if I didn't mention the book I wrote, which is linked in my
bio.

~~~
Schiphol
Thanks a lot :) I'll be sure to check your book out.

------
technothrasher
Reminds me of my time in school in the early '90s. I was working for the
university's Unix Admin group and as the only student in the group, I got sent
on all the "broken workstation" house calls. The professors who almost
uniformly had no idea how to use their computers were the ones in the computer
science department.

They weren't stupid people, I had CS classes with many of them and they were
brilliant. They just didn't care one bit about _using_ computers. They were
100% into theory.

~~~
toolslive
There is this anecdote about C.A.R. Hoare: He never implemented quicksort. He
also was never logged into the systems at the university where he resided.

[They also wanted to name a building after him (The Hoare-house) but for an
unknown reason changed opinion. ;) But that's another story]

------
yters
If we took computers away from software developers, maybe we'd get much more
well thought out solutions. Probably much simpler, too, if they have to write
out everything by hand :)

~~~
DeathArrow
It seems to me most businesses don't care about quality but about productivity
and the time to market.

For most LOB apps the only thing that matters is using framework X, applying
some flavor of the day principles like SOLID and DDD, using some software
patterns, gluing different libraries with some code, copy-pasting from Stack
Overflow and writing tests. A productive, well oiled machine which churns out
software.

------
non-entity
As someone whose been programming for years, but weak on CS, would this have
any advantages over following some other CS program thats closer to a
traditional program?

~~~
einpoklum
It's mostly like that in some/many traditional CS programs anyway. A good
number of my Professors really didn't know their way around a computer (that
wasn't made up of an infinite paper tape and a read/write head...)

------
k_sze
There is also a blog called "Techless Teaching":

[https://medium.com/young-
coder/techlessteaching/home](https://medium.com/young-
coder/techlessteaching/home)

------
kamfc
irrelevant but i remember a week ago someone on here said that books nowadays
are written with the assumption that you would be in front of a computer to
try the examples out. but decades ago, you read books in the evening and then
come morning, you get to try out the code at the lab. authors today crammed so
much in book than necessary.

i wonder if cs unplugged is better than godot gaming for teaching 8-10 year
olds how to think and code.

------
ChrisMarshallNY
It's pretty cool. I started with Machine Language.

The "text editor" for Machine Language (the _original_ "ML") was an
engineering pad.

------
goodcjw2
I dunno, sounds like Google interview.

------
k__
Isn't that the reason why so many students are confused?

All of my basic CS courses we're on a whiteboard

------
postit
Back in my time we didn’t have computers.

