Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What should be taught in high school?
200 points by NiloCK on Nov 28, 2019 | hide | past | favorite | 235 comments
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"?




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.


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.


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.


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!


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.


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.


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”.


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.)


This. I can't express this enough. And other thing I can't express enough is how logic is an extension of common sense. Just go and read the wikipedia articles about the Three Laws of Thought: the Law of identity, the Law of noncontradiction, the Law of the excluded middle and the Principle of Reason.


> 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.


Yes, it is concerning. Fortunately the research actually says the exact opposite.[1] It is a strongly held stereotype (in the US at least) and natural ability or natural interest is often pointed to on HN as the reason for the lack of women in STEM. I personally don’t believe it has anything to do with nature and is entirely attributable to nurture.

However, I wrote “whether by nature or nurture” because my ultimate goal was to let OP know that teaching logic might be a good avenue to spark the interest of high school girls who were like me - interested in CS even though they might have been discouraged from participating and feel like they don’t have the “natural” ability because they’ve been pushed toward language skills for most of their academic career. My message would have been brushed aside (at best, I likely would have been, and perhaps will be, berated) had I written “as a woman although I was interested in numbers I was encouraged to focus on words”. And so, like women often do[2], I held back my true thoughts on the matter because I hoped that doing so would be for the greater good if it meant OP would be the CS teacher I wish I had as a high school girl.

[1] https://time.com/81355/girls-beat-boys-in-every-subject-and-...

[2] https://www.nytimes.com/2019/02/07/opinion/sunday/girls-scho...


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.


> 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...


Or it's a reflection of what kind of skills the IQ measures.


Just a few decades ago the western society expected girls to be better in math than boys, and both complied. It got reversed around the 50's and 60's.


> 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...


> I almost hate numbers and symbols without (the explanatory) words/paragraphs.

The numbers and symbols only make sense in the context of some specific language game. If you work in a domain a lot, then repeated sequences of symbols and conventional naming of variables hints what language game you're playing. Without that, everyone needs the explanatory words/paragraphs.

> Isn't it easier for everyone to remember/visualize concepts and then deriving the formula than trying to remember the exact formula?

Yes. There's an interesting notion of a "recovery procedure" in Borovik's "Mathematics Under the Microscope" where he points out that mathematicians don't remember formulas and theorems, they remember simple procedures that recover them.


> as a women

Sexist.


Why take it out of context? Here's the full quote. Nothing sexist about it.

> And, whether by nature or nurture, as a woman I was always better with words than numbers


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.


When I was in elementary school, back when dinosaurs roamed, my grade 7 class did the entire Microsoft Works (for DOS) tutorial application. This was designed for adults but it was a fully interactive tutorial on how use the word processor, spreadsheet, and database components of Works. It took several weeks of 1 hour-per-week computing lab classes to finish.

I was already pretty tech-savvy in those days but that was still one of the best things I learned as a kid computer-wise. The fundamental principles of a spreadsheet has never changed and I learned it as a 12 year old.


I also got some exposure to a spreadsheet, a word processor and a database at school. The database stuff made little sense to me, and did not do anything to prepare me for what I'd learn about databases in university.


I was really surprised to find out that my kids didn't know what a spreadsheet is, they are not afraid from technology are curious and try to find the "best tool for the job" but somehow this was left out.

Schools here in Sweden uses word/google docs but not sheets for some reason.


>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.


> unethical

??

I'm not saying it couldn't be done (and run on Linux of course) but the entire industry needs professional support tailoring the needed software package, solve problems, install updates or define the needed hardware all are (presumably easily) solvable with Microsoft or Google products, but don't have out of the box solutions for an entire country.

You can't rely on a school kid or teacher to install Linux distributions or download the right software.


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


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.


You might like it or not (definitely not), but because Excel is unparallelled when it comes to spreadsheet software.


I would defend this statement 100% if Excel had regex support in Find/Replace.


Whatever spreadsheet software is fine for me. Excel is still more popular, but unless you use very advanced stuff LibreOffice is equivalent.


Grades 9-12,so like 14-18 year olds


For 14-18yo I'd like to add semi-logarithmic graph and solver, but perhaps it's too much.


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....


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.


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.


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.


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.


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.


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.


I have an advanced degree in STEM and would have greatly appreciated a seminar on income and property taxes before I set off into the real world.

They "teach" kids how to drive in high school. Why not teach the same kids some money handling skills?


Sounds like a job for the accounting teacher, not a computer teacher.


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.)


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


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.


It's difficult to accept this assertion at face value. After all for any given proposition p, regardless of the domain under which it ought to be considered, we can always choose not to immediately accept it without sufficient reason for doing so. We can always ask why p has been offered up to us, what the arguments for and against p are, and what the implications of accepting it would be.


I think what’s most important is not so much critical thinking skills as critical thinking discipline.

Don’t go round believing things just because you want them to be true, or disbelieving things just because you don’t want them to be true. Don’t rush to judgment just because something provokes a strong emotional reaction. Always be doubting, always be listening to points of view that differ from your own. That kind of thing.


Often what people need is just plain thinking about what they read/hear instead of having knee-jerk reaction to the topic.


although subject matter expertise and whatever goes under the rubric of "critical thinking" these days is highly correlated, there is still a common sense approach to logical, analytical thinking that might fit under the umbrella of critical thinking while not being domain-specific.


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.


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'.


Critical thinking is good. Building the 30 seconds habit of verifying stuff online is better for fake news. And it's teachable.

Regularly mix in half truths or outright lies and see who challenges you. Check a few classes later for who verified the claims. Do this often enough and at least 1% will bite.

Lastly, the habit of reading for pleasure is a natural fake news antidote. Over time, a person who reads widely will build enough expertise to spot rubbish.

