
An effort to bring computer science to all US high schools - rbanffy
https://blog.aboutamazon.com/community/mapping-opportunity
======
_hardwaregeek
I'd be fine with this if schools taught computer science like art. Essentially
a place to build and make cool shit. Unfortunately, I could see it becoming
more like how schools teach math, a bunch of rote steps that only a fraction
of the class likes because they're good at it. Don't get me wrong, I like
math, but most schools are unable to understand the creative, problem solving
aspect of mathematics.

I was fortunate enough to go to a high school that had an amazing computer
science curriculum (8 semesters worth of classes). One really intelligent
decision the department made was to not just mimic a college curriculum. After
all, why teach something kids will learn a few years later? Instead, they
mixed in some offbeat courses. They had a software development course that
taught Python and basic web dev. They had a graphics course where you built a
graphics engine. They even had an intro course with Racket. It's unlikely
other schools will be able to replicate this exactly, but I like the concept
of fun over "usefulness".

~~~
applecrazy
Sounds like an amazing high school computer science experience. Which state
was this?

My high school has exactly one CS course (AP Computer Science) that teaches
more mathematics than computer science. This is something I would love if it
existed at my school.

I've been currently self-teaching CS for the portions that seem relevant and
interesting, such as ML/DL, algorithms, and data structures.

~~~
_hardwaregeek
New York. It's not a hard school to guess. In fact, the teacher who started
the entire program is on Reddit (maybe HN too). I'm extremely fortunate to
have attended it.

~~~
asnyder
Brooklyn Tech most likely :). Mr. Turner?

~~~
_hardwaregeek
Haha you're very close. Not Tech though ;D

~~~
YuriNiyazov
Another one for the Z team?

------
coreyp_1
Should we be calling this "computer science", or just "computer programming"?
After all, those two things, while related, are not synonymous. And I'm not
being pedantic, I'm really wanting some clarification!

A true computer science education involves a study in multiple areas, from
discrete math, to computer architecture, to operating systems, to algorithms,
to finally, both as the pinnacle and the essence of the subject, theory of
computing.

Any university would be expected to have these classes as part of their core
curriculum for a CS degree, otherwise people begin questioning the rigor of
the program.

Obviously, if we are talking about HS rather than University, the subjects are
scaled back for necessity. But the content still needs to be there. So are
they talking multiple classes, or a long series of classes that will
eventually address all of the aforementioned areas?

I'm all for everyone learning Computer Science. I just want to make sure that
we are talking about the same thing!

~~~
Jtsummers
> A true computer science education involves a study in multiple areas, from
> discrete math, to computer architecture, to operating systems, to
> algorithms, to finally, both as the pinnacle and the essence of the subject,
> theory of computing.

Similar arguments could be made for physics, chemistry, and biology. But we
still say that we teach those subjects in high school, even though the depth
and breadth of material is hardly what you'd expect from a university or
college. The only broad and deep courses in K-12 education (US-centric
descriptor) are math, social science (history, geography), language arts
(English-language literature, writing). And none of those really go that deep,
or that broad.

We can identify the initial elements of CS that everyone takes before going
deeper: Introduction to algorithms and data structures, and some
logic/discrete math courses.

Logic is technically covered (or used to be) in geometry courses (in the US).
Discrete math presently has no place, so this could be improved. The
introduction to algorithms and data structures part is barely separated from
programming 101. The difference is that a programming language course (Python
101) is going to go too deep into the weeds of _Python_ and not cover topics
that are portable across more languages. An algorithms course should be more
portable (at least across a class of languages, like across imperative
languages or OO languages).

~~~
antt
Having a 'computer science' class that teaches programming makes about as much
sense as a physics class on rulers and stop watches, a chemistry class on test
tubes or a biology class on petri dishes.

High school classes in the other sciences manage to convey some of the breadth
of the subject while laying the absolute foundations for further study.

