
Ask HN: What should be taught in high school? - NiloCK
I&#x27;m an educator with a CS &#x2F; programming background. There&#x27;s a possibility that I&#x27;ll be moving into the &#x27;Information and Communications Technology&#x27; role next year at my medium sized high school (grades 9-12, ~700 students, diverse student population). My jurisdiction&#x27;s curriculum in this area is not well developed, and there are no standardized tests to prepare for. I&#x27;ll have an amount of freedom in deciding course content that&#x27;s unusual for high school teachers.<p>What would HN have the modern western high school student learn with respect to &quot;Information and Communications Technology&quot;?
======
Iv
Honestly at this point it is not programmers we need but more people with a
solid general culture about computing:

What's the internet? where is the cloud? Where are data stored? How do they
pass around?

What's a computer? A smartphone? Where is data stored? Where is computing
happening?

Most of them will never be coders, and whichever platform you use to teach
basic programming would probably be obsolete by the time they are out.

If you really want to do programming, I'd be doing some Arduino Through
Blockly
([https://ardublockly.embeddedlog.com/index.html](https://ardublockly.embeddedlog.com/index.html))
and hit two birds with one stone: it will give them basics of programming and
also demystify some things about electronics.

Kids fascinated about blinking LEDs or running motors can then dig into
electronics, students wondering what that weird C program on the right is when
a blockly program is assemblend can join us in the Dark Side.

~~~
ShteiLoups
Personally, I would respect high school students enough to have them write
actual lines of code and not drag and drop blocks. The Arduino language and
libraries are abstracted enough as to not provide major difficulty.

Those who really have an aptitude for it will be able to implement
datastructures and algorithms in it, and those that don't will be able to
muddle through copying and pasting enough code to get it running.

~~~
Iv
If you go directly to code, you'll hook the people who would end up being
hooked anyway. You will lose all the other too embarrassed to ask what is a
file and how you edit it, what is this folder thing, etc... Those are the one
you want to teach.

I tried teaching by giving the classes I wish I had. Turns out 95% of the kids
are not like me and needed some crash classes in computer usage before even
managing to save a file saying `print("Hello")`

What I like with Ardublocks is that it shows the lines of code next to it. If
you prefer writing code directly, you can as well!

------
elliekelly
As someone who was always interested in CS but who also always sucked at math,
the basics of logic helped me _immensely_ in finally understanding both. And,
whether by nature or nurture, as a woman I was always better with words than
numbers. Learning the fundamental concepts of logic _without_ numbers bridged
that gap in my brain and gave me the confidence to tackle the numbers soon
after.

There’s a really good course on edX called “Logic and Computational Thinking”.
It’s pretty basic and you could probably finish the whole thing in a Saturday.
I would imagine much of the content is in line with the capability of the
average high schooler. It was a good (and unintimidating) starting point for
learning how computers “think”.

~~~
madiathomas
> as a woman I was always better with words than numbers

This is really concerning to me as a father to a daughter. Is this a research
finding? This can be decoded as saying women have lower IQ than men because
people who are good with numbers generally have higher IQs.

~~~
mcv
It's an old cliche, and I personally suspect it's more a case of the cliche
informing cultural expectations and behaviours than this being an inborn
thing. I think I've seen some research in the past that women and girls
perform just as well on math and numbers as men and boys, as long as you
separate them from those cultural expectations.

Of course there's a lot of individual variation. Some people simply are bad at
math. But I think more people allow themselves to be intimidated by it when
it's not necessary.

In any case, my mother and sister were/are better with numbers than words
(which is also true for the men in my family).

As for IQ, it's about a lot more than just being good with numbers. There are
many aspects to it. Though it also depends on how you define it. Different IQ
tests can sometimes measure different things.

~~~
username90
> I think I've seen some research in the past that women and girls perform
> just as well on math and numbers as men and boys, as long as you separate
> them from those cultural expectations.

Stereotype thread studies doesn't replicate that well.

[https://replicationindex.com/2017/04/07/hidden-figures-
repli...](https://replicationindex.com/2017/04/07/hidden-figures-replication-
failures-in-the-stereotype-threat-literature/)

------
gus_massa
Remember to include Excel. It's very powerful for people that can't program. I
use it a lot in spite I can program. For example for the monthly family
budget. Also for statistics about how many students approve in my courses.

You can add some nice color, bold letters, and other visual stuff to make an
informal report.

You can make nice graphics. I like dispersion graphics. Sometime the linear
approximation is useful, but perhaps it's too much for 9-12yo.

~~~
fghtr
>Remember to include Excel.

I don't understand why you would force your children to depend on an unethical
for-profit corporation. Why not LibreOffice? 99% of what normal people need is
covered in it.

~~~
BTinfinity
Presumbly because Excel is used far more widely in the corporate world and
will be of more use to students

~~~
diffeomorphism
Presumably learning "spreadsheets" at the level taught in schools is much more
useful than learning $brandname software's quirks.

Also, at least when I went to school the software versions used were fairly
old (partly because of the budget and partly because that is what the teachers
originally developed their course for). Those were different enough (think
pre-ribbon) to trip those people up who memorized instead of learning what
things mean. I.e. "spreadsheets" skills transfer, "this is what the button
looks like in office 95" does not.

Schools are for learning not for training for corporate.

------
ronyeh
How to file taxes, if you're in the USA. How to calculate interest, balance
your books, and set budgets based on your income. You can teach spreadsheets,
double entry accounting software, and fun/useful math functions.

More generally, high school students should learn how to model information in
a spreadsheet. It can be anything they are interested in: prices on
collector's items, tracking their friendships and contacts, graphing their
caloric intake per day, tracking the tweets and mentions of your favorite
celebrities....

~~~
rimliu
This always pop up and always amuses me. Like, they do teach you reading,
math, and algebra in school, right? Believe it or not that it enough to be
able to do taxes.

~~~
michaelt
To judge from the number of works of fiction I've read where rich characters
giving money to charity say the tax write-off is larger than the donation, I
think a great many people are unclear on the details of how the tax system
works.

~~~
matt4077
I’ve seen that error in just about any discussion of charitable giving,
including on HN. I doubt it’s due to a lack of knowledge/skills, because these
people would tend to give away all their earnings in the belief to somehow
make a profit.

------
RandomBacon
I say how to think critically: problem solving, not always accepting the
status quo, don't take things at face value (photoshops, or fake news), think
about what motivates other people (when negotiating etc), learning self-
independence.

Maybe some of those things can't be taught effectively at school, but I sure
don't think most kids are learning that stuff at home. Perhaps your school
might sponsor a Scouts BSA program? A lot of the character development stuff
can be taught that way.

(And a lot of people on reddit say taxes.)

~~~
thundergolfer
Rebuttal: There's good evidence that "thinking critically" is not a skill that
can be divorced from domain-specific expertise. In order words, the capability
to be a critical thinker is in direct relationship with one's competency in
_specific domains_ and cannot be generalised.

Source: Why Knowledge Matters - E.D Hirsch

~~~
roenxi
Which is true but also leaves the interesting follow up question - do people
understand how uncritical thinking works and can they recognise in themselves
when & why they are doing it?

A lot of intelligent people seem to have skipped thinking about that one. I'd
love to get it and a negotiation course into a high school curriculum.

------
caseymarquis
I think you could probably build an entire course out of following a button
click into a browser, and dissecting all the layers along the way.

What happens when you hit the mouse button? Let's break open the mouse and
find out. This leads to a pretty simple circuit, until you hit the MCU doing
USB communications. What is an MCU? It's a small computer with a processor,
memory and electrical inputs/outputs. USB is pretty complex, but you could
emphasize that there's a power line, a return, a data in, and a data out line.
I'd probably skip electrical encodings and the details of USB protocols at
this point. The computer is the USB host (server), and the chip on the mouse
is the client. You could then open up the PC, follow the path through the
hardware to the OS. At this point you get to explain what a driver is. This
leads to application code and OS APIs. This leads to the coordinate system in
the OS and monitors/touchscreens, which finally gets you to the browser, html,
css, javascript with ajax (browser inspection tools), http, https and
certificates, tcp, ip, ethernet frames and wifi (wireshark), network cards and
their management, looking at a network card, dissecting an ethernet cable
(crimping one), taking apart an access point, switches, the gateway, the
internet, ISPs, servers, databases...

I think the point would be to emphasize that there are no black boxes, give a
good overview of how things work, and hopefully find a couple kids who really
like some portion of all this and help them start some more advanced projects.

~~~
marcosdumay
I think this is way too much content for a single course. But well, it's an
interesting idea, it just has to be filtered so the students learn _something_
in enough depth to apply it.

~~~
caseymarquis
I don't really think they need to directly apply it? I've never had a direct
application for biology, but I'm really glad I learned about it. It informs my
thinking about things like funding research on new antibiotics.

This is more about demystifying IT than anything else. It takes years to be
able to use all these technologies to build things, but if you cover one layer
per class and you get 30 classes, you could cover a lot of topics.

I took a law class in high school (New England has pretty good public
schools), and the whole class was basically: Let's talk about something
interesting in law today. Having an IT version of that would probably go a
long way toward educating the general public on how all their stuff works.

The bigger thing for me would be finding the kids who love learning about it,
and getting them the opportunity to go further.

~~~
hackermailman
Selecting for individual kids and dumping the rest is what clubs are for
outside of school though, not actual classes. Anybody can make a course that
only a few will benefit from, the trick is designing a course that has proven
results for all students taking it otherwise why even waste their time.

~~~
crazypyro
"One size fits all" is not a realistic goal.

Ever heard of "No Child Left Behind"? The government provided a set of minimum
requirements everyone should meet, yet provided no metric gathering beyond the
minimum, no funding for advanced studies. Result was a huge decrease in
funding for gifted students and there's been several studies on the negative
effects.

In my opinion and personal experience, it was awful for any gifted children
and all the gifted programs were drastically cut.

One size fits all classes are not the answer. Kids are too varied in aptitude.

------
kartickv
A lot of things that are not hardcore CS but very useful, and often simpler
solutions to many problems than full-fledged programming:

\- Becoming a power user of spreadsheets, with formulas, pulling in external
data (like forex rates), basic statistical analysis, conditional formatting to
present a conclusion (green is better, red is worse) etc.

\- Running a VM on AWS, SSH, basic Linux administration, etc.

\- Automating manual tasks like cropping 500 JPEGs and rotating them. This
could use Automator on macOS or a Python script.

\- Writing small throw-away programs in Python. For example, I have a noisy
signal, noisy due to errors in measurement. Would averaging with a second
noisy signal reduce or increase noise? I wrote a simple Python program to
generate two random arrays, measure standard deviation of each, and print out
whether the resulting array has lower standard deviation than neither, one or
both the input arrays. I then repeated 100 times to eliminate variability
caused by the random number generation.

\- HTML / CSS / JS to build a simple web site.

\- Exploring emerging no-code tools (Airtable?)

Hardcore techies often don't have these skills. That would be like a surgeon
who can perform open-heart surgery but can't administer first aid.

~~~
big_chungus
This doesn't seem popular on this site, but learn Excel. It's good for a high
schooler as a starting point. Python and R are good for more advanced
processing and analysis, but others being able to read and use what you
produce is a consideration, too. Same reason I can't draft many documents in
LaTeX. Learn more stuff after, but start with excel, especially for stuff like
stats and data transformation.

------
twblalock
For an 'Information and Communications Technology' course, I think the main
goal ought to be demystifying computers and the internet, to enable students
to think critically about about the role they play in society.

One outcome is that students can be active users rather than passive consumers
and think critically about topics such as privacy and social media.

Other outcomes are improved computer literacy, and perhaps inspiring some
students to pursue computing as a hobby or career -- but the demystification
and critical thinking will benefit all of the students, not just the ones who
are interested in computers.

~~~
usrusr
And don't forget the most basic element of computer literacy: understanding
the difference between a document editor like MS Word and an editor that shows
the actual bytes. This is really not hard at all, but also something that
people can easily miss if they never run into an actual use case.

~~~
saagarjha
I would not consider that to be “the most basic element of computer literacy”.

------
Merrill
I would approach it from a "how to use information technology" perspective.
This would include how to locate, acquire, validate, transform, store, process
and display information. It would also include how to find, download, install,
customize, secure, and update a set of tools that can implement all these
things, including a standard office suite, a programming environment, and an
audio/video capture and edit environment. Python could be used for Libre
Office scripting as well as the programming environment. Display should
include both the graphing functions of the spreadsheet as well as using CSV
files to transfer information to the programming environment for more complex
processing and use of plotting tools. Financial and business data could also
be used as a theme.

------
berbec
Financial planing 101. I know when I graduated from high school I was
completely unprepared to make a budget, plan for expenses or save money.

~~~
thundergolfer
OP's title is misleading in that they're specifically talking about
Information Tech and Communication related stuff. So "Financial Planning 101"
is off-topic.

~~~
humanrebar
To be fair, modern financial planning typically involves a bit of software.
Double entry accounting tools or spreadsheets, for instance.

~~~
thundergolfer
Financial Advice 101 shouldn't need to involve any software. A 101 in Finance
isn't "modern financial planning", and giving people who don't understand the
'time value of money' or basic budgeting shouldn't be handed Double Entry
accounting tools.

~~~
humanrebar
Adding up columns of numbers is basic budgeting. People typically use software
tools for that. Like accounting software or spreadsheets.

Having students do financial arithmetic on paper is as helpful and realistic
as having them write out essays in cursive handwriting.

~~~
thundergolfer
I think we're talking past each other, because my Financial Literacy 101
education had basically nothing to do with "financial arithmetic".

It was all concepts and foundational equations like compound interest.

If you're using the fact that this would involve "spreadsheets" as a way to
link it it ICT education which is what this thread is about then I don't even
know what we're talking about anymore.

~~~
humanrebar
I think there are a lot of things that could be called "Financial Literacy". I
am advocating for something immensely practical for normal working class
consumers to set themselves up to manage a household and perhaps a small
business.

That is, emphasize finances (practically, using realistic tools). Covering
basics of Finance is probably fine, but only to the extent that they
understand the gravity of a 22% compound interest rate. Being able to do
complex calculations with that rate is probably less practical than learning
some other things, like knowing how buying a piece of property works.

------
jdietrich
Touch typing has a staggeringly high RoI for pretty much all white-collar
workers.

~~~
C1sc0cat
When I was in school years ago as a dyslexic, the school suggested that I do
typing, I had a typewriter at home provided by the local education authority.

I wish I had but back then (1970's) that was considered a "girls" class.

~~~
telesilla
I had the same problem with practical workshops, the one on combustion engines
was solely boys and I wasn't brave enough to go to the other side. Luckily the
other option was astronomy, I don't feel I was badly put out.

------
BLKNSLVR
This may sound flippant or pushing of stereotypes, but teach these things:

The value of planning before cutting code: What exactly, precisely,
unambiguously, is the desired outcome? Ask enough questions to determine
whether the requester really knows what they want or whether they're fishing
for self justification of their own role. Create some brilliantly frustrating
examples of ambiguous requests, get your students to create a solution, then
examine all the different ways they interpreted it. Demonstrate the questions
to ask to get to the brass tacks.

Don't expect non-technical people to innately understand the parameters you
have to work within. It's your job to explain the boundaries of your ability
to create a solution. You know the "why's" of this, but the non-technical folk
don't, otherwise they'd be the technical folk...

Don't take criticism personally. If you're taking it personally then you're
exposing your own sensitivities about your competence. If you can't do it, ask
someone for help. If the platform or tools can't get you the best solution
then work towards the nearest best possible solution or change the tools /
platform.

I've seen and experienced a lot of ICT angst that is entirely caused by the
wrong mental approach. Nothing to do with anything remotely technical. Get
that shit sorted early, and the technical stuff becomes eas(y|ier).

"First you must fill your head with knowledge. Then you can hit ice with it"

(Obviously not for the early stages as it will probably scare / bore them
away. That's where scenarios or real life examples may help though)

------
narag
I can tell you what should _not_ be taught: pages and pages of bullet points,
classifications and definitions.

There is an ocean of operative skills that probably should be included in the
rest of subjects but aren't and won't in the short term.

So I would include the basics of all those and let the students decide in
which of them they want to dig deeper according to their preferences. You have
music, video, animation, design, programming, word processing, spreadsheets...
there are YouTube videos for everything, so it really isn't hard to come with
the material.

I had to read a few textbooks at the uni, but language manuals, like the
TurboPascal on-screen help that included example programs (that you could
copy, paste and execute right away) for most functions were the best.

Most kids love to program even the simplest video games and it's really not
that difficult to do it with just JavaScript on a browser using canvas. Or
maybe they prefer to create some loops with lmms, or an animation with
Blender...

------
memset
“Philosophy of science,” or, “how do we know something to be true, and what is
the difference between knowing something and believing something to be true?”

I took such a philosophy course in college and it was quite informative as a
way to reason about problems. It helped me with my debugging, to move from “x
is the problem” to “I believe x is the problem, and here is why I believe this
causal relationship exists.”

I think this is what most of us call “critical reasoning” skills, or “how to
think.” But this particular line of causality, and analyzing the strongest
statement one could make based on a set of premises, is a skill that has
served me well as an engineer.

~~~
markhollis
I am interested in knowing which philosophers and which texts you found most
helpful.

~~~
notelonmusk
not the oc, but Karl Popper
[https://www.youtube.com/watch?v=ztmvtKLuR7I](https://www.youtube.com/watch?v=ztmvtKLuR7I)

------
cgrealy
Basic cyber security. Good password practice, be wary of unknown links, use
2fa where you can, etc.

Hopefully, that will also encourage a skeptical mindset which helps in other
areas of life (religion, politics, pseudoscience, “alternative” medicine,
etc).

------
pimmen
Replace most of the calculus classes with statistics.

Most people who take calculus in high school will never, ever, do a derivative
or integral in their life, nor will they use their understanding of calculus
to unlock more mathematical topics.

Most people who never, ever, take a statistics class will get statistical
concepts and problems hurled at them from every conceivable angle in both
their professional and personal lives. Since I know statistics and math, I
enjoy a great deal of trust from people when it comes to the data science work
I do, more so than if I were to enter a discussion around building software
with non-programmers. And I know this is not because I'm a genius, it's
because people don't feel like they know enough about statistics to challenge
my claims, even though they will make decisions based on what I tell them. And
then we have the people who don't know statistics, but think they do, and
start inferring all types of causations based on some insignificant patterns
they've found.

If we want more informed voters, managers, employees, politicians, consumers
and decision makers in general I cannot overstate how important it is to
understand that there is such a thing as different distributions, that you
_can_ estimate them, how variance actually works and what "significant"
actually means. At least relative to taking the derivative of a third degree
polynomial.

~~~
wesnerm2
People who take calculus in high school tend to be the more advanced students.
This is not a course the typical student in the US takes until college. I
think those advanced students who do take calculus are still better served and
reach a higher level of mathematical maturity by learning calculus than by
statistics.

Calculus also aids the student in the appreciation of physics. It is central
to the understanding of many mathematical concepts.

Calculus is a requisite for understanding where statistical distributions come
from. How else do you make sense of probability distributive functions and
cumulative distribution functions? or understand where those statistical
tables come from?

Statistics is already taught in high school at an elementary level. The topic
is frequently taught repeatedly in the courses.

Statistics should probably be taught more but not at the expense of calculus.

~~~
pimmen
Sure, calculus can unlock more pure mathematical concepts than statistics. But
so can graph theory, number theory, set theory and abstract algebra.

The second point you raise, that calculus has so many applications in physics,
is honestly the real reason calculus dominates high school mathematics post
algebra classes. 50-60 years ago an engineer mostly worked with mechanical and
electrical concepts, not anything in computer science. Today, we have highly
trained engineers who work exclusively with other branches than analysis. Just
because you are an advanced student does not mean that all the calculus served
in high school will serve you better than any other mathematical branch.

You don’t have to know that much calculus to grasp what a probability
distribution is, or where the tables come from. Do you know what a limit is?
Great, then we can explain a continuous distribution as soon as you grasp a
discrete distribution. Areas are also something you probably can understand.
Would it be cool to derive the tables by doing integrals? Sure. Do you need to
in order to understand variance, significance, estimation of distributions,
correlation and more? No.

I would be willing to let those who are more interested choose calculus, but I
would appropriate just as much resources to let people choose the other
branches of mathematics too. If you can take integral calculus, but not
combinatorics, that’s a problem in today’s society. Physics and chemistry are
great, but we should not let them dictate the entire math curriculum,
statistics and computer science are just as important and lucrative fields for
advanced students to pursue.

So, if we do have to let one mathematical branch dictate upper high school
math education, let’s dethrone calculus and instead teach statistics. If I
have to choose just one to give the same absurd levels of attention as
calculus has been given, I think statistics will be by far the most useful to
everyone, whether you’re a medical doctor, lawyer, engineer or any other
highly skilled professional, statistics will probably serve you best. If for
no other reason than to ask informed questions rather than just smile and nod
while I explain the variance of an important business metric.

------
smabie
I find a lot of people, even developers, have no idea about the history of
computing. Things like where Unix came from and why our computing world looks
the way it does today. Talk about mainframes, Alan Turing, ENIAC, etc. Also a
discussion on the Unix way vs the Lisp way (NJ School vs MIT School) should be
informative. Impress upon the students that the computing world we live in
today is mostly an accident, things could have been very different: we could
have all been using Lisp machines, for example.

~~~
O_H_E
> Also a discussion on the Unix way vs the Lisp way (NJ School vs MIT School)
> Wow. This sounds very interesting. Do you have any recommended readings on
> this? I have some hard time pulling useful results from Google.

~~~
smabie
[https://www.dreamsongs.com/WorseIsBetter.html](https://www.dreamsongs.com/WorseIsBetter.html)

------
vmurthy
In addition to the great suggestions below, one of the things I would add (
this gels with the whole problem solving skills suggestion) is to introduce
them to algorithms. It needn't even be in a specific language. Being able to
think abstractly is one of the great powers that high schoolers should be
exposed to.

------
hysan
What vast informational resources that are available. Which can be trusted and
how to verify sources.

How to use those resources to research and problem solve.

More importantly, how to problem solve (scientific method, logic, etc). Your
CS background will help immensely here.

Organizational skills with an eye towards tying it to all things personal
finance (the tax suggestion is at the top of my list of things I wish schools
taught).

How to take the information you've researched and organized and present it
well. Improve their public speaking and maybe throw in a bit about how to
present oneself professionally.

------
tropo
College professors have noticed a rapid increase in the portion of students
who are clueless about filesystems. This may be because troubleshooting a PC
is mostly a thing of the past; today it is common to experience computing
mainly as phone apps and Google documents.

Teach about switching directories, having a current directory, using relative
paths, using absolute paths, and having a home directory. Teach this via both
GUI and CLI, getting students comfortable with the fact that they represent
the same thing. If applicable to your OS, also teach about drive letters and
the current drive. It's best to teach with multiple file managers and multiple
CLI interfaces, possibly taking advantage of Windows Subsystem for Linux (WSL)
on Windows 10 and/or a virtual machine. BTW, those are good to learn about
too.

Teach about file archives. Many students today are left helpless if an archive
isn't automatically handled. Teach about how pure archive formats (tar cpio
pax), filesystem images (iso), compression formats (gz bz2), and combined
archive/compression formats (zip arj) relate to each other.

Teach about saving files. With many apps doing this automatically now, people
can hit disaster when they encounter one that doesn't. Teach about the
different places that files can end up when saved, and about why this matters.
It is now easy to be unaware that copies of a file might or might not exist in
various places, both local and remote. This has implications for privacy, disk
usage, network connectivity needs, and recoverability in the event of hardware
failure.

------
itsmejeff
This Freakonomics episode about what’s missing from the standard math
curriculum is really good [http://freakonomics.com/podcast/math-
curriculum/](http://freakonomics.com/podcast/math-curriculum/)

------
BuckRogers
Another vote for heavy focus on SQL. It sets the stage for so much and covers
bases that may not be covered very well down the road. It's a skill that won't
be going away unlike so many programming trends. It'll serve all of your
students well, no matter what field they choose, and empowers them. SQLLite
would be great and easy for them to use.

When I was in school, we focused on touch-typing and BASIC. I think touch-
typing and SQL are must-haves with large return on investment, and then moving
onto some programming.

For programming, I'd personally teach what I know best, which is C#. Whatever
you choose there, I'd set them up as the language is used in the real world,
full tooling chain so if they want to do more on their own at home in the
summer, you've fully enabled them.

Generally speaking, by high school I'd like to see schools no longer teaching
subjects at all. Leaving that to elementary and junior high. High school
should be reserved to hammer into kids on how to filter out unsubstantiated
information, critical thinking skills and essentially the medieval trivium. In
the information age, we don't really need to teach subjects as we have the
internet. The challenge now and going forward is working through all of it in
an effective way.

------
1234_555_2121
Can't help myself, since I was today deeply disappointed to find out my son's
expensive private school didn't reward him for developing (with my help) an
electromechanical solution to an ostensibly mechanical STEM contest. A
solution that was well within the rules but not thought of by anyone else.

What pre-college and high school kids should be taught:

1\. School is nothing like the real world. The real world rewards innovation.

2\. The conformal tyranny of the mediocre exists only in schools (and, to a
degree, in large orgs) and will not impede you in the real world. Ignore it or
fight it.

3\. There are no grades in the real world, only degrees of success.

4\. The only meaningful outside validation is your reward for your hard work.
Not just money, as success can be measured otherwise, but reward.

5\. There are no rewards for following the rules, being agreeable or staying
with the herd. In this sense, school will be more damaging than helpful.
School is something you'll have to get through and then undo.

6\. The amount of money spent on school or the school's reputation doesn't
alleviate these fundamental issues.

How the F can you have a STEM contest that doesn't reward the most innovative
solution? What kind of lesson is that teaching.

~~~
michaelt
_> How the F can you have a STEM contest that doesn't reward the most
innovative solution?_

It's frustrating - but a competition that truly didn't care about anything
except the best solution wouldn't have limited entry to high school kids!

When I was in high school, I was the only kid with a home computer (this was
some time ago!) and the only kid whose dad had a CNC machine shop at his beck
and call. So I won quite a lot of prizes. But even with those resources, I
didn't win 100% of the time.

Maybe some competitions inferred from my work that I'd had an 'unfair'. Maybe
they couldn't tell how much of the work was of my own hand. Maybe they feared
becoming a competition for 'best parent' instead of 'best student'. Maybe they
were trying to encourage students and judged I didn't need any encouragement,
or that their scheme to encourage more students into engineering wouldn't work
if the prizes always went to someone with a parent who was an engineer.

The good news is, loads of competitions didn't really give a shit about those
things, and were happy to give me a prize. You've just got to enter more
competitions until you find ones that you win :)

------
honksillet
I went to a pretty well regarded private high school in California. As a lark,
in 12th grade I took a “computer course”. It ended up being a very basic CS
course in pascal, which even 20 years ago was fading out. It really opened my
eyes.

My recommendation is teach a remedial CS 101 course. Variables, loops, etc.
there USA good chance the students won’t have been exposed to anything
similar.

------
ggm
Abstraction and Refinement. Recursion is a stretch goal but if you're going to
the maths, you need to do this.

Formalisms in logic matter a lot. Early grounding helps. "or" has colloquial
meaning but specific intent in an expression. So things like operator-order-
precedence become important, which stem from maths/arithmetic understanding of
intent in an expression.

If people learned the distinction between functional and imperative, early,
its possible we could all be uplifted to the FP future we need to be in. I'm a
victim of coming into this late, with inability to grok onto some key
concepts.

I find most competent ICT people touch type, with some near accuracy. Its not
that hunt-and-peck won't work, but if you can acquire the muscle memory to
write your mind without having to look at your fingers, things get better.

ICT is like music. Learning to play the violin is tedious and painful. But the
outcome is worth it.

Once you are infected by the meme of recursion, life takes on a new meaning.
No Pooh, thats not honey, thats...

~~~
AnimalMuppet
The FP future we all need to be in? Objection, your honor. Assumes facts not
in evidence.

~~~
ggm
Objection overruled. We're a Bible fearing nation. The Bible says form follows
functions()

------
qwerty456127
Finding videos to learn from on YouTube. Everything (including how to discover
and use other kinds of resources) is taught the best way there already.
Chances to find a teacher able to explain the things better than people do on
YouTube are negligible.

The whole job a school is to do nowadays is to motivate, answer specific
questions and connect young people.

I really don't understand why are kids supposed to waste time with mediocre
teachers (provided they even manage to get into a tolerable school, many have
not a chance given where they live and how much do their parents earn) when
there are great educators lecturing for everybody online. The problem,
however, is many don't even know they can find great educational content on
YouTube so they only use it to watch the stupid stuff.

------
zepearl
Whatever you end up teaching, try to motivate them by basing your classes on
interesting usecases (for both you & and your students).

For example let them try to break server-SW (by e.g. allowing the input of a
value higher than 254 when the server uses uint8), make them debug the
training values of an interesting backpropagation neural network (e.g. little
red riding hood inputs related to the Wolf) when a single training set does
not comply to the rest, give them a garbled and/or partially conflicting
and/or partially wrong (from the point of view of continuity and future
stability of the business) "business requirement" and let them decide if to
come to you to ask for clarifications, etc... . It could be cool :)

------
lovasoa
Here are a few points I think should be taught in high school :

\- What a file and a file system are

\- How text, image, video, sound and other kind of data is encoded and stored
on computers

\- What a database is, and how is real-world information modeled and
structured inside a database

\- What a network protocol is.

\- What HTTP and HTTPS are in particular.

\- What the web is.

\- What a web browser is and what are the principles behind how it works.

\- What encryption is and what are the broad mathematical principles behind
it.

\- What a computer program and an operating system are, and how they work.

\- What a programming language is.

\- What machine learning is, what it can and cannot do (not sure about this
one...)

I having a firm grasp of these concepts would allow pupils to understand
better the world they live in, give them better opportunities later, and make
them more immune to modern-day hucksters.

------
imdsm
Not entirely ICT but I wish my school taught me:

\- Engineering

\- Flight dynamics

\- Systems theory

\- Useful mathematics

\- How to lift heavy items properly

\- How to make a cup of tea properly

\- Sword fighting

But to be more on topic, I think ICT was completely off the mark in high
school 01-06 in the UK, it focused on Microsoft Office suite and, well, that
was about it.

~~~
arethuza
I don't know about the rest of the UK but Scotland (which has its own separate
education system) has had Computer Science courses in schools for a while now:

[https://www.sqa.org.uk/sqa/48486.html](https://www.sqa.org.uk/sqa/48486.html)

------
Straw
How to recognize misleading information and tactics in advertising,
statistics, claims of all kinds.

So much hype in the area, and people don't have the training to cut through
it. For example, the rocket.ai experiment.

------
hackermailman
There is already free course materials
[https://www.bootstrapworld.org](https://www.bootstrapworld.org) and no access
to a computer needed, which is usually impossible for schools to spend money
on/have decent internet. Bootstrap does things like secretly teach calculus
when students have to keep track of events in a game, and it's backed by
statistical research so has proven results instead of just winging it and
discovering your curriculum has failed half the students.

Brian Kernighan also has a book
[https://press.princeton.edu/books/hardcover/9780691176543/un...](https://press.princeton.edu/books/hardcover/9780691176543/understanding-
the-digital-world) which covers all modern communications tech from the ground
up he teaches at Princeton in a class that any highschool kid could follow but
then you'd need to buy the books, unless you can work out some kind of
educator's deal with Princeton to hand out copies.

Edit: this is what the course looks like
[https://www.cs.princeton.edu/courses/archive/fall18/cos109/](https://www.cs.princeton.edu/courses/archive/fall18/cos109/)
and if you want a book sample see the library genesis pdf, it's probably
exactly what you're looking for just not nearly as rigorous as Bootstrap
curriculum.

------
motohagiography
Start with the question, what are we educating them to become? I'm more on the
side of recognizing daily problems in terms of general information theory
concepts. Sorting, Bayesian probabilities, graphs, abstraction, iteration and
recursion, data visualization examples and techniques, logical reasoning
(conditionals, contrapositive case, LSAT level stuff), privacy & security, and
then maybe to write some basic functional programs to solve real world
problems using a social network graph.

------
clashmeifyoucan
I just finished high school this year so I do have a few opinions. Our CS
course was outdated, we learnt Turbo C++ ffs and I had a hard time doing that
since I personally use the standard C++ or Python for all my projects.

Logical thinking is a very underrated skill in school. Not just in CS but also
in other subjects like Math. If the syllabus were structured such that the
student got more autonomy as well as a need to learn how to Google stuff on
their own, I feel that would make for a kickass CS class.

------
yummypaint
Rather than suggest topics, I wanted to push project based learning as a way
to teach the curriculum. Most work in the "real world" tends to be closer to
projects than problem sets. Almost everything of value i got from high school
was associated with getting engrossed in class projects. You dont have to
define things to be hyper focused, for example i got a ton of experience with
CAD modeling from an english project. This pedagogy pairs very well with
teaching engineerin.

------
probinso
I think that you have a decision to make. you can either teach computer
science for computer scientists or computer science for everyone else.

If you want to teach computer science for computer scientists then do a
fundamentals course that touches on technologies you find interesting. This
will include algorithms, you would not be restricted on your choice of
language to what is used in industry, this may include simple websites, this
may include calculators and bookkeeping. I really like Ada and scheme as
introductory languages for computer scientists. Text based adventure games are
a very good way to teach computer science fundamentals.

The other option is designing a year-long curriculum for community impact
through technology. Have students design a project that will take them through
the year. this project should be sourced from their community and based on
community benefit as a goal. Teach only using simple languages and conform to
frameworks that will most easily leverage you towards them releasing a product
by the end of the year. Don't focus on it being pretty, just focus on it being
functional. This will likely be a stack of python and JavaScript and SQL oh,
but there are good arguments for a lot of other types of stacks.

One of my favorite problems that overlaps these two topics is having students
write a search engine. Search engines can become arbitrarily difficult, but in
their simplest form or very easy.search engines usually have some data
structure and text parsing and user experience sections to it that can help
provide a framework for future projects that are more complicated

------
josiahpeters
Networking fundamentals.

I was very blessed to take a two year Cisco CCNA prep class in highschool. I
learned about the seven layers of the OSI model, subnets, routing, dns, and
all sorts of practical things. These networking concepts have helped me out
significantly when creating distributed microservices in a self service cloud
hosted SaaS startup.

Watching my peers have to play catch up, helps me understand how valuable
those classes were. I wish I would have paid more attention in them.

------
mullikine
I would love to be in your position -- must be exciting.

I think its important to communicate a high level overview of subtopics in
computer science, where they came from and where they are going.

Give them a lot to think about and get them excited and they will learn on
their own.

Allow them to research some area and get back to you and grade on the amount
of effort in their self study.

Important topics:

\- cryptography

    
    
      ciphers in ancient warfare -> blockchain
    

\- programming

    
    
      binary -> python -> functional/query/declarative programming
    
      Teach advanced google search syntax, SQL maybe and a scripting language such as javascript or python and regex for advanced students.
    
      Lots of room for filling the course with practical stuff.
    

\- AI

    
    
      Get the computer to think for us so we don't have to, like getting the student to learn on their own so you dont have to.
    
      I would put something about AI in each section.
    
      - Cryptography
        AI's objective is to find models and patterns (i.e. disclose secrets).
        Cryptography creates secrets, defines new structure.
      - Programming
        Ultimately NLP encapsulates formal programming since a language model's objective is to discover a language inside some data. That is where it's headed in the near future.

------
enhdless
As a college student from a high school that had multiple classes related to
Java/infotech - I think this is a case where you definitely want to cover
breadth over depth. In high school everyone has different skills and
interests. Some will already be set on CS while others are have the mindset
like "anything related to the word tech is scary and I won't be able to do
it." In general I think catering to this diversity will be the most difficult
part.

\- Learning to make a barebones HTML/CSS webpage would be super relevant (and
in conjunction, learn about how web browsers work).

\- Someone in this thread mentioned file systems, and this may seem basic to
the HN crowd but I agree - right now in college I'm teaching an intro web
design course and I was surprised to find that the most common hurdle is
probably filepaths!

\- For teaching CS/programming related things, definitely do it in a way that
makes it applicable to anyone - for example, basic "data science" projects
like using Python to read/process spreadsheets of data could be used in nearly
any field of study in the future, no matter what the student is interested in.

\- Also, if you have the budget, I would even recommend getting a few Arduino
kits to show what it's like to blink an LED! It can be a very simple demo for
students who have never touched electronics, and more experienced students can
try other blinking patterns or electronics components.

Generally projects like these demo something cool and practical to expose
basic concepts, while having many possible avenues of enrichment for students
who might be more advanced.

------
kritr
If we were talking about a course for Computer Science.

Having recently graduated from a high school and currently pursuing my
undergrad degree in CS, I think I might be able to offer some degree of
insight into pain points people generally faced when starting their college CS
degree, and how well high school prepared them for that.

Most of my peers have taken an Intro to CS-A class, which basically went into
the AP Java curriculum.

A lot of the struggles I've seen people have when entering CS is struggle in
setting up their environments, understanding how the software pieces fit
together, and also having the know how to explore beyond the basic coding
concepts and actually being able to apply what they've learned to work on a
project.

I think a lot of high school Intro to CS classes focus on high level coding
concepts (loops / classes / etc) and then some very basic algorithms.

I think actually setting up an environment from scratch (beyond just a basic
IDE), like introducing students to the terminal and teaching them how to get
around, and then teaching them how to install the software they need to start
programming would be incredibly valuable.

For a general information technology class, I think having the history of
computing would be nice. Potentially it covers foundations of being able to
understand what is a computer device, what sort of things can it do, (load
store memory, perform operations, and interface with other items). Then also
going over how the internet and other computer concepts work from a high
level. And maybe towards the end provide more insight into new computing ideas
that are being developed (VR/AI/etc).

------
ilaksh
A few ideas:

* assuming they have computers with the internet, you may try to integrate some online self-paced web-based interactive training. This will leverage massive existing efforts.

* ideally there could be multiple tracks/programs in the same class for people at different levels or interests. this is much more practical if you have some way to do self-paced learning

* you might include something like Slack or Discord or some online site briefly. unless this category is something kids are already experts on

* spreadsheets and word processing seem very important and maybe are the mandatory part you try to get everyone through

* programming, AI and/or robotics would be nice to include some self-paced exercises for an advanced optional track. Again, lots of websites for this stuff.

* Many kids are interested in streaming. "How to get started on Twitch"

* "How to Google" [https://www.google.com/amp/s/amp.businessinsider.com/how-to-...](https://www.google.com/amp/s/amp.businessinsider.com/how-to-google-like-a-pro-tricks-tips-best-results-2019-11)

* 3D modeling, basic video editing, Adobe stuff (websites/Blender)

I guess my answer is, ideally, Everything, self-paced or maybe small-group-
paced. Maybe hard to do that, but I think if they are allowed to self-direct
to some extent and have different options then they will get much more out of
it. Maybe everyone does WP/spreadsheets or whatever basic stuff and then they
have to pick a secondary track once they get through that.

------
dlkf
It's awesome that you're doing this. The inclusion of more people with a CS
background in education (and public service more generally) is a huge
opportunity for our society.

I think Iv makes some dynamite points:

> we need but more people with a solid general culture about computing:

> What's the internet? where is the cloud? Where are data stored? How do they
> pass around?

> What's a computer? A smartphone? Where is data stored? Where is computing
> happening?

In addition, I would try and give your students a flavour for what logic and
discrete math are about.

\- Basic boolean logic and applications to natural language problems

\- For students that are inspired by this, maybe some first order logic, or a
classic puzzle or two (Hilbert's Hotel or Russell's paradox)

Finally, I would try and incorporate some applied statistics. There are so
many critical statistical concepts that are introduced via calculus (and
therefore lost on 90% of the class) that could be introduced in a more
concrete manner and have more impact. Examples that come to mind are:

\- How bell curves arise in nature

\- How power-law distributions arise in language data

\- How pareto distributions arise in time-to-event scenarios

------
WhompingWindows
Some fun/gripping ideas for single-class activities:

-Google-fu: everyone needs to know how to find what they need, maybe you can challenge them to go on a google scavenger hunt and find a ton of random answers in a limited time-frame?

-Wikipedia golf: how quickly can you go from page A to page B? Least clicks wins. you can pick a topic they know about, maybe minecraft or star wars or something popular, and then pick an interesting article you might want them to check out, like the Dot Com bubble or Y2K or the google AI bots vs. video games?

-Data analysis: pick your data, could be sports or YT views or retweets, or even from surveys in the class; then teach them R or Python to make some charts/visualizations of their favorite data.

-Video games: no beating around the bush here, kids love games, mobile and desktop and console. How can you harness that passion and transfer it into Info and Comm tech? -Online posting/trolling: there should be a class period where you look at online bullying, what are the repercussions, this could hit home for many kids.

Good luck, sounds fun!

------
taintur
In that grade level I would've liked a course which would dissolve the "magic"
behind computers and other technology, akin to the nand2tetris course
([https://www.nand2tetris.org/](https://www.nand2tetris.org/)). The topic
could be anything, though, such as websites, wireless communications or online
advertising.

Scripting or macros would also be immensely useful for anybody nowadays.
Computers should be making everyone's lives easier. A nice example of this
would be the Automate the Boring Stuff with Python
([https://automatetheboringstuff.com/](https://automatetheboringstuff.com/)).
It would also be a more meaningful introduction to programming than learning
how to program the hangman game.

These two examples might be a bit difficult for all of the students of that
age, but I'm sure that at least some inspiration could be drawn from them.

------
gigatexal
The basics: math, history, English, Writing, another language as well as an
elective (there’s a whole world out there outside of the USA and knowing
another language and learning about other cultures makes for more well rounded
empathetic people), music also as an elective. In addition to the previous
topics high school students should be taught how to budget their money, basic
investments, what goes into buying a home, and what options exist for higher
education. So if they choose to go to college explain how it works (I was a
first generation college graduate and spent a lot of time and wasted a lot of
money just taking random courses I liked instead of focusing on my major and
graduating), or if they choose, after being told it’s an option, about trade
schools and professions like becoming an expert electrician or a plumber or
carpenter etc they can then weigh the costs of both avenues and decide for
themselves.

~~~
indigochill
I agree with your language parenthetical, but speaking for myself at least, my
elective language course did not have this effect on me (at least that I
noticed). It was actually traveling to a different country (In my case, the UK
in high school, then China in college) which opened my eyes to all the
assumptions I didn't even know I had.

------
kd5bjo
I’d lean towards practically-useful skills that computers can help with:

— Collaboration tools: how to effectively use shared spreadsheets, documents,
and online communication to organize a large project

— Spaced repetition to aid memory

— Organizing / cataloguing personal collections

— Learning how to do something new from online resources (finding and applying
video or written tutorials)

------
q-base
It is probably a stretch to keep it within "Information and Communications
Technology" but when I think about what should be taught and is not, then I
cannot help but think "tools"/mindsets on how to be and act in the fast paced
world we have today.

Tying it somewhat to your subject I would probably teach students that if
something is free, then you are the product. Teach them about dark patterns to
counter and be aware when someone is trying to manipulate them. Teach them
about the "attention-/click- economy". Things they can use outside of the
classroom or professional career. Things that help them in all facets of life.

I would also be a strong proponent of "practical philosophy" for lack of
better name. Learn how to think, how to spot when others are trying to
manipulate you, learn that nothing is free, etc. etc. etc.

------
jimhefferon
I'm a college professor who teaches the courses in the border between math and
computing. Lots of good suggestions here about subjects. I have a methodology
suggestion. Try to do active learning as much as you can. (You can look at the
MAA's recent book for a good state of the art summary.)

~~~
mrtb
Which MAA book are you referring to?

~~~
ivan_ah
I looked around and found this guide by MAA: [https://www.maa.org/programs-
and-communities/curriculum%20re...](https://www.maa.org/programs-and-
communities/curriculum%20resources/instructional-practices-guide) It's not
specifically active learning, but has lots of good classroom tips.

I also found this blog post series:
[https://blogs.ams.org/matheducation/tag/active-learning-
seri...](https://blogs.ams.org/matheducation/tag/active-learning-series-2015/)

------
davismwfl
My son graduated a couple years ago from a larger high school but they had a
IT & Robotics program he attended that was really good. While you probably
won't have as much freedom as they did when developing that specific program
you might be able to get some ideas from them. The teachers and admins
involved are really good people and I am sure if you reached out they would
gladly send you some details. You can find some info for them here:
[http://www.creekaitr.com/](http://www.creekaitr.com/) There is contact (email
etc) on that page which would get you directly to the right people.

Good luck, I think this is awesome. I would also echo teaching a real
spreadsheet class would be an awesome idea as there is so many issues you can
solve using spreadsheets.

------
reilly3000
SQL is surprisingly easy to teach to young people. Give them a simple table
with info that's relevant to them, and help them discover how to filter and
aggregate. I think that is more valuable for people to understand and have in
hand than statistics; its a gateway drug to analytical thinking.

~~~
TJSomething
Even though it's not the best SQL database, Access is a really good force
multiplier if you're in a locked down office and all you have is Office.

------
inate77
When I was in high school 92-96 I had taken 4 yrs of CAD/CAM/CNC. At that time
we were already more advance than the community college next door. In 96 after
graduating high school I had decided to go to DeVry Institute of Technology. I
was shocked to see that they were still using windows 3.0. Testing out was not
an option at that time, but I couldn't see waisting money on something that I
was already far beyond in regards in to current OS at the time. I think it's
very important that if schools are gonna teach tech that it be with what is
current as times are quickly changing. I would like to see more stuff being
doing with 3D printing and lasers, app creation, website building, and
possibly game developing.

------
uberman
This looks like a good resource to start with:

[https://www.csd.cs.cmu.edu/news/carnegie-mellon-launches-
hig...](https://www.csd.cs.cmu.edu/news/carnegie-mellon-launches-high-school-
computer-science-curriculum)

------
fg6hr
Distributed systems and ML, I would say. This is if you want to land a solid
job, assuming you have the right mindset. Some mentioned here video games, but
that industry is far from lucrative. There are a lot of interesting things to
learn in CS, but very few of them will make you money. P.S. Math proofs.
Learning what it takes to prove a moderately complex theorem makes a far
bigger impact than learning how to program a video game engine. Math teaches
how to build highly complex, but reliable, imaginary structures from nothing,
by introducing axioms and building up on them using logic - a skill that
distinguishes good software engineers from mediocre ones.

------
throwaway6734
Checkout Mindstorms by Seymour Papert for some inspiration

[http://worrydream.com/refs/Papert%20-%20Mindstorms%201st%20e...](http://worrydream.com/refs/Papert%20-%20Mindstorms%201st%20ed.pdf)

------
JaDogg
How to use a search engine. Looking for file types, searching stuff in single
site, ...

------
peterwwillis
How computer programs work in operating systems. What is I/O, virtual memory,
how does a filesystem work, what are software libraries, system calls, IPC,
TCP/IP, authentication and authorization, how do kernel drivers work, how do
programs and operating systems store settings, etc. Later, how web
applications, smartphone apps, databases, encryption work.

The purpose is to be able to reason about how computers work in general. It's
similar to teaching people how cars or plumbing works; they may not be able to
build it, but they could conceivably troubleshoot and attempt to repair it,
and it makes tech jobs easier.

------
madhadron
This might seem a strange recommendation, but...

Excel and then VBA macros for Excel, or the equivalent in LibreOffice. Use it
to do some useful things. Make a budget, calculate the three basic financial
statements, simulate some basic processes like exponential growth and
predator/prey. Then VBA to do some basic iterating over strings and other
similar things. Write a little text mode adventure game. You could even use
Word for that and have it print the transcript as you go along.

Then the basics of networking. Set up a little LAN, difference between router
and switch, get Bonjour/ZeroConf working across some number of hops.

~~~
zhte415
I'd also agree with Excel... it works on many levels and allows incremental
progression.

Some ideas: Many audiences. Some might want to get exposure to programming,
some might have developer as a career option, and some might want neither but
would still find a lot very useful.

Excel as a numbers tool: Recording data, simple automation (cells with
formulas), concepts like normalisation. Extending this as a financial tool, or
analysis tool.

Applications, that might fit those going to college or those going into the
workplace: Routine tasks that need data recorded or analysis. Book
keeping/double entry accounting. Applications in other subjects (biology,
physics, economics, even English e.g. parsing text).

Excel/data as a communication tool: Analysis of data, visualisation (introduce
some Tufte perhaps), objectivity, include in other applications.

Excel/VBA as a stepping-stone to programming. A nice feature of Excel is that
it excels in allowing the same problem to be solved in multiple ways. So
perhaps a stream of the class for programming concepts (VBA, later Python/R?)
while another stream takes applied assignments (individual/group) using
Excel's in-built functions?

Version control, however primitive.

Ethics, information security, data protection laws, tax laws in all the above?

LibreOffice could be used in the above too.

------
ch47a
Propaganda Analysis! See
[https://en.wikipedia.org/wiki/Institute_for_Propaganda_Analy...](https://en.wikipedia.org/wiki/Institute_for_Propaganda_Analysis)

------
zoom6628
Meditation should be mandatory class. Benficial to health, education, sports
and state of mind in all endeavours. It's almost the universal 'tool' that
every child should have to apply to any situation.

------
ch47a
Propaganda Analysis! This was very important in my debate years in school. It
continues to be important! See: [https://psychologydictionary.org/propaganda-
analysis/](https://psychologydictionary.org/propaganda-analysis/)
[https://web.stanford.edu/class/e297c/war_peace/media/hpropag...](https://web.stanford.edu/class/e297c/war_peace/media/hpropaganda.html)

------
stjohnswarts
I suggest looking at what is expected on the AP Computer Science test. I
personally feel that something like programming python in a jupyter notebook
is a good free open source place to start for programming. Teach students how
to properly use search in google and duckduckgo. Introduce them to linux on a
virtual machine. Have a section on how important security and privacy are to
get them thinking about it. You also didn't mention how many credits this
would be 1 class or 3 classes makes a big difference.

------
namelosw
High-level interpreted languages that are not strongly coupled with the
computer itself, eg: Scheme. Python is also very good but the control flow and
statements leak something under the abstraction layer.

The goal is to teach how to thinking in computation (not computer) and be able
to finish common tasks as excel and SQL can do. And also be able to write a
small website if the students want to take a quick look at the documentation.

Anything associated more with current 'Von Neumann' computers (eg: C) should
be taught to CS students.

------
tmaly
Scratch is a great way to start teaching computational thought.

The visual nature of sprites on a stage with code blocks helps to bridge the
abstraction beginners face.

The ability to open up many well made clone games and explore the code is one
of my favorite features of the platform.

Since version 3 launched last year, there have been a whole host of extensions
like Lego, micro:bit, google translate, aws text to speech, and a few more.

I have been working on a course for younger elementary kids, but there is
plenty there for older kids in high school.

------
balabaster
Computer security... I don't know how feasible this is, but it sure would've
inspired me a lot more at high school than the curriculum we had. As a
student, I want inspiration, I want magic. I want to feel excitement and to
feel alive. I want something that draws me in and lights me up.

Set up two sets of computers in your computer lab as separate networks. Divide
your class into two teams. One team are the security administrators for one
network. The other for the other network.

Teach your class about hacking techniques to bypass the security of each
other's networks. Teach them also the techniques used to lock down their
networks and analyze intrusions/attempts to prevent further hacks.

Give them access to resources to learn about defense and offense in a safe
closed environment.

End of year assignment - capture the flag. Teach them about information
security warfare. Make it a game, a competition and pit them against each
other.

In today's technology environment, information warfare is prevalent and it
will only become more so as time goes on. These skills will become more and
more important across all aspects of ICT, from systems and network
administration to DevOps to back end systems and public web development. There
is no aspect of today's I.T. environment where security is not of critical
importance.

The biggest thing you can do to inspire the developers of tomorrow is find a
way to inspire fascination with computers. Kids, teenagers, hell, most adults
want some magic in their lives.

Find a way to make it magic. Teach them about some of the greatest hacks of
all time, what inspired them, how they were achieved, what happened to the
perpetrator, whether history showed them to be on the right or wrong side of
both the law and morality. Teach them about hacker mentality, black hat and
white hat. From Mitnick to McKinnon, Schwartz and Snowden, their motivations,
the results and the repercussions of their actions.

My feeling is that the greatest role (and admittedly this is only my opinion
and it doesn't mean a lot given my one semester of teaching 25 years ago) you
can provide as a high school teacher isn't necessarily the technical detail
you provide, but the magic that will inspire the student to take their
learning at their own initiative and thrive on their own.

------
sunw
Learning techniques (the popular “Learning How To Learn” online course is a
great general curriculum for this) and understanding/recognizing logical
fallacies.

------
abecedarius
[https://programbydesign.org/](https://programbydesign.org/) seems like a good
place to start looking.

------
neysofu
How to pay taxes! I recently graduated and I have no idea whatsoever of what
I'm doing. I'm starting to suspect most people don't.

------
sifar
Some of these overlap with what others have suggested.

0a) Build a simple video game.

0b) Implement a simple encryption scheme (eg. ROT) to exchange messages.

1) History of computing. Not just the superficial but how it was, how we got
here. Turing's ACE & Neumanns EDVAC report.

2) Interest rate computation. Modeling loans.

3) Forth programming language.

4) Data privacy. How user data is tracked, manipulated and financialized.

5) How computing systems are insecure and not to trust them blindly.

------
mtreis86
What is actually going on in the world. I am very grateful my tech teacher in
high school always started class with ten minutes of discussion about current
events. Some of the time he would bring in a newspaper and for a headline,
other times he had some other idea in mind. Much of the discussion was about
our thoughts on the subject though, not just a recounting of the events.

------
crawfordcomeaux
Applied Category Theory and how to apply it in daily life. Science of
Spirituality. Advanced Mediation Techniques. Advanced Meditation Techniques.
Well-being. Mindfulness. Learning how to learn. Science of Culture Hacking.
Defense against the dark arts of cultural programming. Uncertainty logics.
Comedic improvisation. Problem-solving improvisation. Musical improvisation.

------
kexx
-how to be an educated consumer -how to buy/sell house/car, other basic contracts and understanding them (nda, work contract, t&c) -sexual education without any moral bs, just facts -how to recognizing symptoms of common diseases -basic civics and legal training -read a book, see a painting, tell me your opinion about it, instead learn what scolars think

------
Jemm
Teach your students the relevance of things, rather than making them memorize.

For instance, so many technical courses start with a history of the people who
shaped the field and whose name is on the laws and principle. This is boring
beyond words and loses most students right away. Instead teach in a way that
allows the students to discover the rules and principle through example.

------
nestorherre
Give or Take some stuff mentioned in here: [https://notes-
txt.com/curriculum.html](https://notes-txt.com/curriculum.html)

To sum it up: soft skills, social skills, leadership skills, meta-skills and
abilities to help you deal with life.

While these aren't related to IT, they help you in any knowledge area
(including and not limited to IT).

------
i_am_viet
Philosophy. Specifically logic. Have to build a strong foundation in the
basics before considering going into the more modern materials.

------
tempguy9999
I don't know if this is what you're asking but I'll reply from a different
perspective, as many here are giving excellent technical responses.

Tech of any sort is a tool, just like a hammer or screwdriver, but more
complex. It is _only_ a _tool_.

A tool's value is in it's use, not its existence. Having the very latest high-
end computer or flattest laptop is worthless unless you use it (then watch 95%
of them ignore it, because Teh Shiny!).

The collection/distribution of data is power. That power may be benign but
usually isn't... Teach them to understand how it can be misused (in fact tell
them to imagine they were head of FB and ask them to abuse user's data) so
they have some idea of when that misuse involves them. They can then _maybe_
evaluate the worth of social media a bit better (not to put any of them off
social media, just give them better understanding so they can suss the
cost/benefit).

Tech as a tool has consequences. There are ethical implications in developing
software/hardware for eg. use by oppressive governments. You can't make their
moral decisions, nor should you, but you can tell them they must consider the
consequences before accepting work[0]

Tech's sophistication, both in use (browsing the web) or its creation
(programming is a wonderfully constructive activity) can be addictive. Don't
let it destroy your social life. Also if you're having a less-than-delightful
childhood/life, it can become an escape (but not a good one. Experience
talking here).

The creation of an internally beautiful program gives no indication of its
worth to the world. Therefore teach them to make business decisions before
starting to do the technical stuff - is it intended to be of worth just to
them? OK, it's a bit of fun. Is it intended to be open source and "blow people
away"? Make sure there's a need for it or they're wasting their time[1]

Basically, teach them the wider context.

IMO, YMMV, etc.

[0] as someone will inevitably challenge me on this, yes I do before accepting
work.

[1] I nearly got involved in some open source, then saw it being worked and
reworked at one person's whim. It was never going to succeed. I wasted a lot
of my time doing something that I later realised was not of use to anyone.
That was months utterly lost and nothing to show for it.

------
ianai
There are lots of free tutorials, documentation, and even full courses out
there. I’d probably take some of the ideas here and research the resources
available to learn them.

It’s been pointed out to me that touch typing isn’t as broadly known as I
thought it was. If your kids haven’t by grade 9, I’d set up a touch typing
course. Complete with unlabeled keyboards and all.

------
mrburton
Software Development - Especially in the inner city.

I really wish there was a way for engineers to help public schools educate
students in software development. Years ago, I offered to teach a class at my
old high school, and even _tried_ to donate $5,000 to help fund it. Not only
was it rejected, but the people working there seem not to care.

This was a school in North Philadelphia.

------
bostik
Critical thinking and media literacy.

It's become painfully clear that information and communications technology, is
used - to a disturbing degree - to facilitate propaganda. If the issue matters
at all, there are well funded parties[ß] doing everything they can to
astroturf, sockpuppet and drown out all viewpoints other than their own.

ß: some even outright political ones

------
k_sze
How about giving the students a quiz first, one that doesn't count towards the
students' grades, just to see where they stand in terms of CS/IT knowledge?
You don't want to be developing a syllabus, only to realize that it's either
much too hard or much too easy.

I call it ... Test Driven Syllabus Development. #badumtss

------
nyxtom
Mix Khan Academy, Project based learning, teams, UX (about face), agile, and
marketable skills (python, java, html, css, JavaScript for example), and
include a competitive program like AP.

To this day I had a high school computer science teacher that did these things
(minus khan academy) about 15 years ago and it had a tremendous impact on me.

------
atmosx
Can you teach how to approach, breakdown and learn a subject? Can you teach
them to take available data into consideration instead of accepting whatever
the “source of truth” will spoon feed them? Can you teach them to appreciate
truth instead of “being right”? Can you teach the to make a point without
making an enemy?

------
pabs3
There was another thread today about how the UK is making computing a
foundational part of their education system, like math or biology, it might be
interesting for you.

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

------
drngdds
Basic CS/programming. I would have loved to have the opportunity to take
something in high school comparable your average CS 101 class (and stretched
out over two semesters for sanity purposes.)

I would have gotten much more out of that than something more general or less
technical.

------
threatofrain
As a unit, students should learn the lay of the land (market niches,
institutional pathways, career expectations) and what kinds of technical
skills are expected of the pathway, especially in terms of future course
requirements.

------
thelittleone
The one thing missing from all curriculums is how operate in political
environments without losing yourself. Whilst not a technical skill, knowing
how to navigate this aspect of work allows for more sustainable productivity.

------
cjg
Shoot and edit a video and upload it to YouTube could bring in a number of
skills.

------
adrianN
How to self evaluate whether you live in a filter bubble, and what shape your
bubble has. How to consume information from outside your filter bubble. How to
find primary sources for claims and critically evaluate them.

------
vladmk
How to do your own projects that you enjoy. This is how people fall in love
with software and make huge progress. I fee textbooks when not used properly
scare kids away making them think they're unintelligent.

------
kilroy_jones
I've been a CS and ICT teacher at the high school level for over a decade now.
It really depends if this is an elective course or not.

I'd be more than happy to share experience and materials. Email is in my
profile.

------
andreskytt
How to find and evaluate information (which will help with things like filing
taxes). Systems thinking along the lines of clexchange.com that will help
integrate things and comes in very handy in software dev

------
imvetri
Schools/colleges are bad. They are just a cattle that rears young brain for
business growth.

Food cloth shelter is the basic necessities. Everything else is another man's
trickery to put you in trouble.

------
sn9
_How to Design Programs_ :
[https://htdp.org/2019-02-24/part_preface.html](https://htdp.org/2019-02-24/part_preface.html)

------
scythe
Many people mentioned spreadsheets, but usually Excel -- consider Google
Sheets or some other free app since most people don't need to pay for Excel
for what they'll be doing.

~~~
ianai
I’ve seen excel named on job descriptions for decades. No OSS or alternative
to Office has ever had that demand.

~~~
scythe
Most people won’t get jobs using Excel — the impetus seemed to be personal
use, like budgeting or organizing a project. If you can use one spreadsheet
app you’ll probably have an easier time figuring out another.

------
Tepix
Perhaps latency of different types of computer storage

i.e. an updated version of [https://imgur.com/k0t1e](https://imgur.com/k0t1e)

------
NiloCK
Blanket thanks to everyone who responded. It'll be May or June before I have
any certainty on this, and September before I get to work. I'll post an update
:)

------
andydavieswork
How to build a very simple web app, using Spring Boot, React, a Redis Cluster,
with a scalable microservices AWS Lambda-based back-end architecture. And
kubernetes.

~~~
jtms
Omg so simple

------
thefabs
I would just say, keep it practical. Explain how real life stuff works that
the students are already using, such as apps on an iPhone or streaming on
Netflix.

------
lazyjones
\- seeking help from other people

\- understanding other people's solutions

\- optimizing for less complexity and more clarity

\- differences between academic/nonprofessional and professional environments

------
Madmallard
100% social skills and assertiveness. Everyone should be helped to a level
playing field there as much as possible and as soon as possible.

------
sesuximo
you might just offer to help with/review student projects. I think some young
would-be engineers have ideas but don't know how to make them happen. you
won't have as big an audience as a class, but you'll get motivated people.

I think teaching basic CS topics in a classroom is very tough since the
students are rarely on the same level no matter how early you start.

------
watertom
Formal logic and reasoning.

Probably the best thing you could teach any student. Of course it’s applicable
to CS, but it’s also applicable to life.

------
werber
I would listen to what they want to build and cater the curriculum to that.
Make it democratic and cutting edge and personalized.

------
fredgrott
How to research, mainly how do we use logic and reasoning to decipher
information into buckets of facts, opinions and garbage?

------
Yhippa
If you have to teach programming I would consider focusing on a 3GL (like
BASIC) instead of a 4GL (like Java).

~~~
NiloCK
Off the top of my head:

Benefits: \- Working in a dead ecosystem reduces the risk of bleeding-edge
fomo (see web-dev) \- Prior generation tooling has fewer layers of abstraction
\- Imperative paradigm easier to groc than, eg, OO perspective

Costs: \- Less able to exploit current trending topics \- Teenagers are very
fashion conscious - they may reject the 'dated' language as irrelevant

Could you tell me more about why you like this?

------
Tycho
Regex SQL Excel HTML

I think those things are very practically useful and good starting points to
introduce deeper topics.

------
ssss11
Basic finances to manage your life.

------
madiathomas
\- Basic IT Security \- How to research online \- PC Assembling \- Installing
Operating Systems

------
badrabbit
Critical thinking as well as private and secure usage of the internet and
smart devices.

------
allard
How to write a good help desk ticket. (preferably a few grades before high
school)

------
silverreads
how to store info, how to document info, how to use info.

basic datatypes in common languages and databases, document webs structures
(the web, wikis, helpdesk knowledgebases, hypercard), basic macros in common
desktop tools.

------
RickJWagner
Financial skills!

Without a doubt, schools should teach how to avoid debt and how to accumulate
and invest wealth.

This information is _so_ vital. If people use money wisely, their lives can be
so much better and they can be so much more productive. I'm mystified it's not
part of the educational core.

------
jriley
Some of Mike Myers A+ videos would have helped me in high school.

------
stevefan1999
Lambda calculus. This is the precursor to functional programming.

------
wly_cdgr
Math. Anything math that you can frame as being relevant.

------
antipaul
History of AI, for perspective.

CS + Liberal Arts is a powerful combination

------
algaeontoast
Statistics and solid math / logic fundamentals.

------
cvaidya1986
Deep Learning. iOS and or Android app development. Design principles. Finance
and risk analysis. Ideation to launching an app and iterating on user
feedback.

------
arminiusreturns
Please teach about the origins of computing as we know it today, with special
emphasis on the free software movement and the four freedoms of computing.

------
ozim
I was from more of a "heavy programming" and "get into the maths" guy in my
20's. Now in my 30's I am more get to know philosophy, get to know humans or
humanistic stuff. Software devs, should really get to know Platonism and how
it is not applicable to real life to stop searching for those perfect
abstractions in code....

Second part is Intellectal Property rights, contracts. Non compete agreements
so no one signs those shitty agrrements.

------
caiobegotti
Ethics.

------
iyw
Drivers Education

Financial Security

Gun Education

Basic Cooking

Basic Electronics

Basic Wood and Metal working

------
n8henry
How innovation occurs

------
bananamerica
Philosophical logic.

------
julienreszka
Teach them TDD.

------
japhyr
Are you free to create an entire program, or just a course? The way I'm
reading it, I think you're able to create an entire program. If you have
decent technical support, that's an amazing opportunity.

I was looking at starting a CS program in my local high school, but I never
got the chance because someone else had tenure and just lingered for years.
But I spent a fair bit of time thinking this through. I'd consider two main
audiences: students who already know they want to go into a tech-focused
field, and everyone else. I'd make a pipeline for the first audience that
brings them to a relatively high degree of competency in programming, without
trying to replicate what they're going to see in college. Offer a foundation
course that gives them the basics of programming, just like they'd get from
reading a good intro book. Include a large number of mini-projects so they're
using things as they're learning, and a bigger capstone project. Then offer
classes focused on intermediate concepts. Then some project-focused classes -
game development, data viz, web apps, etc. Offer some non-programming classes,
such as a database class.

For students who don't already know they want to go into technical fields but
are curious, offer a softer intro to programming. The goal with this class is
to understand how code works, but not to become a programmer. Pull the veil
back from how things like Twitter and FB and Instagram are built and
maintained. Use some variables, use some lists/ arrays, use some
dicts/mappings. Students who like this and want to do more would switch over
to the more tech-focused track; students who don't want to go further should
be able to do well in this class without demonstrating programming profiency.
They need to be able to explain core concepts, but not necessarily implement
solutions in code. They would leave the class better able to collaborate with
technical co-workers in future jobs, and better able to critically assess the
impact of tech products on their lives.

Overall, it would be really good to set up some kind of structure that lets
students who love this work be able to work as fast as they want to learn. For
students who learn independently, letting them progress faster than you're
teaching a class is something most of us here at HN have appreciated when
teachers offer, and have wished for when they didn't.

I can imagine some really fun project showcase events, and projects set up
around the school. You could support students in applying their programming
skills to other academic areas: bringing scientific analysis and visualization
into science and math classes; building learning tools for foreign language
classes; mapping work for social studies classes; data analysis for global
issues in social studies classes; algorithmically-generated art...

My email is in my profile; if any of this is interesting, feel free to reach
out.

------
mettamage
As a teacher I've noticed 3 things that deterred me from learning programming
as a teenager. I already was doing it for 2 years as a hobby, but the next
point of frustration just made me quit.

1\. Social isolation

2\. Setting up the right environment (a WAMP stack back in my day) could take
me days (I had no help).

3\. Understanding that if a program crashes that you're not stupid as a
computer expects a 100% perfection in order to run. If you do it right 9 times
but screw it up the 10th time, your program won't run if you need to type in
10 things. Teach them how to fix these mistakes and that making these mistakes
is fine. When I taught at a coding school, I'd make these mistakes in front of
them all the time and then fix them. Most of the time, I didn't do it on
purpose.

\-----

It also depends on the level you were teaching. I actually got CS in high
school and it was an elective.

If you're in this scenario then teach something practical. Preferably
something they will use in their personal lives. This is why I think web
development is a good candidate to teach them (1) web development and (2)
programming. Don't let Java or PHP be a first programming language, please.
Let it be JavaScript when combined with web development (it's visual and
practical, students will go the extra mile for practical).

I even think Python is a bit meh as a starter language as it is too
computational, to number-y, not visual enough. JS is in principle the same,
but you basically have a GUI DSL with HTML/CSS, which is why JS is a good
starting place. Moreover, you have Chrome Dev Tools right built-in to it. If
you let them debug early on with the Chrome debugger, they learn much faster
(I did anyway, I'm shocked that my programming teachers never taught me but a
fellow student did!).

Also, if you think about doing VBA, do Google AppScript from Google Sheets
instead. It has a better debugger, not great though.

\-----

So yea it depends on the level of the class. In all cases, I think a 50% focus
on CS history/context and 50% CS would be good. That history should be split
up as follows:

1) 50% Programming history

..1A) 50% Programming language ideas -- note: 50% of 1)

..1B) 50% People like Alan Turing

2) 50% What world do we live in today?

..2A) 50% See Iv his comment.

..2B) 50% Hacker Culture (Atari, Steve Jobs, a recent submission on Warez
culture was on HN)

\-----

Note: these are simply ideas and a rough sketch of my first thoughts. I'm not
married to them, so if -- on the off chance -- you're completely aligned with
my thoughts, know that I'm not fully as I'd need a week to think about stuff
like this at least.

------
dmitriid
Budgeting

------
leowoo91
how to cook

------
sunnyg9494
taxes

------
donw
Both of my parents were educators, so this question is right up my alley. I
will attempt to provide suggestions that are topical to "Information and
Communications Technology".

You haven't specified the length of the curriculum, so I'm going to spitball a
bit.

I'd strongly recommend interleaving content, as to provide multiple
touchpoints on the same concept over the quarter, as opposed to the discrete
"module" approach. E.g., not a "statistics module", a "logic module", a "bias
module", but connecting them together to answer real-world questions on a
weekly-or-so cadence.

Also, I am making a big assumption here: that the goal is to prepare students
to live and work in the information age, not to teach them algorithms.

\- Essentials of statistics, focusing on what these things mean in the real
world, including examples of deception using statistics[1]. Don't dive into
the complex math -- nothing more advanced than a square root should be
necessary at this stage.

\- Recognizing bias and frame (the context provided around curated
information). Pretty much any news from a major news source is flagrantly
biased these days, and you can look to literature and history for more subtle
examples.

Would recommend looking at information from multiple sources and angles,
although take care to keep discussions civil and focused on "what are the
biases here?" rather than "which side do you agree with".

\- An overview of what programming is and how it works. I'd recommend Python
or Ruby, and focus on students building simple CLI tools to help them complete
their coursework. No IDEs -- they should understand how the code works on its
own. Cribbing from skeletons is fine, you are teaching to get value from
automation, not to pass a Google interview. A bit of code readability would go
a long way here.

\- Fundamentals of formal logic, taught though number theory and some very
basic algebra. Start from simple proofs involving only addition, subtraction,
and sets.

\- Some time spent on the scientific method and how experiments work.
Replication, falsification, and p-hacking[2].

\- While doing the above, sneak in a bunch of micro-writing assignments and
small presentations, to help them build outward communication skills.

\- Lots of opportunities to tie in economics and personal finance as well.

You can tie each week together with a theme to explore the above concepts.
Maybe roll through history, and walk the path of development from "no math" to
our present complex world? Also gives a good opportunity to investigate biases
in historical sources, and to showcase parallel development of concepts.

Honestly, I'd be keen to help. Email in profile.

[1] [https://medium.com/@hollymathnerd/how-to-defend-yourself-
fro...](https://medium.com/@hollymathnerd/how-to-defend-yourself-from-
statistical-lies-fe0227ecc3f3)

[2]
[https://www.explainxkcd.com/wiki/index.php/882:_Significant](https://www.explainxkcd.com/wiki/index.php/882:_Significant)

------
philip142au
How to deal with shitty people

------
Nydhal
The difference between Linear vs Exponential (or non-linear more broadly).

Basic economics, Supply and Demand.

Comparative Mythology/Religion.

~~~
tw1010
Not in an "Information and Communications Technology" course

~~~
AnimalMuppet
I don't know - FP vs OO as a "comparative mythology/religion" course might be
interesting...

------
XPKBandMaidCzun
Advise against school loans. That should go toward your first home.

Enshrine attachment and family systems as basic learning, just like speech
class. Give a lay of the land in that love matters to people and family
structure / relational decisions have generational implications.

Teach how it's dysfunctional to spurn and shame the concept of love and break
the cycle we have in schadenfreude when courtship fails.

I wonder how not discussing this in our curriculum (some how) is already
detrimental to our generation (millenium, gen z?). People spend decades of
their life locked up in offices afraid to form the most valuable and
meaningful connection.

In their offices, they often even mime relationships. It's amazing how we
pride ourselves in intellect on the one hand, yet silently observe these
obvious and eerie pseudo-relations play out, against the grain of their true
intentions.

If deep down, you're secretly yearning for love, even if you pretend to be
this stoic, that's not happiness. That's going against the intuition you feel
but dare not say. I worry very deeply that it may lead to despair in later
stages of life when there is less options, cascading internalized conflicts
from the loneliness of those decades of bottled up feelings, and I want to
make sure people don't suffer because of it while they could have done
something about it.

How many of us (men and women) have given up on finding a partner to resolve
solely to being in a career, where we have a perception of control. Well, is
that someone caring for you? Is that feeling the maternal / paternal bond that
you long to have?

Career by itself isn't enough to meet our needs. I wish we did something to
emphasize finding a partner and valuing sincerity and dignifying the courtship
process and relationship life cycle.