Example, in unknown territories, I could be as gullible as my grandmother. Yet, it's very easy for me to spot wrong, misleading results on Google's search results and articles - in areas where I'm well read.

I've told my younger bro that his MBA professor's wrong about in one area or another. Since I don't have an MBA, he'll naturally discount my position. He'll however, agree with me a few month's later, when another professor or sometimes the same prof backs up my claim.

Summary: Cultivate the hacker's love of boundry-less learning in kids.


I think it's best to let the student decide what's fake. It's better to analyze how the same story can be presented in vastly different ways, or with a different emphasis to further an agenda, even if neither is fake.

The same can be done with data visualizations.


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.


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.


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.


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.


"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.


I think the course described above might be a better fit for an intro survey course at the college level. Or as an upper level elective course for high schoolers.

You can select for people for are actually interested, and you’re really just introducing the students to concepts that are worth there own class to get to the level where you can actually apply them.


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.


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.


It'd be better to average with a second noisy signal, right? That sounds kind of like the Monte Carlo method.


Why AWS instead of VPS?


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.


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.


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


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.


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.


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.


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.


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


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.


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.


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.


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.


I suspect ‘humanrebar is thinking about bookkeeping more than accounting. It’s largely mechanical, often computer-assisted, and the first necessary step to put any of that theoretical knowledge to use in practice.


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


The habit of saving money is a teachable skill that parents can cultivate in their kids.

Typically, kids learn more from the ACTIONS of adults in their lives than WORDS. I may have picked up my simple way of life from my parents when cash was tight but my younger ones who grew up in a more financially relaxed atmosphere are spend thrifts.


Agreed. Also, how about the various taxes you encounter as an adult (income, property, ect...)


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


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.


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.


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.


>when I started college, a third of the class didn't even know touch typing

At least 3 of my lecturers didn't want me using my laptop in class. One cited the, "You learn more writing with pen and paper" crap.

This didn't apply to me cos I hate my handwriting - thus don't want to read what I've handwritten. I actively colored my headlines, underlined, emphasized or even completely rewritten (in my own words) key areas on OneNote.

I also used my Nook simple touch ebook reader when reading for tests and exams for complete focus.

>My first grade daughter knows how to draw well but can't use a mouse

If you're using windows, get her the game LowPoly 3D Art Paint by Number. It's a fun coloring game, mouse only.


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)


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...


“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.


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



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).


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.


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.


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.


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.


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.


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.


> 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.



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.


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.


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.


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.


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


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.


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.


> 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 :)


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.


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...


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


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


After reading this I don’t know at all what you are talking about. Fp future? Ict people?


Well I understood that it was Functional Programming future and Information and Communications Technology people, but it does not help me to grok that comment either.


Functional programming is a religion. Imperative programming is easier but comes with consequences.

Peer review evidence is good for strong typing benefits, FP it's just religious fervour. For an atheist, this is a religion I can get behind. At the tail of. Somewhat lazily.


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.


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 :)


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.


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.


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


We used to spend an hour drawing pictures in Microsoft Paint


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.


There is already free course materials 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... 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/ 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.


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.


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.


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.


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


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.


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.


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.


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).


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-...

* 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.


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


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!


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/). 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/). 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.


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.


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.


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)


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.


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/ 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.


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.)


Which MAA book are you referring to?


I looked around and found this guide by MAA: https://www.maa.org/programs-and-communities/curriculum%20re... 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...


Yes, ivan_ah is right, that's the book I meant. Free and evidence-based. I'd say active learning is baked into pretty much all the chapters of the book, because the evidence is very strong that this is the best way to go.


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.


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.


>SQL is surprisingly easy to teach to young people.

And frustratingly difficult to teach adult software developers. Speaking from experience trying to teach the devs what they are doing is NOT good practice.


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.


This looks like a good resource to start with:

https://www.csd.cs.cmu.edu/news/carnegie-mellon-launches-hig...


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.


Checkout Mindstorms by Seymour Papert for some inspiration

http://worrydream.com/refs/Papert%20-%20Mindstorms%201st%20e...


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


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.


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.


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.


I wholeheartedly recommend that people get some basic grasp of Excel, because they will pretty invariably run into it in a white-collar job, and some blue collar ones.



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.


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


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.


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.


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.


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.


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


https://programbydesign.org/ seems like a good place to start looking.


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.


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.


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.


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.


-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


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.


Give or Take some stuff mentioned in here: 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).


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


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.


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.


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.


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


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


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.


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?


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


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.


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.


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.


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


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.


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.


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.


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


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.



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.


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


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.


Perhaps latency of different types of computer storage

i.e. an updated version of https://imgur.com/k0t1e


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 :)


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.


Omg so simple


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.


- seeking help from other people

- understanding other people's solutions

- optimizing for less complexity and more clarity

- differences between academic/nonprofessional and professional environments


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


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.


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.


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


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


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


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?


Regex SQL Excel HTML

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


Basic finances to manage your life.


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


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


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


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.


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.


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


Lambda calculus. This is the precursor to functional programming.


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


History of AI, for perspective.

CS + Liberal Arts is a powerful combination


Statistics and solid math / logic fundamentals.


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.


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.


Ethics.


Drivers Education

Financial Security

Gun Education

Basic Cooking

Basic Electronics

Basic Wood and Metal working


How innovation occurs


Philosophical logic.


Teach them TDD.


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.


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.


how to cook


taxes


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...

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


Budgeting


How to deal with shitty people


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

Basic economics, Supply and Demand.

Comparative Mythology/Religion.


Not in an "Information and Communications Technology" course


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


Oh didn't read the description.


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: