In a class for highschool students, should I talk about new, active, and exciting fields of CS to inspire them to perhaps further pursue CS or just get them more interested, or would it be better to stick to the basics? If the answer is that it's a good idea, please elaborate with an example of a subfield that would be good to talk about and why.

For example, a field might be quantum computing - covering maybe the basic ideas and mathematics, and giving them some resources to explore, and a nice simulator like this one to play with (or would that be going into too much depth?). Talking about molecular computing would also be an option.

  • 2
    $\begingroup$ This question is really broad. There are so many frontiers that could be discussed. A book could be written on this topic. $\endgroup$ – thesecretmaster Jun 28 '17 at 15:43
  • 1
    $\begingroup$ Was immediately reminded of the SMBC about quantum computing (not to be confused with the SMBC about quantum computers). $\endgroup$ – Piyush Parikh Jun 28 '17 at 16:04
  • 1
    $\begingroup$ @thesecretmaster, you seem to be favoring only questions that can be definitively answered with "the one true answer." I think that is too narrow. There are questions that different people will answer quite differently without it being just opinion or discussion. If the criteria are applied too strictly it will get in the way and discourage people. This question can have many answers, all different, all correct, and more important, all thought-provoking. $\endgroup$ – Buffy Jun 28 '17 at 17:05
  • 1
    $\begingroup$ @Buffy I have my personal views on which questions are too broad and which are not. I will not abuse my moderator power by closing questions based on that evaluation, but I can express my opinion. In this case, I believe that multiple books could be (and have been) written on each frontier of CS, and that is far too broad to be covered in one answer. If you'd like to discuss this further (which I'd be happy to do), please start a new room with me to avoid taking up comment space. $\endgroup$ – thesecretmaster Jun 28 '17 at 17:08
  • 1
    $\begingroup$ A good teaching technique is to introduce a topic and some of its features and terminology before it is necessary to address it in detail. It need not be a frontier topic. It can be one (compilers, AI, ...) that will be studied in due course. So, you are asking for ideas to "prime the pump." I am applauding. $\endgroup$ – Buffy Jun 28 '17 at 19:17

I think a really interesting one would be the idea of cryptocurrency, this may not be what you are looking for particularly, but it is a new horizon that is bringing many new ideas to tech. Ideas to cover, the block chain, the ethereum flash crash, the anonymity (or lack thereof) of cryptocurrency, regulation of cryptocurrency. How mining works. The list goes on and on

  • 1
    $\begingroup$ A very current frontier, with the ransomware going about. $\endgroup$ – ItamarG3 Jun 28 '17 at 17:12

If you're able to discuss some relatively complex mathematics (compared to what you might generally teach at this level), artificial neural networks are fascinating to discuss and work with.

Ever wanted to:

There are an immense number of use cases for neural networks (although there is a lot of hype around the subject with some unrealistic promises!).

I would imagine a basic grasp of calculus and a firm understanding of the basics (syntax, algorithmic thinking, etc) would be necessary, although it would depend on what depth you wanted to teach.

You could discuss superficially by just introducing the structure of a neural network, but many of the really interesting applications require a more in-depth knowledge (i.e. linear algebra/matrices) to fully appreciate the topic.

The course Neural Networks for Machine Learning seems highly relevant here, and it might be worth examining the topics covered to see how it may be possible to teach this. I don't think it's something you can really skim if you want to actually get to the good stuff, but if you don't have time, showing some examples and providing resources for your students might still be worthwhile if they want to put in the time themselves.


Yes. Teaching parallel algorithms is especially productive.

Introducing cutting edge fields can engage students. Like anything, it should be done using active learning techniques (Freeman et al. 2014) and within "proximal development." Of "cutting edge" fields that are useful to introduce early in the pipeline (i.e., high school or earlier)', I think parallel processing is one of the most important. I say this for three reasons:

1. "Mulch" required for later

Some ways of thinking require early introduction to nurture later growth. Parallel and distributed computing may be one such area, based on visionaries' opinions and evidence.

a. Visionaries opinions: Pappert and Resnick both suggested parallel and decentralized thinking an area in which CS for young students could alter how the student years later thinks about phenomena and how they solve problems.

b. Evidence: At the 2016 International Symposium on Parallel and Distributed Computing, I heard described an unpublished study assessing three groups of students in their tendency to solve problems with parallelism in mind. The assessment asked students to describe a procedure for making a peanut butter and jelly sandwich and then asked for a procedure to make 10,000 peanut butter and jelly sandwiches.

  • Students who had taken no CS course frequently described a parallel algorithm.
  • Students who had taken a traditional CS1 university course infrequently described a parallel algorithm.
  • Students who had taken a parallelism-enhanced CS1 university course frequently described a parallel algorithm.

2. Present and Future Importance of Parallelism

a. After an advance in hardware capability, a corresponding advance in devices and software on the market takes place ~10 years later (Kurzweil, The Singularity is Near). A large portion of software on the market still does not take best advantage of multicore processors.

b. In writing a curriculum for CS Principles, I asked some 200 tech leaders, "What changes would you make to the post-secondary CS curriculum to better suit your needs?" Soft skills, parallel processing, version control, and distributed databases were topics that came up most frequently in these answers.

3. Accessible in High School

Various people have put forward ideas appropriate to the age level, and the high school CS teaching community can probably also draw additional ideas from EduPar, an annual conference for teaching parallelism and distributed computing at the university level.

  • David Bunde 2012 CS4EDU
  • CS in Parallel
  • An unplugged activity from Dan Garcia: Ask a team of 4-6 to design an algorithm and execute it with human hands to sort a shuffled standard deck of cards into a particular order. This activity was in Beauty and Joy of Computing (BJC) and Garcia, one of the principal investigators on BJC told me he felt this was the BJC activity he regarded as most successful and engaging, though I don't see it in the current version.
  • A compendium being created by Chuck Weems from U Mass Amherst

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.