top | item 21660754

Ask HN: What should be taught in high school?

200 points| NiloCK | 6 years ago | reply

I'm an educator with a CS / programming background. There's a possibility that I'll be moving into the 'Information and Communications Technology' role next year at my medium sized high school (grades 9-12, ~700 students, diverse student population). My jurisdiction's curriculum in this area is not well developed, and there are no standardized tests to prepare for. I'll have an amount of freedom in deciding course content that's unusual for high school teachers.

What would HN have the modern western high school student learn with respect to "Information and Communications Technology"?

235 comments

order
[+] Iv|6 years ago|reply
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) 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.

[+] atoav|6 years ago|reply
I agree — what you usually get too little off as a kid is a decent overview. The good teachers I had e.g. in history gave me a feeling for what even existed and what it meant. The bad teachers made us learn some really elaborate detail, without showing us what it was used for or how it fitted the bigger picture (chemistry, and sadly, maths).

So I agree with the points made by the parent above. Additionally it can be quite good if you manage to take their fear of something e.g. the command line (as a gateway to programming), or some simple code.

They shouldn’t be able to perfectly use all these things afterwards, but they should know they exist, know where to read more, and have a feeling which problems it could solve for them.

I think in times where all the kids are growing up with glowing touch-rectangles that hide file systems etc, giving them a little feeling that there is more is important.

The worst you can do is showing them some useless usecase that their glowing touch-rectangle can do better, faster and easier.

Remember: education is when you change how people see the world, not when you change what they can do.

[+] ShteiLoups|6 years ago|reply
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.

[+] nvarsj|6 years ago|reply
I don't really agree with a lowest common denominator approach to teaching. Expose kids to algorithms (how to shuffle cards, how to sort cards), expose kids to basics of programming (ScratchJr, LOGO), and so on. The basics never go obsolete. The kids who have a knack for it will love it and go on to learn more. The kids who don't will at least get some basic idea of what these things are.
[+] rodolphoarruda|6 years ago|reply
My daughter asked me the other day what a file was. She is 9 y.o. now. I tried to explain the best way I could making reference to a living cell, but she didn't know what a cell was either. After some time she finally got the concept and felt genuinely thrilled about it. I thought: what a good starting point for explanations about anything related to computing.
[+] elliekelly|6 years ago|reply
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”.

[+] swiley|6 years ago|reply
I wish people talked about the relationship between logic and math in high school. No one told me that math is really an extension of logic until I got to college (or if they did I ignored them.) Once you realize that you realize how unimportant the application actually is and the whole subject starts to make sense (at least to me.)
[+] madiathomas|6 years ago|reply
> 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.

[+] dyukqu|6 years ago|reply
> as a woman I was always better with words than numbers

As a man and a mechanical engineer, I was and still am way better with words than numbers and I think it's perfectly OK. Heck, I almost hate numbers and symbols without (the explanatory) words/paragraphs. I struggled at classes throughout all my years as a student since almost every topic in engineering is "applied", hence without a rigorous (theoretical) background and so much example/case based.

I wonder if it has something to do with how one's memory works. Isn't it easier for everyone to remember/visualize concepts and then deriving the formula than trying to remember the exact formula? (Writing this down, I imagine the people who do the former are better with words as the ones who do the latter are better with numbers). The derivation of equations governing the Hagen–Poiseuille flow is a good example, I presume[0].

[0]https://en.wikipedia.org/wiki/Hagen%E2%80%93Poiseuille_equat...

[+] drinfinity|6 years ago|reply
> as a women

Sexist.

[+] gus_massa|6 years ago|reply
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.

[+] ronyeh|6 years ago|reply
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....

[+] mads|6 years ago|reply
That would have been super useful to me. I am not in America, but in the country, where I am staying, letters from the tax office is always a source of some sort of anxiety because I simply don't understand the numbers and the consequences of what they are writing to me.

Probably too late for me now. I hired an accountant a few years ago, but I would like to be on top of that stuff myself.

Funny how I can build complicated big data analysis tools, but when I am presented with a single page of tax numbers, I just shut down. I have often thought if there is some sort of medical term to describe this thing.

