
What we might have to teach before Computer Science - Max_Horstmann
http://maxhorstmann.net/blog/2015/10/17/fundamentals/
======
informatimago
The point of teaching some computer science and _programming_ to children, is
EXACTLY to teach them:

\- (very) critical thinking

\- (very) high attention to detail

\- using very precise language

\- navigating multiple levels of abstraction

\- applying logic and reasoning

And definitely NOT to make them professional programmers, or to teach them
some programming language or system useful for their professional life.

The thing is that learning programming is the most effective way to teach
those skills.

Teaching mathematics (and making them build theorem proof) fails to teach that
to most pupils, because they don't see the purpose of maths (it remains too
abstract to them). Teaching them any other matter is even worse for this same
reason. Also, one problem of maths teaching (and also for other matters), is
that the entity that detect errors and correct or help the pupil find a
correction, is the human teacher. This error detection and correction made by
a human is loaded with human relation interferences that are often nefarious
for the learning experience. ("I wasn't good at maths because the teacher
didn't like me", or "I didn't like the teacher", etc).

On the other hand, the computer is a neutral tool, and when the computer
system signals an error, and give some clues as to how to correct it, the
pupil can remain receptive, without any emotional involvement about it. The
error is not something that is wrong with the pupil, but really something that
is wrong in the program, external to the pupil, and that the pupil can
correct. And as importantly, as mentionned above, contrarily to maths, when
the program is done and correct, you obtain a concrete result, a running
program! Once you've led a pupil to the steps showing him how to write his
first program and have it run successfull, they are generally hooked and can't
stop making progress.

What's the point of using a precise orthography, (beside avoiding bad grades
given by this evil teacher)? But when the computer says invalid token or
undefined variable, the pont of using a precise orthography is immediately
clear, and the correction gives an immediate positive feedback in the form of
a running program.

What's the point of logic and reasoning? (All this mathy stuff, useless!)
Well, not so useless, when it allows you to build a program doing what you
want in all cases, or when it allows you to find the bugs in it.

What's the point of being attentive to details? Nowhere, in the life a
children, do details matters. But when he writes a program, all the details
will matter, producing results differing to what he wants to obtain. Here he
will learn to be attentive to details.

And where else do you have multiple level of abstraction available to you, for
study, creation and modification? Can you play with your cat, and deconstruct
it's biological system, enter a cell, and study its thermodynamics, enter the
molecule and play with its electron cloud? Can you change the charge of the
electron and see what changes two level up for the poor cat? NO WAY! Only when
writing programs, you can build such layers of abstractions and there you can
learn how to navigate them. There is ABSOLUTELY NO OTHER WAY to teach that to
pupils.

And finally critical thinking. While some critical thinking could be taught
without learning programming, it is not something that's usually taught early,
because it relies on logic and reasoning and knowledge of a lot of historical,
sociological, and philosophical data that is available only later. Some stuff
could be done with physics or chemistry EXPERIMENTS, but the problem is that
it seems that it is much more costly in time and resources to have pupils
perform enough physical or chemistry experiments than merely having them
program. So here, since programming will teach earlier logic and reasoning,
and attention to details, it will also, in the context of programming, but
also extending to the wider real world, if they write "useful" programs in
relation to the world (a game with a physical simulation, a social
application, or any program whose specifications are actually imposed by
"users"), they will have to learn at least some form of critical thinking. At
the very least, when they'll learn the other matters, they will already have
tools to extend their critical thinking to those other domains.

Really, the only thing you need to teach before Computer Science, is reading
writing calculating, some maths, some physics, and that's about it. Having to
write a program will then motivate them to learn the application domains.

If you want to write a realistic 3D game, you will learn some physics, if you
want to write a translation program, you will learn some linguistics and
statistics, etc. At this point what teaching programming has done, is
basically to introduce the Montessori method surreptitiously.

~~~
loup-vaillant
> _Really, the only thing you need to teach before Computer Science, is
> reading writing calculating, some maths, some physics, and that 's about
> it._

Maybe not even. Alan Kay & co, with Scratch, used to teach physics and Science
(with a big S) with the aid of programming. One of my favourite example was
the teaching of Galilean physics by filming the fall of a rock. The reported
result was that without the computer, almost no child could understand how it
worked. With the computer, almost all children were able to _derive a model_
by themselves —I suppose with some guidance.

