Skip to content

Ask HN: How to teach a high-school CS course?

2 pointsaaron55 comments
On HN

Happy New Year, Hacker News!

Short: How would you teach a High-school Grade 11 Computer Science course?

More info: I'm a STEM teacher at a Canadian high-school in China. Our program is for Chinese students whose parents want a western complement to the Chinese system. In effect, students may be wildly talented or wildly unready - I have students with a 5 in AP Calculus and students without a gist of functions. I must wear many hats at this school. My new hat is Computer Science teacher, which falls to me because I write a little code (e.g. my React Native iOS app 99to5.com for learning physics, self-promo apologies). How can I make this class most edifying for the most students?

Thanks for any advice! And I wish you joy and good-fortune in 2024!

Comments

If this is a one-school-year course then you have time to cover a tremendous amount of ground. Looking back on when I first learned programming, I would say the things that helped the most were (1) writing code as soon and as often as possible, (2) starting with a relatively simple language, (3) being given snippets of code and having to choose which of 3 or 4 possible outputs was the correct one, (4) being given working programs and having to enhance them (eg, add a language feature to a simple compiler, or add transactions to a simple database, or enhance a shopping cart on a web page, or modify a simple text editor, etc.), (5) programming a game, (6) being given pieces of code and having to identify the bug.

Thanks! For me #1 is really important too. I think just trying, especially with software, is so important. The language is one I'm thinking about - some of my students are self-studying AP CS which is centered on Java, but that language seems more difficult to start building things you can see (as opposed to just HTML/javascript) but maybe I'm just not as versed in it.

I used to teach AP comp sci in the US, and my 95% of my students passed the AP exam. I use a combination of resources, but primarily used CS50 and code.org resources. The hardest part for me was differentiation. I would have students who could finish a semester of problem sets in a week, and students who couldn't finish one in a month. I think it depends on the goals of the course how you organize it. My goals were familiarity, comfort, and growth, so I had several tracks students could pursue, all of which would give them the same credit. Happy to share any knowledge or wisdom further.

Build to something tangible, such as a basic video game (minesweeper, tic tac toe, etc.). To get from zero to there will cover a lot of concepts. Begin the course by saying by the end of it, you will be able to build this yourself: [show the game]. Then have each lesson relate to the end result, little by little.

Thank you! Yes, I think tangible projects are a really strong approach - I'm trying to figure out a suite of realistic projects, so students can choose the one they most respond to.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.