[+] conductr|6 years ago|reply
You’d be surprised by the number of Finance college grads that have low spreadsheet skills. I imagine it’s similar to how CS students graduate not knowing how to program.
[+] celticmusic|6 years ago|reply
I agree with this, but I would also add a broad overview of investing, and teaching the tenets of FIRE. I'm not arguing that FIRE is the one true source, but that people should be made aware of it.
[+] RandomBacon|6 years ago|reply
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|6 years ago|reply
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

[+] baroffoos|6 years ago|reply
We had some of that in school. In English class there was a task that had an article that went something along the lines of "Aunt sues grandson over a hug" with the article body describing how she fell over due to the hug and broke her arm and is now suing the grandson over it saying he was irresponsible. We were then ask to analyse the article. On the next page was another article about the same event but this time it went in to the details that the only reason the Aunt was suing the grandson was because it would allow insurance to pay for her medical fees and would not negatively impact the grandson.

It was a pretty eye opening task showing how 2 articles which both report only the truth can be twisted to bring about different stories/emotions.

[+] capkutay|6 years ago|reply
how do you teach a teenager to 'not take things at face value' without inserting your own opinion about news that's fake?

'look at this fake news asserting A...this story is misleading because B is actually true'.

[+] caseymarquis|6 years ago|reply
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|6 years ago|reply
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.
[+] kartickv|6 years ago|reply
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|6 years ago|reply
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.
[+] PascLeRasc|6 years ago|reply
It'd be better to average with a second noisy signal, right? That sounds kind of like the Monte Carlo method.
[+] twblalock|6 years ago|reply
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|6 years ago|reply
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.
[+] Merrill|6 years ago|reply
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|6 years ago|reply
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.
[+] xwdv|6 years ago|reply
You hit the nail on the head. So many people today will never escape their debts or achieve financial independence because they were deprived of financial knowledge until it was too late.
[+] thundergolfer|6 years ago|reply
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.
[+] monch1962|6 years ago|reply
This. My 21 and 23yo sons have no idea how to manage their money, and it took my older daughters several years of "emergency loan from parents for food or rent" funding (always paid back) to get their finances under control.

Financial education is WAY more complex than it was 20 years ago, with many more ways for people to go wrong

[+] n8henry|6 years ago|reply
Agreed. Also, how about the various taxes you encounter as an adult (income, property, ect...)
[+] jdietrich|6 years ago|reply
Touch typing has a staggeringly high RoI for pretty much all white-collar workers.
[+] C1sc0cat|6 years ago|reply
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.

[+] muzani|6 years ago|reply
I remember when I started college, a third of the class didn't even know touch typing, or even knew what the internet really was. The internet was some mythical creature to them. This was 2005.

My first grade daughter knows how to draw well but can't use a mouse. I'm encouraging her by giving some games. But it's not a natural thing these days.

[+] BLKNSLVR|6 years ago|reply
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|6 years ago|reply
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|6 years ago|reply
“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.

[+] cgrealy|6 years ago|reply
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|6 years ago|reply
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|6 years ago|reply
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.

[+] smabie|6 years ago|reply
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.
[+] nvarsj|6 years ago|reply
It's sort of shocking how many of my colleagues in the past did not know who Alan Turing was. Context and history is so important to understanding why things are the way they are - and it also makes you mostly bullet-proof to tech dogma.
[+] mattrp|6 years ago|reply
Second this! With heavy emphasis on Unix and IP networking fundamentals.

Before I saw this comment I was going to say teach them typing - is that still taught in school? I think quite honestly learning to type at an early age made the difference between someone interested in computing and someone completely passionate about computing.

After that I’d say teach them how to network their computers together, learn how to research/ read RFC’s. I think there’s some really compelling writing in RFC’s... maybe teach them how to survive on a vt100 terminal... I also think learning about optics is a great way to teach basic electronics and physics.

[+] O_H_E|6 years ago|reply
> 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.
[+] arethuza|6 years ago|reply
We had an computer system architecture class on the CS degree I did that started with the Manchester Mark 1 and looked at the development of particular features over time - was a really interesting class.
[+] vmurthy|6 years ago|reply
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|6 years ago|reply
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|6 years ago|reply
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.