------
alitovsky
__TL;DR: Want your kids to learn how to code and have a job __? Incentivize it
with some cool hardware, and let them run wild. Not every student learns the
same way, and not every single one will write perfect code every step of the
way. But they are smarter than you think, and you can learn logic and critical
thinking on your own. (Though a good teacher wouldn’t hurt)

 __TL;DR: Want better teachers?? __Raise their salaries and respect them
professionally, like some countries in southeast Asia and Japan do. Don’t let
parents tell teachers that the teacher should have given them a perfect A+,
and their corn-flake special child is perfect and isn’t understood by the
rest. Teacher, after all, are professionals trained in the art of education,
child psychology, etc. Reduce the amount of bureaucracy, or completely reboot
the public school system by some disruptive measure.

\-- My full arguments here I think your arguments are on the right track, and
I agree that (very) critical thinking should definitely be part of a school's
(heck, even federal) curriculum, but in practice, I think mayor's De Blasio's
program ([http://www1.nyc.gov/office-of-the-mayor/education-
vision-201...](http://www1.nyc.gov/office-of-the-mayor/education-
vision-2015-computer-science.page)) is a good policy to effect the kind of
change we want to see.

As someone who has gone through the public education system in the United
States, Argentina, and Israel, whose parents are (still) high school teachers,
whose wife was a public school teacher, I can tell you first-hand that most
school teachers get paid a really crappy salary; in New York City (see charts
[http://schools.nyc.gov/nr/rdonlyres/eddb658c-be7f-4314-85c0-...](http://schools.nyc.gov/nr/rdonlyres/eddb658c-be7f-4314-85c0-03f5a00b8a0b/0/salary.pdf)
and [http://www.uft.org/files/attachments/secure/teacher-
schedule...](http://www.uft.org/files/attachments/secure/teacher-
schedule-2009-2018.pdf) ), the starting salary is $45,000 annual, and the
current ABSOLUTE MAXIMUM (22 years of experience with a bachelors and a
masters degree) is $100,049. There are some ridiculous things about this
chart, including the fact that it's set UNTIL freakin' 2018.

Teacher often barely get a 1% salary raise (on a good year), and, to make
things worse, are the only professionals in the US where the government tells
them exactly what they should teach each day, every day, only so kids could
pass some standardized national test (see: the No Child Left Behind act that
Bush gave us).

Don't forget that these are just salaries, in New York city, which are
unusually high for the rest of the United States. Look up Texas -- the
starting salary is $27,540
([http://tea.texas.gov/Texas_Educators/Salary_and_Service_Reco...](http://tea.texas.gov/Texas_Educators/Salary_and_Service_Record/Minimum_Salary_Schedule/2014-2015_Minimum_Salary_Schedule/)),
which is hovering near the poverty line in the United States. And yes, some
schools actually give teachers these salaries (usually in more rural areas).
Compare that to the average threshold of
poverty([https://www.census.gov/hhes/www/poverty/about/overview/measu...](https://www.census.gov/hhes/www/poverty/about/overview/measure.html))
in the US, and you will be embarrased to live in this country, and awed.

That means that, those really smart people you want to be teaching your future
children are going to, by an large, opt-out and become lawyers, doctors, or,
case-in-point software developers, but not teachers.

I have seen this at every step of my education, where my teachers often told
me that I had a lot of potential, but they often failed to really challenge
and in the math and logic department. (e.g.: If it hadn't been for my middle-
school physics class in Argentina (Jesuit schools for the win), I would have
failed college physics, because my public US high school teacher couldn't
really teach it.)

This is why private and charter schools exist. The US public school system is
cyclical with its policy (more testing, 10 years pass, do less testing), slow
to move, inefficient, beaurocratic, and by and large broken. Even Zuckerberg
tried to donate some money recently, and I believe it didn't really work out
very well in that regard.

But hey, some of us made it out of there and did okay.

On the flipside: English teachers (in my experience) generally do a good job
at teaching critical thinking and writing because there is a large number of
people with degrees in the language arts, so there's plenty of healthy
competition there. Not so many CS graduates go straight into teaching.

 __\-- Arie Litovsky, Co Founder of Teaching Table
[@arie_speaks]([https://twitter.com/arie_speaks)**](https://twitter.com/arie_speaks\)**)

