
Teaching CS in the schools - luu
http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2018-09.html#e2018-09-30T10_31_14.htm
======
badlogic
I'm currently teaching basic computing with a focus on introductionary
programming to 14-18 year olds. The myth that kids that age are all digital
natives and hence much more adept at learning CS amd programming is wrong. A
tablet in every class room is great to augment history, physics etc. lessons.
But it does nothing to improve their understanding of CS and programming.

I've cobbled together a curriculum, starting with CS unplugged activities to
explain computational thinking. I found this to be highly effective!
[https://teachinglondoncomputing.org](https://teachinglondoncomputing.org)
which is a fantastic resource to teach basic CS concepts. The locked-in
activity in particular is highly effective in making things click. You get
students to tackle a real world problem. You can introduce linear and binary
search (or rather, have them come up with it themselves). And finally, you can
teach them complexity analysis with a goal: how to write the book the fastest
way.

Before any programming can happen, getting computational thinking into their
heads is essential. Moving from that to code brings its own challenges. I
found Scratch and similar block based environments to be a bit of a deterrent
with this age bracket. The kids know it's not "the real deal".

However, there aren't any non-overwhelming "real" coding platforms out there.
Python comes very close, but is far from simple (pip, IDE, maybe mypy, because
it turns out types are helpful when learning to program).

So, while I think the CS side is pretty well covered, there is amlack of
beginner friendly programming environments that don't overwhelm the learner,
or treat them like they are "stupid". This could be one thing where the
community could make a difference. I'm building a statically typed structured
PL for that purpose at the moment.

~~~
atoav
I think visual feedback is important, I teached multiple people programming
with [https://processing.org/](https://processing.org/)

Processing is more like a framework and comes in python and java flavour
(although I think the language doesn't really matter as long as you grasp how
loops work and what can be done with it).

Something like this:

    
    
        def setup():
            size(400, 400)
            stroke(255)
          
        def draw():
            line(150, 25, mouseX, mouseY)
         
        def mousePressed():
            background(192, 64, 0)
    

The concepts learned by just playing around with this are valuable in any
language.

~~~
wefarrell
This is something that earlier versions of flash did very well. You could
start by creating graphics, then turn them into frames in an animation. In
order to make those frames dynamic you had to learn some programming, and
you'd get instant feedback.

It wasn't just some toy, you could create production applications this way.
Unfortunately the low bar resulted in a lot of low quality applications (in
terms of ux and engineering) which led to it's downfall.

------
reacweb

      Everyone should be able to create digital media, not just consume it.
      Everyone should be able to understand their tools, not just use them.
      People should know that technology is not magic.

------
Double_a_92
> The myth that kids that age are all digital natives and hence much more
> adept at learning CS amd programming is wrong.

This is unfortunately very true. It's kinda sad seing my nephews and nieces
struggling when using a desktop computer. I guess scrolling down on instagram
and watching netflix doesn't teach you anything about computers.

~~~
chrisseaton
> struggling when using a desktop computer

They're not native with the desktop computer metaphor, but so what? Why does
that matter? Why is desktop computing the true computing that identifies
whether you're native or not?

And of course, none of this has anything to do with computer science, does it?
You can do good computer science with a desktop, a tablet, or a pen and paper.

~~~
maxxxxx
"You can do good computer science with a desktop, a tablet, or a pen and
paper. "

What development environments run well on a tablet?

~~~
dagw
I haven't tried it, but people say nice things about Swift Playground. If you
add a keyboard and an internet connection you can also use any of the web
based IDEs and programming notebooks out there.

~~~
maxxxxx
Why would you do this over a setup with real keyboards and a big screen? I
couldn't imagine myself staring a tablet the whole day.

~~~
chrisseaton
If you attach a Bluetooth keyboard and use a larger tablet what is the
effective difference between that and a small laptop?

~~~
gowld
Nothing, but that's disingenuous, because kids aren't hanging out with
keyboards and >11inch screens.

------
cntlzw
10 PRINT "Hello, World" 20 GOTO 10

Easy to understand and you can see the result right away. You don't complex
languages or "playgrounds" to teach the basics of programming.

~~~
java-man
but... we have javascript! [0]

[0] [https://hackernoon.com/js-wtf-with-
number-5cd73514befb](https://hackernoon.com/js-wtf-with-number-5cd73514befb)

------
bluGill
Why?

Obviously we need some students to become programmers, and we should start
them early, but do we need all students? The student who wants to be a doctor
should learn to type and then move on to more science/biology classes. The
student who isn't sure what they want to do with their life (this is most,
even though they all have done a "what I want to be when I grow up paper")
needs to good general background. going deep into math, science, and
reading/writing (ie the 3 Rs) will get them much father than specialized
education in computers - they can figure out what they need to know a lot
better than someone with a deep knowledge of CS can figure out something else.

Computers are tools. They are useful when you know some other domain well and
then use the computer to take care of some work for you.

~~~
gowld
Why teach Chemistry, Literature, Music, Physics, or History?

Why is "science" one of "the 3Rs", but computer science is not?

~~~
JoeAltmaier
Honestly, they stay the same long enough to teach something lasting. Teach
java? Wait, no! Now its JavaScript. No! Clojure or Haskell or whatnot.

------
jonnydubowsky
Dave Liepman's Maria Project is a really accessible way to teach students how
to use Clojure with no previous experience. Getting the tooling out of the
picture and jumpstarting with music and art examples goes a long way.

[https://youtu.be/CUBHrS4ZzO4](https://youtu.be/CUBHrS4ZzO4)
[https://www.maria.cloud](https://www.maria.cloud)

------
nimos
I really think the best thing for teaching kids would be giving them a fully
built 2D game and teach them how to mod it, slowly working into how the core
engine works. Not that I have any real evidence to support this. But my casual
involvement in Half-Life/WC3 modding scenes during my teens says this is the
way to go.

------
jjuel
Always love seeing stuff from my alma mater on the front page of HN!

