Answers.Body: <p>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 <a href="https://techcrunch.com/2017/06/24/coinbase-is-reimbursing-losses-caused-by-the-ethereum-flash-crash/" rel="noreferrer">ethereum flash crash</a>, the anonymity (or lack thereof) of cryptocurrency, regulation of cryptocurrency. How mining works. The list goes on and on</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-28T17:12:22.133Z
Answers.Text: A very current frontier, with the ransomware going about.
Answers.UserDisplayName: ItamarG3
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-28T15:53:23.180Z
Answers.LastActivityDate: 2017-06-28T17:12:00.000Z
Answers.LastEditDate: 2017-06-28T17:12:00.000Z
Answers.UserDisplayName: itsjtwright
Answers.Body: <p>If you're able to discuss some relatively complex mathematics (compared to what you might generally teach at this level), <a href="https://en.wikipedia.org/wiki/Artificial_neural_network" rel="noreferrer">artificial neural networks</a> are fascinating to discuss and work with.</p>
  
  <p>Ever wanted to:</p>
  
  <ul>
  <li><a href="http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/" rel="noreferrer">create a program to generate music (that doesn't sound horrible)</a>? </li>
  <li><a href="https://www.youtube.com/watch?v=qv6UVOQ0F44" rel="noreferrer">beat Super Mario World</a> without actually programming each step?</li>
  <li><a href="http://www.boredpanda.com/computer-deep-learning-algorithm-painting-masters/" rel="noreferrer">pretend to be Picasso</a> without having any artistic talent?</li>
  </ul>
  
  <p>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!).</p>
  
  <p>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.</p>
  
  <p>You could discuss superficially by just <a href="http://www.explainthatstuff.com/introduction-to-neural-networks.html" rel="noreferrer">introducing the structure of a neural network</a>, but many of the really interesting applications require a more in-depth knowledge (i.e. linear algebra/matrices) to fully appreciate the topic.</p>
  
  <p>The course <a href="https://www.coursera.org/learn/neural-networks" rel="noreferrer">Neural Networks for Machine Learning</a> 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 <em>good stuff</em>, 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.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-28T17:26:42.427Z