The only non-incidental part of computer science are the theory of
computation, the hierarchy of languages and translators/compilers between
various languages. Not one pre-university program teaches these, and in recent
years many university courses don't teach these either.

~~~
Jtsummers
Computer science consists of a large number of things, theory of computation
is part of it. But so are algorithms and data structures.

Practically speaking, the latter (algorithms and data structures) are the most
accessible, and allow you to explore the former. Even if we think people
should be taught how to express these concepts with a pseudocode, they're
still learning to program (in a vague sense). But they can't explore the ideas
of CS, outside of a formal approach if they don't program (pseudocode or
actual code).

And the formal approach is not understandable (or as easily understandable)
without a practical experience with the topic. Do you honestly believe that we
should teach students category theory and abstract algebra before we teach
them high school algebra? Or perhaps high school algebra before arithmetic? If
they have no number sense, they won't be very effective in high school
algebra. If they have no sense of the structure of algebra, they'll have a
hard time developing an intuition for the more abstract algebra and math
concepts.

The same is true for CS. I can sit down and teach someone the hierarchy of
computational mechanisms (finite state machines, pushdown automata, Turing
machines). But what good is that if they don't understand what those machines
actually express? Understanding that regular expressions (not regex) are used
to tokenize text, and that PDAs are used to parse text is a great practical
introduction to those concepts and provides them with an intuition that they
can then use to generalize those machine models to other structures.

So pick a point to start, and work up. Don't start at the formal level and
expect it to be effective (unless the students already have a sufficiently
advanced background, like a senior university math major could probably start
with those machine models and work towards their applications, rather than the
reverse).

------
mattferderer
While I am a volunteer & proponent of STEM, I pity the administrators &
teachers who need to figure out how to cram so many subjects into students
heads. I also pity the students. There is a limited time in a day & everyone
has their subjects they feel students need to do more of, including arts,
recess, and physical activity which seem to be the most recent cuts.

I think Charlie Munger once said we learn the really important stuff by middle
school. I think it would be nice if kids had more control over the direction
they are interested in & the subjects they want to really excel at. This of
course requires them to try different things. But once they find one they're
really passionate about, I believe we should let them go deep into it without
requiring as much of other content.

I believe a well rounded education is great but without being able to focus in
one area we can't become an expert in anything. Bill Gates & Warren Buffet
have both argued that focus is the key to success at anything.

~~~
yazaddaruvala
I really feel computer science isn’t a subject as much as it is a medium.

Once we learn to write, we don’t take writing classes, we take grammar
classes. Meanwhile, we write to participate in the rest of our classes.

Similarly, computer science should become the medium of participation for STEM
classes.

For example, math and physics, would be easy classes to transition to only be
taught with Python.

Instead of using a graphing calculator to solve word problems, what if the
class was about building a graphing calculator?

You would still learn how mathematical functions translate to graphs, but you
would also learn to write software that accurately simulates math, and later
physics.

~~~
bg4
I very much agree and I tell every young CS student I meet that Computer
Science + Some Other Domain = bright future

------
chimmy_chonga
I volunteered with Microsoft's TEALS
([https://www.tealsk12.org/](https://www.tealsk12.org/)) organization last
year as a volunteer classroom teacher for an introductory CS Course. The first
semester was mostly in this drag and drop language called Snap, similar to
Scratch, and the second semester consisted of the basics of Python.

I was worried about teaching at first, I haven't had a lot of experience (none
as a matter of fact) but, TEALs had some training classes over the Summer that
I attended and they taught me how to be a pretty decent (at least in my
opinion haha) teacher.

The school I got placed at was an inner-city school and it was honestly
awesome to give these kids a chance to learn about and explore a career path
they previously thought well above their ability to reach. I went one day a
week for one class in the mornings, I worked with other volunteers each with
their own day, so it didn't interfere with my work life at all either.

I didn't learn about programming myself until I hit college so just the fact
that these kids are even made aware that this is an actual viable career path
is a win in my book.

If you're interested at all in "CS in every high school" mentality and you
want to put in some volunteer hours then I think TEALs would be an awesome
resource to look into

~~~
mttjj
I will second this. I'm currently in my second year volunteering and I
absolutely love it. I get to help with both the CSP (intro) and CSA (Java-
based) classes. Last year I went just two days a week but this year I'm going
three. Honestly, if it wouldn't be such a pay cut I would seriously consider
quitting my current job and get into teaching full time. (I know money isn't
everything but still).

TEALS is great because it realises that unfamiliar teachers being thrown into
teaching CS probably won't turn out well for anyone. But having 'real'
engineers from industry in the classroom to help teach and explain things is
an invaluable resource. Plus, I've been able to get to know some of the
students really well and talk to them about their college plans and beyond. I
was a little nervous when I first started but it's been one of the best
experiences of my life.

------
lalos
An effort to lower salaries by increasing supply of workers. It's amazing how
they play it as a donation when it is a strategic long term investment. Makes
me think of tax implications of this kind of gray area between donations and
long term bets. Nonetheless, money spent in education is money well spend so
props for that.

------
bob_loblaw
A better approach is that taken by the Bootstrap World curriculum
([http://www.bootstrapworld.org/](http://www.bootstrapworld.org/)). They align
their curriculum around algebra. That way you don't have to find time to make
a CS class in an already busy schedule. Bootstrap trains Math teachers to use
the curriculum. Again, the school doesn't have to hire a CS teacher. The
program is entirely online, so the district IT departments don't have to
approve/install any software. They are also moving into physics and data
science to expand student exposure to programming.

Bottom line, putting pressure on schools to find time and money for a discrete
CS offering is challenging. I tend to think of programming as a tool; don't
teach programming for the sake of programming, but as a tool to enhance other
subjects.

~~~
saagarjha
> Bootstrap trains Math teachers to use the curriculum. Again, the school
> doesn't have to hire a CS teacher.

My school decided to have random (STEM, mostly math) teachers teach computer
science classes. It did not go well–not because the teachers were bad at
teaching, per se, but because they had not had enough training. It turns out
that you can't really learn to teach Java over the summer.

~~~
bob_loblaw
Bootstrap does not promise that these math teachers are now proficient coders,
but they do walk the teachers through the entire curriculum from start to
finish. The teachers act as the students so they get a feeling of what is
being asked of the kids. This curriculum is like 25 hours long. Most math
teachers use one day a week to work on coding. So I wouldn't call this program
CS in the classic sense. Rather it is a brief introduction to coding and how
it relates to algebra.

~~~
saagarjha
That's ok as long as it's understood that these teachers aren't teaching a
standard computer science class. But I'm not particularly optimistic that
school administrators will understand the difference.

~~~
bob_loblaw
It has been my experience that school officials will offer some coding if that
is what parents want. Coding, programming, and CS are used so interchangeably
that often meaning is lost. So the bare minimum of coding classes will be
presented as this massive shift toward STEM/CS, and parents will go along with
it.

~~~
saagarjha
Again, that's ok as long as schools don't try to reuse these teachers to teach
actual computer science courses later "because they already know some coding".

------
maxxxxx
I think instead of teaching computer science students should be taught
tinkering with a lot of different things. Take them apart and understand them,
modify them. Call it "hacking". One thing I notice with the young guys coming
from college is that they view a lot of things as black box that is either too
difficult to look into or it's even not allowed.

I would be very afraid that teaching CS in high school just creates more
people that can whiteboard algorithms without any deeper understanding or
creativity. Good for Amazon though to get more workers for cheap they can then
lay off after a few years to get "fresh" people.

~~~
justwalt
This was me. I studied ChemE, and after working at a startup where I worked a
more EE leaning project, I’ve realized this is what I would have liked to
study instead. A lot of electronics are much simpler than I ever imagined.

I’m in the process of building my own keyboard at the moment, but once I’m
done with that I know I’ll be hungry for more electronics related projects. If
only I could come up with some good ideas.

------
esaym
I'm not sure how I feel about the commoditization of my career path.

~~~
toomuchtodo
Your path should be to become financially independent and/or a business owner.
Its the only way out as businesses attempt to drive down the cost of their
labor.

~~~
Someone1234
As a business owner logically wouldn't your customers also be trying to drive
down costs/eliminate you?

Plus this isn't particularly useful advice. Without a large amount of capital,
luck, or a compelling concept it isn't trivial for people to become
financially independent and or a business owner.

~~~
toomuchtodo
Well, yeah, you need luck and either capital or work to become financially
independent. You don't need to be intelligent to be a business owner, and you
don't have to be a business owner to make an above average wage and invest it.

[https://www.washingtonpost.com/wp-
srv/style/longterm/books/c...](https://www.washingtonpost.com/wp-
srv/style/longterm/books/chap1/millionairenextdoor.htm?noredirect=on)

------
squirrelicus
And then we'll graduate a bunch of students that have proficiency in
programming like I have proficiency in Spanish after 4 semesters.

Right. See, kids that don't care or don't understand the material have to be
able to get Cs as a fundamental requirement of high school. A degree for
everyone, regardless of ability or passion.

Oh and also all my computer classes in high school were video game free time.
So that's a thing.

What a waste of taxpayer money. Just link kids to a BASIC interpreter online
and they'll figure it out if they care and have the aptitude.

------
logfromblammo
I don't know about _computer science_ but all high schools could stand to
teach a general familiarity course in _computers, networking, and robotics_.

Suggested curriculum points:

    
    
      - Plug the related high school extracurricular clubs
      - Computing on a tight budget
      - Two types of free: gratis or libre
      - Resources to further your own computing knowledge
      - Brief history of computing
      - Careers in computing, networking, and robotics
      - Basic hardware security
      - Basic network security
      - Basic encryption, incl. protocols and certificates
      - Trust, skepticism, and mistrust online
      - Basic system architectures
      - Popular choices in operating systems
      - Microcontrollers, FPGAs, SoCs, sensors, buses, motors
      - Taking control of your own computers
      - Protecting yourself from malware, spyware, and spam
      - Backing up your data
      - How to evade the law online
      - How to catch online scofflaws
      - Open vs. closed source
      - Types and uses of various licenses
      - Technical standards, FUD, and embrace-extend-extinguish
    

Most people won't need to learn full-blown _computer science_ in high school,
just as most people won't need to take a second year of calculus. People will
need to know why it's a bad idea to glue a tablet computer to a refrigerator
and allow it unrestricted access to your Wi-Fi.

Everyone in the class could leave it with their own Raspberry Pi (or
competitor system) and a custom-made peripheral for it.

------
syntaxing
It's so weird and interesting how we have been pushing STEM so hard on HS
students. I'm near an area where resources are more abundant (our tax property
is actually really overwhelming...), and there's even "tracks" that students
can choose. Like a leadership, compsci, physics, and etc. I look forward to
more resources provided via online to all area of the US for STEM in early
education.

~~~
dunpeal
Not weird at all. This is Bezos generating hordes of candidates for Amazon to
keep wages down for the next century.

~~~
pofilat
Or unlocking a massive engine of productivity to raise standard of living
across the economy. Did literacy kill the careers of priests and monks?

~~~
dunpeal
> Did literacy kill the careers of priests and monks?

Actually, it did!

[https://en.wikipedia.org/wiki/Reformation#Literacy](https://en.wikipedia.org/wiki/Reformation#Literacy)

Literacy was a major factor in the reformation, and the subsequent decline in
the status of clergy. Look even further, and it becomes a crucial factor in
modern atheism and the further deterioration of clergy of all denomination.

> Or unlocking a massive engine of productivity to raise standard of living
> across the economy.

Sounds great! Just remember the rules of supply and demand. As the supply of
programmers increases, since demand won't change (at least not immediately),
their price will decline.

That means programmers like you will have to settle for a fraction of their
current compensation.

Couple that with tech employers' known fondness for employing the young, and
you'll lucky to have a job at all.

------
mti27
Back in the late 80s, my high school had a decent number of programming
courses which touched on logic, sorting algorithms, and so forth. But the most
interesting course was with the Pascal teacher who also taught computer
literacy 101. This teacher offered everyone who came to his computer club
generous extra points. So he was able to fashion a very popular computer club
with all the jocks/cheerleaders in attendance. Then [no joke] he would have us
practice our social skills in talking to girls, etc while filming it on a
video camera and playback on a projection TV for the group to critique.... Fun
times!

~~~
jtr_47
I had a similar experience in High School late 80s (Jamaica HS, NY). We had
Pascal, x86 Assembly, Some C. The computer teacher was also our physics
teacher.

It was an excellent set of courses that taught some basics of programming and
hardware architecture and we learned. There was a computer club where we
interfaced with a laser disc player. Some really cool time back then. I was
lucky to have my C=64/128 and Amiga 500 to extend my learning experience, with
C.

Peace.

------
mountainofdeath
As an example, there were technically 4 basic programming classes and a few
trade focused ones like A+ certification, web design. Catch is, almost all
never had enough people to be offered so when I convinced the requisite 8
people to join (3 later dropped the class after the first week), it became a
very "plan and you your own thing".

Compare this to what the elite private coastal schools have, nothing would
have been better. Those schools good CS students out of top master's programs
with a penchant for teaching. It's no surprise that IOI champions come from
these places.

------
krob
I think highschools need to identify kids early on in sort of like a speed
dating process when they're younger. If they show interest in highschool have
some ways for kids to start building background in say learning about hardware
/ electronics or software or just DIY building things (woodshop / welding /
auto / construction / plumbing / electrical) (these are huge fields, and it's
not like it's medically oriented or anything). I realize some schools had ROP
for this stuff, but we need more participation by community colleges in life
skills, even if highschool is more of a social gathering for people their age,
you won't find a lot of highly specialized people teaching at high schools,
because the background requirements are just too different. A CS Professor is
more likely to be the strange highschool kid, who has an interest in teaching
other people their craft, and may inspire others based on the way they got
interested. I guess just a lot of PC (politically correct) things going on int
he world, and people think that everyone who teaches younger people needs a
specialization in educating younger people. That is not how the real world
works. People learn from everyone they meet regardless of background.

------
futilator
I'll say this much: software is so disgustingly intractable, from week to
week, that teaching people how to do it a specific way solves almost next to
nothing.

Whatever you teach anyone in September, by June, it may not work. It's a
bottomless pit of futility that sucks the life out of you, and even if you
find a way to derive some pleasure from it, the rug will be pulled out from
under you, and the forces of access denial with lack you out of the things you
master only a month ago, for little more reason than bumping a version number.

Go ahead and learn something. Your learning will be so dependent on gigabytes
of irrelevent libraries with highly specific build numbers, such that when
support is dropped, and those builds are no longer available for download,
your acquired skills will be struck down and renderd unusable.

------
tw1010
An excellent way to make kids as bored or afraid of engineering as they are of
mathematics. As a coder who'd only like his wage to get higher this is
wonderful news, I fully endorse it.

------
swagtricker
I wish adults were organized enough to a.) call it programming and not
Computer Science b.) shift the conversation to STEAM (Science Technology
Engineering Art & Math) instead of pushing Art out of the discussion and c.)
start exposing kids in the tween ages (e.g. 9-13) before a lot of annoying
hormones & social pressures kick in together.

------
jorblumesea
Cynic in me knows that this is an attempt to increase the long term supply of
engineers and suppress wages.

------
ProAm
It'd be nice if this wasnt tied to Amazon.

------
tmaly
Reading between the lines, there are not enough good programmers to hire.
Supply and demand are driving this effort.

------
HiroshiSan
resources should be spent making sure math teachers are equipped to teach math
and not rote memorization.

------
yters
Why computer science instead of just the practical programming and software
engineering know how? The theory is pretty irrelevant for most coding jobs.

------
themodelplumber
I like that this is being offered--the _opportunity_ should be there.

However, I really wish this sort of effort could be de-coupled from the "CODE"
idea and filtered by interest on a per-kid basis, as with other subjects, even
algebra. As things stand, people will eventually self-select anyway, so the
inevitable change in or out of STEM is simply delayed until it's later, and
even more awkward and difficult. For example, during one's sophomore year of
university, after a tremendously walled-off personal identity has been
constructed on the back of the STEM vision. A school-age child robbed of
interests-based focus now easily becomes a societal liability later.

I have three school-age children. If one of them likes STEM, wonderful. Or
maybe they will become an animal trainer, or a pawn shop owner or drive a
garbage truck. That's fine. Or maybe they will become a counselor for people
who are looking to get out of STEM (I am coaching a couple of those people
right now).

I'd also like to see the over-emphasized CODE replaced with TECHNOLOGIZE or
some broader-minded term that allows talented people to get out of the coding
mindset and yet realize they can still be beneficial within STEM, and maybe
even realize that technology can be developed by folding pieces of paper
together, or by working in the forest. In other words, you can CODE without
CODING and people are being tricked and boot-camping their way into dead-ends
because they don't know that.

As an example of someone who could STEM in their sleep and never write code,
take Richard Feynman. Or Einstein. Could Albert Einstein "code" on an IBM Mark
I? Who cares?

Not that coding is bad, just that it's not the only thing by a long shot. And
it's emphasized by a lot of people who absolutely will not ever write any
code. The "code parents" I know who are falling over themselves to get coding
into schools for their kids are the same people who ask their nephews to code
things for them, not because they "can't do it but wish they could", but
because they are interested in higher-level pursuits. They want their kids to
have a tiny bit of exposure to CODE so these kids can run in CODE-type
circles, yet still not actually CODE. But some of those kids will not get it
and will have nervous breakdowns because they think they are supposed to learn
to write CODE.

Further down the STEM path, we get these IT interviews in which the
interviewer projects knowledge and experience they themselves didn't have at
the interviewee's level onto the interviewee. Even when it's just to get into
somebody's head and see how they think, it fails to pass muster at the
Psychology 101 level and it's a huge problem that prevents healthy teams from
forming. I personally interviewed for one of these jobs, got the job, and then
walked into a room full of people who were laughing at how it was possible
(luck) that I could have known the answers. Then I went on to learn by
experience that the most desirable candidate for the position would have been
a politician with some small amount of IT knowledge, someone who could elevate
the department in the eyes of the other departments, which were intelligently
run at a political level. The STEM-driven department needed the opposite of
STEM in order to really become what it could become. Stanford Teamology
project results showed something similar--psychological diversity is a huge
key to problem solving, and becoming aware of its existence and benefits is
the mechanism that turns the key.

In order to create a ramp from CODE to this broader look at tech, it would
probably be beneficial to build a more realistic yet still basic model for
STEM that completely stomps all over the CODE notion by adding enough nuance
that candidates for STEM careers are given additional leverage in non-CODE yet
very-much-still-STEM areas. [I am writing CODE in upper case because in the
world I'm observing, it's some kind of uberword].

------
mvf0
Apparently a majority of HN doesn't know what CS is.

Computer science isn't software engineering.

Computer science isn't coding.

~~~
jessaustin
"Computer science" has always been a problematic term. Actual sciences don't
need to put "science" in their name. Most of what computer scientists do is
not really science, not that there's anything wrong with that. With all the
mathematicians involved, you would have thought someone would have come up
with a pleasantly evocative name. (several subjects within mathematics have
mellifluous names) "Computation", for example, would have been elegant, but
that ship has sailed.

TFA isn't talking about that anyway.