Answers.LastActivityDate: 2017-06-28T17:26:42.427Z
Answers.UserDisplayName: Aurora0001
Answers.Body: <p><strong>Yes. Teaching parallel algorithms is especially productive.</strong></p>
  
  <p>Introducing cutting edge fields can engage students. Like anything, it should be done using active learning techniques (<a href="http://www.pnas.org/content/111/23/8410.full.pdf" rel="nofollow noreferrer">Freeman et al. 2014</a>) 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 <strong>parallel processing</strong> is one of the most important. I say this for three reasons:</p>
  
  <p><strong>1. "Mulch" required for later</strong></p>
  
  <p>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.</p>
  
  <p>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. </p>
  
  <p>b. Evidence: At the 2016 International Symposium on Parallel and Distributed Computing, I heard described an <a href="https://nsf.gov/awardsearch/showAward?AWD_ID=1143533" rel="nofollow noreferrer">unpublished study</a> 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.</p>
  
  <ul>
  <li>Students who had taken <strong>no CS</strong> course <strong>frequently</strong> described a parallel algorithm.</li>
  <li>Students who had taken a <strong>traditional CS1</strong> university course <strong>infrequently</strong> described a parallel algorithm.</li>
  <li>Students who had taken a <strong>parallelism-enhanced CS1</strong> university course <strong>frequently</strong> described a parallel algorithm.</li>
  </ul>
  
  <p><strong>2. Present and Future Importance of Parallelism</strong></p>
  
  <p>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. </p>
  
  <p>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.</p>
  
  <p><strong>3. Accessible in High School</strong></p>
  
  <p>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 <a href="https://grid.cs.gsu.edu/~tcpp/curriculum/?q=edupar17" rel="nofollow noreferrer">EduPar</a>, an annual conference for teaching parallelism and distributed computing at the university level.</p>
  
  <ul>
  <li><a href="http://faculty.knox.edu/dbunde/pubs/apcs.pdf" rel="nofollow noreferrer">David Bunde 2012 CS4EDU</a> </li>
  <li><a href="https://csinparallel.org/index.html" rel="nofollow noreferrer">CS in Parallel</a></li>
  <li>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 <a href="http://bjc.edc.org/bjc-r/course/bjc4nyc.html" rel="nofollow noreferrer">Beauty and Joy of Computing</a> (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.</li>
  <li>A compendium being created by <a href="https://nsf.gov/awardsearch/showAward?AWD_ID=1143533" rel="nofollow noreferrer">Chuck Weems</a> from U Mass Amherst</li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-30T05:42:49.183Z
Answers.LastActivityDate: 2017-06-30T05:59:13.620Z
Answers.LastEditDate: 2017-06-30T05:59:13.620Z
Answers.UserDisplayName: Bennett Brown
Body: <p>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.</p>
  
  <p>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 <a href="http://algassert.com/quirk#circuit=%7B&quot;cols&quot;:[]%7D" rel="nofollow noreferrer">this one</a> to play with (or would that be going into too much depth?). Talking about molecular computing would also be an option.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-28T15:43:45.283Z
Comments.Text: This question is really broad. There are so many frontiers that could be discussed. A book could be written on this topic.
Comments.UserDisplayName: thesecretmaster
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-28T16:04:59.147Z
Comments.Text: Was immediately reminded of [the SMBC about quantum computing](http://www.smbc-comics.com/comic/the-talk-3) (not to be confused with [the SMBC about quantum computers](http://www.smbc-comics.com/index.php?id=4057)).
Comments.UserDisplayName: Piyush Parikh
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-28T17:05:46.350Z
Comments.Text: @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.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-28T17:08:41.753Z
Comments.Text: @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](https://chat.stackexchange.com/users/162795) to avoid taking up comment space.
Comments.UserDisplayName: thesecretmaster
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-28T19:17:34.327Z
Comments.Text: 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.
Comments.UserDisplayName: Buffy
Tags: <secondary-education>
Title: Talking about new/active subfields of CS to inspire students
ThreadText: # Talking about new/active subfields of CS to inspire students
  
  (Asked by: username_0 on 2017-06-28)
  
  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](http://algassert.com/quirk#circuit=%7B"cols":[]%7D) to play with (or would that be going into too much depth?). Talking about molecular computing would also be an option.
  
  **Tags:** secondary-education
  
  > **Comments:**
  > **username_1**: This question is really broad. There are so many frontiers that could be discussed. A book could be written on this topic.  
  > **username_2**: Was immediately reminded of [the SMBC about quantum computing](http://www.smbc-comics.com/comic/the-talk-3) (not to be confused with [the SMBC about quantum computers](http://www.smbc-comics.com/index.php?id=4057)).  
  > **username_3**: @username_1, 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.  
  > **username_1**: @username_3 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](https://chat.stackexchange.com/users/162795) to avoid taking up comment space.  
  > **username_3**: 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.  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_4 on 2017-06-28. Score: 5
  
  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](https://techcrunch.com/2017/06/24/coinbase-is-reimbursing-losses-caused-by-the-ethereum-flash-crash/), the anonymity (or lack thereof) of cryptocurrency, regulation of cryptocurrency. How mining works. The list goes on and on
  
  > **Comments:**
  > **username_5**: A very current frontier, with the ransomware going about.  
  
  ---
  
  ### Answer by username_6 on 2017-06-28. Score: 4
  
  If you're able to discuss some relatively complex mathematics (compared to what you might generally teach at this level), [artificial neural networks](https://en.wikipedia.org/wiki/Artificial_neural_network) are fascinating to discuss and work with.
  
  Ever wanted to:
  
  * [create a program to generate music (that doesn't sound horrible)](http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/)?
  * [beat Super Mario World](https://www.youtube.com/watch?v=qv6UVOQ0F44) without actually programming each step?
  * [pretend to be Picasso](http://www.boredpanda.com/computer-deep-learning-algorithm-painting-masters/) without having any artistic talent?
  
  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](http://www.explainthatstuff.com/introduction-to-neural-networks.html), 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](https://www.coursera.org/learn/neural-networks) 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.
  
  
  ---
  
  ### Answer by username_7 on 2017-06-30. Score: 1
  
  **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](http://www.pnas.org/content/111/23/8410.full.pdf)) 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](https://nsf.gov/awardsearch/showAward?AWD_ID=1143533) 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](https://grid.cs.gsu.edu/~tcpp/curriculum/?q=edupar17), an annual conference for teaching parallelism and distributed computing at the university level.
  
  * [David Bunde 2012 CS4EDU](http://faculty.knox.edu/dbunde/pubs/apcs.pdf)
  * [CS in Parallel](https://csinparallel.org/index.html)
  * 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](http://bjc.edc.org/bjc-r/course/bjc4nyc.html) (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](https://nsf.gov/awardsearch/showAward?AWD_ID=1143533) from U Mass Amherst
  
  
  ---
  
  