Answers.Body: <p>This is a vital question, perhaps <em>the</em> vital question, for a CS educator to deal with, because technologies will keep pushing us.  There is no end to this particular merry-go-round.</p>
  
  <p>I have been stuck, non-stop, in exactly this situation, for the last four years in a high school for gifted students, and I can attest that it is physically, mentally, and emotionally exhausting. It can push you to the edge of a nervous breakdown. It can also be incredibly rewarding, both for you and for the students.  </p>
  
  <p>I claim no special wisdom, but here are some of the techniques I've been using.   I hope will be of help to other teachers gazing down the barrel of a similar gun at some point in their career:</p>
  
  <ol>
  <li><p>Don't be dishonest with your students or try to hide your lack of background.  There will be moments that you come up short, and your honesty and forthrightness from the start will help to mitigate any loss of trust that students might feel when this happens.</p></li>
  <li><p>Find several great resources.  Do not depend on one resource to give you the sort of thorough understanding you need to do this well.  A strong textbook is great, if there is one to be found, and can help you both understand the material and sequence your lessons.  However, single-source preparation leads to two problems: (a) your understanding will be brittle, and you will be left with only one way to explain a concept when students are lost, and (b) it will be very difficult to deal with questions, particularly from your brighter students, that go off-script and try to connect with outside ideas.</p>
  
  <p>In my best situations, I will have a textbook, a tutorial series (such as might be found on YouTube or a website somewhere), some exercises to work though, and a tutor to help me when I get stuck.  SE can, itself, act as the last two of these for CS topics in a pinch, though it is not as good of a tutor as an actual tutor, who will build a dialogue and set of understandings with you over time.</p></li>
  <li><p>Use the lesson planning itself as your final preparation, in which you summarize the key understandings and design exercises to help your students fill in the dots.  Over-prepare your lessons, because your instincts for how long the material will actually take to cover are not yet honed. </p>
  
  <p>(I once prepared what I thought would be 3 lectures, and ended up delivering it as 1 lecture because things went extremely smoothly.  At the end of the hour, ,I arrived at the end of literally all of the material I had prepared.  The students enthusiastically told me that the lesson had made a lot of sense.  <em>"Great,"</em> I thought, <em>"I'm glad that made sense to the students, but what in the world am I going to do</em> <strong><em>tomorrow</em></strong><i>??")</i></p></li>
  <li><p>When students ask interesting, tangential questions, don't be afraid to reply by asking if they would be willing to research it a little and report back to the class next time.  It is important that not every student question become a major research assignment for you.  Instead, choose your battles carefully. Burnout is a real danger, and your time is valuable.  You have made a pact to help guide students through the main topic; don't get caught up in too many tangents on your first pass.</p></li>
  <li><p>If you're really caught for time, you can simply present learning materials and ask students to work together to try to make sense of it.  Be careful not to do this too often, because while this technique can work reasonably well for your high-fliers, it does not leave you in a position to guide and help the students who really struggle.</p></li>
  <li><p>Accept that this is an imperfect business.  You will mess up from time to time.  You will make mistakes.  You will arrive at a lecture feeling prepared, receive a student question, and suddenly realize that you don't understand something that you thought you did.  You may even discover that something you taught was outright wrong.  Be prepared to go back to the class and revisit an idea if you screw up.  But also, be prepared to forgive yourself for some amount of weakness.  You are an imperfect being trying to build a learning opportunity for your students, and all you can do is try your best.</p></li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-26T19:14:13.700Z
Answers.Text: I would add to this "Leverage what your students know that you don't". A few years back, my daughter's high school was brand new, and setting up their video and media program. The teacher was a good teacher but a complete novice in the video production world. My daughter had been working on a live webcast team since 7th grade, and had risen to the level of technical director by 11th grade. She pretty much set up the entire program, freeing the teacher to learn and take care of non-technical concerns like budgets and school politics.
Answers.UserDisplayName: pojo-guy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T01:11:48.157Z
Answers.Text: Also if you're creating your own multiple choice tests be prepared to get challenged. It is very easy to think you're writing a distractor answer that is false only to have students prove to you that it's also true.
Answers.UserDisplayName: candied_orange
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T14:21:00.053Z
Answers.Text: Ben you said everything I would have said.  Great answer.  I'll add two things: if teaching code, be sure to write all exercises yourself before you assign them to students (or even concurrently in class - and I do this even if I "know" the language); use a timer to give yourself five or even 10 minutes during class when you need it to find your bearings or wrap your mind about what you're going to do next.  Tell your students that if they hit the wall while your timer is set they should investigate their problem independently (or get help from others) and that you'll be with them shortly.
Answers.UserDisplayName: Java Jive
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T16:25:01.000Z
Answers.Text: @JudyOakley Partial answers are considered answers here on SE, and you have two great pieces there.  I'm particularly interested in your last bit; could you flesh that out?  I don't quite understand what you mean, but it gives me a nagging sensation that there's a trick I could start enacting right away to make life better for me and my students.
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-03-01T14:53:25.687Z
Answers.Text: `in a high school for gifted students` ... are you Charles Xavier?
Answers.UserDisplayName: Hankrecords
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-03-01T16:27:46.870Z
Answers.Text: @Hankrecords Yes, yes I am.
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-03-03T14:39:34.643Z
Answers.Text: I will add an answer to the post, but one other point is to make effective use of scaffolding for your assignments. This will help you as a new teacher contain the types of problems and questions students will run into as you become more familiar with the material.
Answers.UserDisplayName: Mr Bradley
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-26T18:30:59.773Z
Answers.LastActivityDate: 2018-02-26T19:36:42.647Z
Answers.LastEditDate: 2018-02-26T19:36:42.647Z
Answers.UserDisplayName: Ben I.
Answers.Body: <p>There is one strategy, at least, that often works, especially with older and more experienced students. Using it in Secondary School would, perhaps, be too risky. It is also probably not indicated for core courses except when no alternative can be found. </p>
  
  <p>The underlying principle is that you should not lie to your students or present yourself as other than you are. In other words, don't fake it. On the other hand, what you <em>are</em> is a scholar: someone who can learn. Someone who knows <em>how</em> to learn.  </p>
  
  <p>The basic technique is to run the class like a learning lab in which everyone contributes ideas constantly. There is more discussion and almost no "lecture" unless you can get the students to give mini-lectures on cool things they have discovered about the topic. It is teamwork in the extreme with yourself just a team member. </p>
  
  <p>EXCEPT, that your main job is to show them how to learn: research, reading, experimentation, trial and error. You don't supply a lot of <em>course content</em> but you do supply learning strategies and feedback on the things that the students learn. </p>
  
  <p>A slightly less important task is to guide the students away from pure chaos. You will need to get them to focus on things in a reasonable order, delaying things that seem deeper or less connected to the main ideas being presented.</p>
  
  <p>To ease your comfort level, try to find a few recognized experts in the topic at hand. This doesn't necessarily mean text-book authors, unfortunately. You might be surprised that some of them are willing to give you guidance (pointers to papers, etc) that will help you guide the class.  </p>
  
  <p>One trick is to have daily summaries produced, perhaps by yourself, and perhaps by students, rotating this task and making the summaries available to all: What are the two or three most important things we discovered today. </p>
  
  <p>If the course is about programming you can organize a very agile team to try to produce something interesting within the framework of the course. If it is about theory you can try to teach students how to find the crux of the proof of a theorem (for example). </p>
  
  <p>Note that this is exactly what you are forced to do if you are teaching a topic that is state-of-the-art, edge-of-the-known-world stuff. Nobody knows how to teach it methodically, so try to develop the method yourselves. </p>
  
  <p>Another use of this is when a group of students forms a Learning Club to explore some topic. The group leader may know a bit more than the others and can try to guide them, but it is a learning-for-all situation. </p>
  
  <p>Learning how to learn is likely more important than any specific topic. Without that you can never leave your guides behind nor can you outshine your teachers. Older students have, hopefully, already experienced learning and, hopefully, have a few learning strategies developed already so it isn't as big a task as teaching novices in a field in which they have no preparation at all. </p>
  
  <hr>
  
  <p>I note that there was a time, around 1980, I think, at which you could earn a Doctorate from Carnegie Mellon University in CS, but could <em>not</em> earn an undergraduate degree. The reasoning behind that was that "there was insufficient academic content" at the time in CS, in the faculty's judgement. The doctoral students were, of course, developing that content that could later filter down to a wider audience. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T13:06:03.540Z
Answers.Text: With respect to your aside about undergraduate degrees in CS, the first taught course in CS was a post-graduate Diploma at the University of Cambridge in 1953; Cambridge introduced an undergraduate "Part II" in 1970 as the third year of a science degree; expanded it to two years in 1978 (following one year of maths or science); and to "three" years (really 2.5, because half of the first year was still science) in 1989. Even today they don't have a full three year course of just CS, although it's up to 2.75 years. Source: http://www.cl.cam.ac.uk/downloads/books/CambridgeComputing_Ahmed.pdf
Answers.UserDisplayName: Peter Taylor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-28T09:17:42.573Z
Answers.Text: _"Learning how to learn is likely more important than any specific topic."_ This.
Answers.UserDisplayName: jeroen_de_schutter
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-26T18:08:22.400Z
Answers.LastActivityDate: 2018-02-26T18:17:57.867Z
Answers.LastEditDate: 2018-02-26T18:17:57.867Z
Answers.UserDisplayName: Buffy
Answers.Body: <ol>
  <li><p><strong>All possible questions about an assignment should have an answer if it would block students from finishing it if left unanswered.</strong> Questions which are vital for assignments that are not answered is the death of the assignment.</p></li>
  <li><p><strong>Limit your scope further.</strong> If you don't know a subject, you will not be able to fill in the holes for any edge cases without sufficient understanding. Therefore, don't teach what you cannot explain sufficiently enough to have them do the assignment.</p></li>
  <li><p><strong>Understand learning dependencies.</strong> A common mistake is to assume students know something when they don't. You can use a simple concept map to do this. One of my favorite tools to do this is to use GraphViz, a suite of programs to help create node-edge graphs. A visualization can also be very helpful to do this.</p></li>
  </ol>
  
  <p>Here is an example of a <code>.dot</code> file that can be converted using GraphViz's <code>dot</code> program into the following image:</p>
  
  <pre><code>digraph G {
      label="Basic C Programming";
  
      n0 [label="Binary Values"]
      n1 [label="Hello World"]
      n2 [label="Basic Data Types (int, float, char)"]
      n3 [label="Pointers"]
      n4 [label="Arrays"]
      n5 [label="ASCII Encoding"]
      n6 [label="Strings"]
  
      n0 -&gt; n5
      n2 -&gt; n1
      n2 -&gt; n3
      n2 -&gt; n4
      n5 -&gt; n6
      n3 -&gt; n6
  
      n7 [label="Conditionals"]
      n8 [label="Functions"]
      n9 [label="Structures"]
  
      n7 -&gt; n8
  
      n10 [label="While Loop"]
      n11 [label="For Loop"]
      n12 [label="Do While Loop"]
      n13 [label="Switch"]
  
      n10 -&gt; n11
      n10 -&gt; n12
      n7 -&gt; n13
  }
  </code></pre>
  
  <p><a href="https://i.sstatic.net/Qnuss.png" rel="noreferrer"><img src="https://i.sstatic.net/Qnuss.png" alt="A basic, unfinished concept map for basic C programming concepts"></a></p>
  
  <ol start="4">
  <li><strong>Zero-bug tolerance in assignments and code.</strong> How can students trust you if you don't have a solution that compiles?</li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T03:42:49.203Z
Answers.Text: Welcome to [cseducators.se]! This is a really interesting answer! I hope to see you around the site more :)
Answers.UserDisplayName: thesecretmaster
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-26T21:01:39.763Z
Answers.LastActivityDate: 2018-02-26T21:01:39.763Z
Answers.UserDisplayName: CinchBlue
Answers.Body: <p>The effectiveness varies from teacher to teacher; but generally, it works well. (And can be optimized)</p>
  
  <p>The method I describe has a few stages, each dependent on the previous ones.<br>
  To teach something you don't know, share this method with the students (after you did a part of it, preferably after reaching the third part). Learn it at a quick pace, and let them see how you learn it. </p>
  
  <p>Two things are achieved in that way: You can answer their questions, and they are exposed to new methods of learning.</p>
  
  <h3>Firstly,</h3>
  
  <p>If possible, sacrifice a few sleepless nights (not one after the other, mind you) to dive into the material and learn it. Read it, reread it, and then again.</p>
  
  <p>If the night is needed for other things, then allocate time during the day. As I've said, every stage is important.</p>
  
  <p>If you do sacrifice the night, then bear in mind:<br>
  There is indication that learnt material doesn't actually "sit well" in the mind if one hasn't "slept on it" (keeping it simple: during sleep, the brain makes new connections in the brain, and that's how we learn).<br>
  So after rushing through a subject, you should let <strong>that</strong> subject cool down.</p>
  
  <p>That last part is the semi-second stage. It usually happens by default, but (speaking from experience here) one might get carried away, so...</p>
  
  <h3>Thirdly</h3>
  
  <p>After reading the material for a subject, do what your students would do if you had known the subject. <strong>Give yourself exercises</strong>. At first, find online ones. For APCS-A, I'm pretty sure there are exercises available <em>somewhere</em> on the internet. As is with <em>everything</em>, practice. Start simple with online things, and then:</p>
  
  <p>After you feel sufficiently practiced with the material for a subject, start</p>
  
  <h1><strong>creating your own exercises</strong>.</h1>
  
  <p>This is the big one. This is the main point. This is my answer.</p>
  
  <p>I cannot emphasize that more <sub>(I suppose I <em>could</em> make it <em>italic</em>...)</sub>. This part is, by far, the most important. This is far from saying that one can "skip" to it. I've tried, it doesn't work if you don't do the previous parts.</p>
  
  <p>For a better learning curve, try to think up of a division of a subject (for example, dividing <a href="https://cseducators.stackexchange.com/q/4082/150">OOP to sub-subjects</a> in a logical). Create exercises for yourself for each division of the subject. Try to make both practical and theoretical questions.</p>
  
  <p>The latter being questions of pure knowledge, and the former - questions of applying said knowledge.</p>
  
  <p>Track the difficulty of the various questions in each sub-subject. </p>
  
  <p>These stages will come in handy when you teach <em>others</em>. You'll have a well ordered collection of exercises, fully covering the material, in varying difficulties. </p>
  
  <p>I have done what I have described on multiple occasions. This works for self learning (Not so surprising <code>;)</code>).</p>
  
  <hr>
  
  <p>The main point is:</p>
  
  <h2>Learn it, as you would let your students learn it</h2>
  
  <hr>
  
  <p>Now, as for answering students' questions:</p>
  
  <p>If you don't know the answer to a student's question, then say so. But also say something like </p>
  
  <blockquote>
    <p>I'll check and get back to you on that</p>
  </blockquote>
  
  <p>And then treat the question like one of the theoretical knowledge exercises (mentioned above). Usually, the theoretical knowledge can be found on the spot by searching google. There's no shame to let students see how <em>you</em> find information.</p>
  
  <p>When you get back to the student with the answer, show the student how you found it, detailing how you learnt it. This is both useful for you (to make the knowledge stick in <em>your</em> head), and useful for the student.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T17:19:23.613Z
Answers.Text: -1  for using Firstly, Thirdly  instead of First, Second, ...  and for jumping from Firstly to Thirdly. Sorry, it's a pet peeve of mine
Answers.UserDisplayName: Quora Feans
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T17:33:23.373Z
Answers.Text: @QuoraFeans If you read carefully, I have a "secondly". Doesn't have a huge header, but I do specify that there is a "second stage"...
Answers.UserDisplayName: ItamarG3
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-03-01T01:50:20.103Z
Answers.Text: This. This is really key, and the other answers are helpful as well. As a physician, I have had to teach medical students, residents, and PAs/CRNPs. Imagine the harm I could cause trying to bluff my way through teaching them about an illness. You either know it or you don't; when you don't, you say, I'll get back to you about that, and then read about it yourself until you understand it. It's no different for any subject at any level; the students deserve to learn.
Answers.UserDisplayName: anongoodnurse
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-26T17:55:24.450Z
Answers.LastActivityDate: 2018-02-26T19:03:10.273Z
Answers.LastEditDate: 2018-02-26T19:03:10.273Z
Answers.UserDisplayName: ItamarG3
Answers.Body: <p>Fleshing out something I mentioned in a comment to another answer - a very simple thing I have done in the past is to set a timer for myself in class when I feel things have gone south, for whatever reason, to give myself time to regroup and possibly even change direction.  Setting the timer forces me to admit that things are not going the way I expected (to myself AND my students) and focus on determining what to do next.  It may just be three to five minutes - but do it, and make yourself sit down and actually think. You will be surprised at what you might come up with, either based on plans you already have for another day, or something you may have already covered that you need to reinforce.</p>
  
  <p>Our role is, yes, to teach students our content, but more importantly, it is to teach them to be lifelong learners.  I can model that by learning alongside them, even with a subject I think I "know".  I can also show them that I make mistakes and missteps - but that I will make a correction and keep going.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-28T01:03:24.437Z
Answers.Text: Good point. Trying to brazen your way out of a bad situation is almost always noticed by students. The teacher's reputation will be diminished. Life is much easier when you don't have to insist that you are perfect.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-28T00:55:35.913Z
Answers.LastActivityDate: 2018-02-28T00:55:35.913Z
Answers.UserDisplayName: Java Jive
Answers.Body: <p>One thing I think is important to acknowledge is the advantage you have in having learned something recently before teaching it. Mainly (these are related):</p>
  
  <p><strong>1) It's easier for you to distinguish "easy" and "tricky" concepts</strong> </p>
  
  <p>When you've had a skill/background knowledge/understanding of a concept for a long time, the memory of learning it often fades, in my experience.  It's harder to recognize what takes two minutes to understand, and what takes hours/days/several different methods of explanation.</p>
  
  <p><strong>2) You can guess where students will get stuck and what questions they will have</strong></p>
  
  <p>This is probably (hopefully) because you've just gotten stuck in those same spots, and asked yourself those same questions.  In my experience, formulating a good answer for myself, or helping myself get over a particular hurdle has been helpful for my students, who often find the same explanation I gave myself illuminating.</p>
  
  <p><strong>3) A student's question that you can't answer immediately can be a great learning experience</strong></p>
  
  <p>It's ok (in my experience) to say that you don't know. Like other answerers here (ItamarG3), I say "I will get back to you"; in a few minutes, by email, or in the next lesson; and if I can, give a best guess at an answer.  In the worst case scenario, someone has called you out on not being fully prepared, and you need to scramble for an answer.  In the best case, it's a question that goes beyond the course material, and an opportunity for you both, and possibly the rest of the class, to learn something new (and promote learning in general). In my experience, students usually appear proud (and they should be) that they've thought about something in a way that I haven't before.  You can't be expected to be the world expert in everything that you teach, and even if you're already familiar with a topic there will always be questions that you don't know the answer to.  </p>
  
  <p>I would also note that learning as (or slightly before) you teach works much better if you have (as pointed out in other answers)</p>
  
  <p><strong>a) A prepared syllabus/some homework questions</strong> 
  In particular, it's difficult to provide the conceptual overview required for a syllabus until after you've learned much of the material. </p>
  
  <p><strong>b) Someone(s) you can ask for help.</strong>
  We all have questions that we can't seem to answer on our own...  If you need a syllabus, hopefully this same person can help you here as well.</p>
  
  <p><strong>c) Extra time and energy to learn.</strong> 
  In particular, you want to understand your material more deeply than you expect your students to.  This means that, even if you learn quickly or already have some knowledge of the field, you will probably need a reasonable amount of time for self-study.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T11:39:01.800Z
Answers.Text: Those are good additions. Welcome to [cseducators.se]!
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T12:34:16.157Z
Answers.Text: Your profile suggests you aren't registered here. I hope you do register and come back often.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T11:31:49.097Z
Answers.LastActivityDate: 2018-02-27T11:31:49.097Z
Answers.UserDisplayName: spectralnorm
Answers.Body: <p>I am currently a high school student takes APCS, as well as several other IT related courses from an instructor who has very little understanding of CS concepts as a whole, and I greatly appreciate him for essentially sponsoring these classes.  If you are in this situation and interested in contacting someone with experience doing this, I'd be happy to have him get in touch with you.  He started in the navy doing electrical work, and then transitioned into being an officer relatively early on, so most of his experience is irrelevant to CS and IT.  </p>
  
  <p>What he does is: </p>
  
  <ul>
  <li><p>Organize the business aspects of creating courses.  Currently, we have 8 IT courses, each ending with getting either a Comptia or MTA certification, that he has been able to negotiate funding for them from both grants and connections he has from the military.  Without his ability to get funding, I would have nowhere near the job opportunities I am presented with now, nor the opportunity to learn as much as I have.</p></li>
  <li><p>Finds people he knows who do have in depth experience with CS.  One of his friends is a full time software engineer at a large corporation, and my teacher convinced him to get certified to teach and his friend is now teaching several CS courses accredited by our local community college at my high school.</p></li>
  <li><p>Teaches using good, online materials.  He never lectures during class, as that would be a waste of time for all involved parties.  Instead, he treats the class periods as blocks of time for students to research/learn from coursework made by people more knowledgeable.  This works best in classes with students interested in the course material, however most taking advanced CS courses are and this has not been an especially large issue.</p></li>
  </ul>
  
  <p>So, to recap, what he does is uses his skills and network to find others who are knowledgeable to teach (be it online coursework or people he knows), and create opportunities for the students that otherwise would not have existed.  I don't fault him for not knowing the answer to most of the questions in my classes, as I would't have any way of taking the classes without him.  Simply learn as much as you can, and attempt to facilitate a good learning environment for those who are interested in being involved.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-28T01:32:40.227Z
Answers.Text: Good on you for even noticing the fact that he's creating opportunities. Often HS students don't take the time to think about the larger context of what their teachers are really doing for them. I don't fault them for that; they're young! But in my experience, the kids who *do* notice are pretty special kids. :)
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-28T02:27:37.247Z
Answers.Text: Also, _welcome_ to [cseducators.se]. Having students here is quite helpful. Hope you can find other questions where your perspective can be helpful. Thank for joining the site.
Answers.UserDisplayName: Gypsy Spellweaver
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-27T23:36:57.107Z
Answers.LastActivityDate: 2018-02-27T23:36:57.107Z
Answers.UserDisplayName: Rescis
Answers.Body: <p>You start by explaining how CS is different.</p>
  
  <p>One thing that is not going to be immediately apparent to high school or even university students is how <em>young</em> CS is as a discipline compared to other subjects. Or rather the ramifications: they probably won't realize how <em>different</em> that is from the other subjects they get in the core curriculum even as they're memorizing important dates. Every subject has a forefront of changing knowledge (one that high school and undergraduates basically never see) but for the most part that's <em>all</em> CS has.</p>
  
  <p>For every quicksort or lambda calculus there's a hundred things that have become common place in the lifetime of your students. So unlike math, science, literature, etc. which have centuries if not millenia in their bodies of knowledge CS has decades <em>at best</em>.</p>
  
  <p>So you explain that, you explain that over the course of their careers as computer scientists or software engineers they will almost certainly constantly have to learn new concepts/tools/techniques, and that you are doing that right now.</p>
  
  <p>And that's actually quite exciting even if it makes for some conundrums like yours: how many fields can you be in where you, Joe Blow/Jane Doe programmer, can possibly make or at least contribute to a meaningful advancement?</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-28T11:34:14.803Z
Answers.LastActivityDate: 2018-02-28T11:34:14.803Z
Answers.UserDisplayName: Jared Smith
Answers.Body: <p>There are lots of great answers here.</p>
  
  <p>I am adding this answer to preserve it outside of a comment.</p>
  
  <p>If you are new and learning the course material yourself try to apply more structure to the content to assist yourself and your students.  A good tool for this is to develop scaffolding for your exercises that your students work within. This will help contain the material and limit the types of issues that you will need to prepare for.</p>
  
  <p>I have seen that one of the biggest challenges for new CS teachers is "debugging" student code.  This can be time intensive and distracting. Scaffolding can help immensely in this area.</p>
  
  <p>Another technique is working backward on an exercise. Provide answers that are flawed in some manner and have them correct them. This kind of backtracking can avoid the many paths students can take if they were to move forward through some material.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-03-03T14:47:37.167Z
Answers.LastActivityDate: 2018-03-03T14:47:37.167Z
Answers.UserDisplayName: Mr Bradley
Body: <p>Teachers are sometimes called upon to teach something with which they have no experience. Don't laugh. Doctoral level education is often exactly like this. The student's advisor may have no background in the student's topic, but must still provide effective guidance. </p>
  
  <p>At the other end, teachers are often called upon to teach something like APCS-A when they don't themselves even know Java and have little, if any, experience in Object-Oriented Programming. How can they proceed and be effective. I don't think that "Keeping one day ahead of the students" is any sort of answer to this and will likely leave the students frustrated and confused. </p>
  
  <p>If you are in this situation, I assume that the obvious solution (<em>DON'T</em>) isn't available to you. Similarly "<em>Fake it 'til you make it</em>" isn't a solution since the future of your students is at risk. </p>
  
  <p>It is possible, of course, to borrow a syllabus and book list from some other teacher, but the deeper issue is about how you respond to student questions and concerns when your own knowledge doesn't provide an answer. </p>
  
  <p><strong>What would you do in a situation in which you know very little, to provide effective learning among your students?</strong> Past successful experiences would be especially welcomed. So would caveats.</p>
  
  <hr>
  
  <p>Here are two links that speak to some of the things in this question:  </p>
  
  <p><a href="https://www.chronicle.com/article/Teaching-What-You-Dont-Know/135180" rel="noreferrer">https://www.chronicle.com/article/Teaching-What-You-Dont-Know/135180</a><br>
  and<br>
  <a href="http://harvardpress.typepad.com/hup_publicity/2011/07/tips-for-teaching-what-you-dont-know-huston.html" rel="noreferrer">http://harvardpress.typepad.com/hup_publicity/2011/07/tips-for-teaching-what-you-dont-know-huston.html</a></p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-02-28T09:22:35.800Z
Comments.Text: "How do you teach something when you don't know it yourself?" .... "badly" ? (I just wanted to tell a joke). But joke aside, the best teachers imo are those who have enough knowledge about the subject to be able to "distill" the important things from it, and to give enough different point of views on it to help those who may not understand the first few tries to explain it. This requires "deep enough" knowledge of the subject matter.
Comments.UserDisplayName: Olivier Dulac
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-02-28T09:48:44.000Z
Comments.Text: This is the fundamental condition of teaching. There are always class members who get it more than you do. Your task, life-long, is to accept that, cope with that, and still provide teaching value, even to those students.
Comments.UserDisplayName: user207421
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-02-28T10:14:28.247Z
Comments.Text: Related: https://academia.stackexchange.com/questions/86953/can-i-learn-the-course-material-for-the-first-time-while-im-teaching-it
Comments.UserDisplayName: Pere
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-03-02T08:45:36.620Z
Comments.Text: Did you consider giving your students an opportunity? As students, we presented quite a few lectures ourselves. This is especially powerful with hands-on lectures. Especially with CS, you're pretty likely to find a couple students that are already pretty good at things you're lacking in :)
Comments.UserDisplayName: Luaan
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-03-02T13:51:19.647Z
Comments.Text: When I have had very small class, or small part of learning, then I model how to learn. We all learn together.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-03-02T14:21:24.760Z
Comments.Text: When I was at uni. Two things happened. One annoyed me: The first the teacher was one/two ahead, this encouraged me to try to overtake. However for me it was learning at 2nd/3rd language. The other the project/tutor, told me I could not make a one bit digital to analogue converter (only 2 analogue components: speaker, and a capacitor), as he was a digital specialist. This encouraged be to do it anyway.
Comments.UserDisplayName: ctrl-alt-delor
Tags: <best-practice>
Title: How do you teach something when you don't know it yourself?
ThreadText: # How do you teach something when you don't know it yourself?
  
  (Asked by: username_0 on 2018-02-26)
  
  Teachers are sometimes called upon to teach something with which they have no experience. Don't laugh. Doctoral level education is often exactly like this. The student's advisor may have no background in the student's topic, but must still provide effective guidance.
  
  At the other end, teachers are often called upon to teach something like APCS-A when they don't themselves even know Java and have little, if any, experience in Object-Oriented Programming. How can they proceed and be effective. I don't think that "Keeping one day ahead of the students" is any sort of answer to this and will likely leave the students frustrated and confused.
  
  If you are in this situation, I assume that the obvious solution (*DON'T*) isn't available to you. Similarly "*Fake it 'til you make it*" isn't a solution since the future of your students is at risk.
  
  It is possible, of course, to borrow a syllabus and book list from some other teacher, but the deeper issue is about how you respond to student questions and concerns when your own knowledge doesn't provide an answer.
  
  **What would you do in a situation in which you know very little, to provide effective learning among your students?** Past successful experiences would be especially welcomed. So would caveats.
  
  ---
  
  Here are two links that speak to some of the things in this question:
  
  <https://www.chronicle.com/article/Teaching-What-You-Dont-Know/135180>  
  and  
  <http://harvardpress.typepad.com/hup_publicity/2011/07/tips-for-teaching-what-you-dont-know-huston.html>
  
  **Tags:** best-practice
  
  > **Comments:**
  > **username_1**: "How do you teach something when you don't know it yourself?" .... "badly" ? (I just wanted to tell a joke). But joke aside, the best teachers imo are those who have enough knowledge about the subject to be able to "distill" the important things from it, and to give enough different point of views on it to help those who may not understand the first few tries to explain it. This requires "deep enough" knowledge of the subject matter.  
  > **username_2**: This is the fundamental condition of teaching. There are always class members who get it more than you do. Your task, life-long, is to accept that, cope with that, and still provide teaching value, even to those students.  
  > **username_3**: Related: https://academia.stackexchange.com/questions/86953/can-i-learn-the-course-material-for-the-first-time-while-im-teaching-it  
  > **username_4**: Did you consider giving your students an opportunity? As students, we presented quite a few lectures ourselves. This is especially powerful with hands-on lectures. Especially with CS, you're pretty likely to find a couple students that are already pretty good at things you're lacking in :)  
  > **username_5**: When I have had very small class, or small part of learning, then I model how to learn. We all learn together.  
  > **username_5**: When I was at uni. Two things happened. One annoyed me: The first the teacher was one/two ahead, this encouraged me to try to overtake. However for me it was learning at 2nd/3rd language. The other the project/tutor, told me I could not make a one bit digital to analogue converter (only 2 analogue components: speaker, and a capacitor), as he was a digital specialist. This encouraged be to do it anyway.  
  
  ---
  
  ## 9 answers
  
  ### Answer by username_6 on 2018-02-26. Score: 69 | Accepted answer
  
  This is a vital question, perhaps *the* vital question, for a CS educator to deal with, because technologies will keep pushing us. There is no end to this particular merry-go-round.
  
  I have been stuck, non-stop, in exactly this situation, for the last four years in a high school for gifted students, and I can attest that it is physically, mentally, and emotionally exhausting. It can push you to the edge of a nervous breakdown. It can also be incredibly rewarding, both for you and for the students.
  
  I claim no special wisdom, but here are some of the techniques I've been using. I hope will be of help to other teachers gazing down the barrel of a similar gun at some point in their career:
  
  1. Don't be dishonest with your students or try to hide your lack of background. There will be moments that you come up short, and your honesty and forthrightness from the start will help to mitigate any loss of trust that students might feel when this happens.
  2. Find several great resources. Do not depend on one resource to give you the sort of thorough understanding you need to do this well. A strong textbook is great, if there is one to be found, and can help you both understand the material and sequence your lessons. However, single-source preparation leads to two problems: (a) your understanding will be brittle, and you will be left with only one way to explain a concept when students are lost, and (b) it will be very difficult to deal with questions, particularly from your brighter students, that go off-script and try to connect with outside ideas.
  
     In my best situations, I will have a textbook, a tutorial series (such as might be found on YouTube or a website somewhere), some exercises to work though, and a tutor to help me when I get stuck. SE can, itself, act as the last two of these for CS topics in a pinch, though it is not as good of a tutor as an actual tutor, who will build a dialogue and set of understandings with you over time.
  3. Use the lesson planning itself as your final preparation, in which you summarize the key understandings and design exercises to help your students fill in the dots. Over-prepare your lessons, because your instincts for how long the material will actually take to cover are not yet honed.
  
     (I once prepared what I thought would be 3 lectures, and ended up delivering it as 1 lecture because things went extremely smoothly. At the end of the hour, ,I arrived at the end of literally all of the material I had prepared. The students enthusiastically told me that the lesson had made a lot of sense. *"Great,"* I thought, *"I'm glad that made sense to the students, but what in the world am I going to do* ***tomorrow****??")*
  4. When students ask interesting, tangential questions, don't be afraid to reply by asking if they would be willing to research it a little and report back to the class next time. It is important that not every student question become a major research assignment for you. Instead, choose your battles carefully. Burnout is a real danger, and your time is valuable. You have made a pact to help guide students through the main topic; don't get caught up in too many tangents on your first pass.
  5. If you're really caught for time, you can simply present learning materials and ask students to work together to try to make sense of it. Be careful not to do this too often, because while this technique can work reasonably well for your high-fliers, it does not leave you in a position to guide and help the students who really struggle.
  6. Accept that this is an imperfect business. You will mess up from time to time. You will make mistakes. You will arrive at a lecture feeling prepared, receive a student question, and suddenly realize that you don't understand something that you thought you did. You may even discover that something you taught was outright wrong. Be prepared to go back to the class and revisit an idea if you screw up. But also, be prepared to forgive yourself for some amount of weakness. You are an imperfect being trying to build a learning opportunity for your students, and all you can do is try your best.
  
  > **Comments:**
  > **username_7**: I would add to this "Leverage what your students know that you don't". A few years back, my daughter's high school was brand new, and setting up their video and media program. The teacher was a good teacher but a complete novice in the video production world. My daughter had been working on a live webcast team since 7th grade, and had risen to the level of technical director by 11th grade. She pretty much set up the entire program, freeing the teacher to learn and take care of non-technical concerns like budgets and school politics.  
  > **username_8**: Also if you're creating your own multiple choice tests be prepared to get challenged. It is very easy to think you're writing a distractor answer that is false only to have students prove to you that it's also true.  
  > **username_9**: Ben you said everything I would have said.  Great answer.  I'll add two things: if teaching code, be sure to write all exercises yourself before you assign them to students (or even concurrently in class - and I do this even if I "know" the language); use a timer to give yourself five or even 10 minutes during class when you need it to find your bearings or wrap your mind about what you're going to do next.  Tell your students that if they hit the wall while your timer is set they should investigate their problem independently (or get help from others) and that you'll be with them shortly.  
  > **username_6**: @JudyOakley Partial answers are considered answers here on SE, and you have two great pieces there.  I'm particularly interested in your last bit; could you flesh that out?  I don't quite understand what you mean, but it gives me a nagging sensation that there's a trick I could start enacting right away to make life better for me and my students.  
  > **username_10**: `in a high school for gifted students` ... are you Charles Xavier?  
  > **username_6**: @username_10 Yes, yes I am.  
  > **username_11**: I will add an answer to the post, but one other point is to make effective use of scaffolding for your assignments. This will help you as a new teacher contain the types of problems and questions students will run into as you become more familiar with the material.  
  
  ---
  
  ### Answer by username_0 on 2018-02-26. Score: 13
  
  There is one strategy, at least, that often works, especially with older and more experienced students. Using it in Secondary School would, perhaps, be too risky. It is also probably not indicated for core courses except when no alternative can be found.
  
  The underlying principle is that you should not lie to your students or present yourself as other than you are. In other words, don't fake it. On the other hand, what you *are* is a scholar: someone who can learn. Someone who knows *how* to learn.
  
  The basic technique is to run the class like a learning lab in which everyone contributes ideas constantly. There is more discussion and almost no "lecture" unless you can get the students to give mini-lectures on cool things they have discovered about the topic. It is teamwork in the extreme with yourself just a team member.
  
  EXCEPT, that your main job is to show them how to learn: research, reading, experimentation, trial and error. You don't supply a lot of *course content* but you do supply learning strategies and feedback on the things that the students learn.
  
  A slightly less important task is to guide the students away from pure chaos. You will need to get them to focus on things in a reasonable order, delaying things that seem deeper or less connected to the main ideas being presented.
  
  To ease your comfort level, try to find a few recognized experts in the topic at hand. This doesn't necessarily mean text-book authors, unfortunately. You might be surprised that some of them are willing to give you guidance (pointers to papers, etc) that will help you guide the class.
  
  One trick is to have daily summaries produced, perhaps by yourself, and perhaps by students, rotating this task and making the summaries available to all: What are the two or three most important things we discovered today.
  
  If the course is about programming you can organize a very agile team to try to produce something interesting within the framework of the course. If it is about theory you can try to teach students how to find the crux of the proof of a theorem (for example).
  
  Note that this is exactly what you are forced to do if you are teaching a topic that is state-of-the-art, edge-of-the-known-world stuff. Nobody knows how to teach it methodically, so try to develop the method yourselves.
  
  Another use of this is when a group of students forms a Learning Club to explore some topic. The group leader may know a bit more than the others and can try to guide them, but it is a learning-for-all situation.
  
  Learning how to learn is likely more important than any specific topic. Without that you can never leave your guides behind nor can you outshine your teachers. Older students have, hopefully, already experienced learning and, hopefully, have a few learning strategies developed already so it isn't as big a task as teaching novices in a field in which they have no preparation at all.
  
  ---
  
  I note that there was a time, around 1980, I think, at which you could earn a Doctorate from Carnegie Mellon University in CS, but could *not* earn an undergraduate degree. The reasoning behind that was that "there was insufficient academic content" at the time in CS, in the faculty's judgement. The doctoral students were, of course, developing that content that could later filter down to a wider audience.
  
  > **Comments:**
  > **username_12**: With respect to your aside about undergraduate degrees in CS, the first taught course in CS was a post-graduate Diploma at the University of Cambridge in 1953; Cambridge introduced an undergraduate "Part II" in 1970 as the third year of a science degree; expanded it to two years in 1978 (following one year of maths or science); and to "three" years (really 2.5, because half of the first year was still science) in 1989. Even today they don't have a full three year course of just CS, although it's up to 2.75 years. Source: http://www.cl.cam.ac.uk/downloads/books/CambridgeComputing_Ahmed.pdf  
  > **username_13**: _"Learning how to learn is likely more important than any specific topic."_ This.  
  
  ---
  
  ### Answer by username_14 on 2018-02-26. Score: 7
  
  1. **All possible questions about an assignment should have an answer if it would block students from finishing it if left unanswered.** Questions which are vital for assignments that are not answered is the death of the assignment.
  2. **Limit your scope further.** If you don't know a subject, you will not be able to fill in the holes for any edge cases without sufficient understanding. Therefore, don't teach what you cannot explain sufficiently enough to have them do the assignment.
  3. **Understand learning dependencies.** A common mistake is to assume students know something when they don't. You can use a simple concept map to do this. One of my favorite tools to do this is to use GraphViz, a suite of programs to help create node-edge graphs. A visualization can also be very helpful to do this.
  
  Here is an example of a `.dot` file that can be converted using GraphViz's `dot` program into the following image:
  
  ```
  digraph G {
      label="Basic C Programming";
  
      n0 [label="Binary Values"]
      n1 [label="Hello World"]
      n2 [label="Basic Data Types (int, float, char)"]
      n3 [label="Pointers"]
      n4 [label="Arrays"]
      n5 [label="ASCII Encoding"]
      n6 [label="Strings"]
  
      n0 -> n5
      n2 -> n1
      n2 -> n3
      n2 -> n4
      n5 -> n6
      n3 -> n6
  
      n7 [label="Conditionals"]
      n8 [label="Functions"]
      n9 [label="Structures"]
  
      n7 -> n8
  
      n10 [label="While Loop"]
      n11 [label="For Loop"]
      n12 [label="Do While Loop"]
      n13 [label="Switch"]
  
      n10 -> n11
      n10 -> n12
      n7 -> n13
  }
  
  ```
  
  [![A basic, unfinished concept map for basic C programming concepts](https://i.sstatic.net/Qnuss.png)](https://i.sstatic.net/Qnuss.png)
  
  4. **Zero-bug tolerance in assignments and code.** How can students trust you if you don't have a solution that compiles?
  
  > **Comments:**
  > **username_15**: Welcome to [cseducators.se]! This is a really interesting answer! I hope to see you around the site more :)  
  
  ---
  
  ### Answer by username_20 on 2018-02-27. Score: 7
  
  I am currently a high school student takes APCS, as well as several other IT related courses from an instructor who has very little understanding of CS concepts as a whole, and I greatly appreciate him for essentially sponsoring these classes. If you are in this situation and interested in contacting someone with experience doing this, I'd be happy to have him get in touch with you. He started in the navy doing electrical work, and then transitioned into being an officer relatively early on, so most of his experience is irrelevant to CS and IT.
  
  What he does is:
  
  * Organize the business aspects of creating courses. Currently, we have 8 IT courses, each ending with getting either a Comptia or MTA certification, that he has been able to negotiate funding for them from both grants and connections he has from the military. Without his ability to get funding, I would have nowhere near the job opportunities I am presented with now, nor the opportunity to learn as much as I have.
  * Finds people he knows who do have in depth experience with CS. One of his friends is a full time software engineer at a large corporation, and my teacher convinced him to get certified to teach and his friend is now teaching several CS courses accredited by our local community college at my high school.
  * Teaches using good, online materials. He never lectures during class, as that would be a waste of time for all involved parties. Instead, he treats the class periods as blocks of time for students to research/learn from coursework made by people more knowledgeable. This works best in classes with students interested in the course material, however most taking advanced CS courses are and this has not been an especially large issue.
  
  So, to recap, what he does is uses his skills and network to find others who are knowledgeable to teach (be it online coursework or people he knows), and create opportunities for the students that otherwise would not have existed. I don't fault him for not knowing the answer to most of the questions in my classes, as I would't have any way of taking the classes without him. Simply learn as much as you can, and attempt to facilitate a good learning environment for those who are interested in being involved.
  
  > **Comments:**
  > **username_6**: Good on you for even noticing the fact that he's creating opportunities. Often HS students don't take the time to think about the larger context of what their teachers are really doing for them. I don't fault them for that; they're young! But in my experience, the kids who *do* notice are pretty special kids. :)  
  > **username_21**: Also, _welcome_ to [cseducators.se]. Having students here is quite helpful. Hope you can find other questions where your perspective can be helpful. Thank for joining the site.  
  
  ---
  
  ### Answer by username_16 on 2018-02-26. Score: 6
  
  The effectiveness varies from teacher to teacher; but generally, it works well. (And can be optimized)
  
  The method I describe has a few stages, each dependent on the previous ones.  
  To teach something you don't know, share this method with the students (after you did a part of it, preferably after reaching the third part). Learn it at a quick pace, and let them see how you learn it.
  
  Two things are achieved in that way: You can answer their questions, and they are exposed to new methods of learning.
  
  ### Firstly,
  
  If possible, sacrifice a few sleepless nights (not one after the other, mind you) to dive into the material and learn it. Read it, reread it, and then again.
  
  If the night is needed for other things, then allocate time during the day. As I've said, every stage is important.
  
  If you do sacrifice the night, then bear in mind:  
  There is indication that learnt material doesn't actually "sit well" in the mind if one hasn't "slept on it" (keeping it simple: during sleep, the brain makes new connections in the brain, and that's how we learn).  
  So after rushing through a subject, you should let **that** subject cool down.
  
  That last part is the semi-second stage. It usually happens by default, but (speaking from experience here) one might get carried away, so...
  
  ### Thirdly
  
  After reading the material for a subject, do what your students would do if you had known the subject. **Give yourself exercises**. At first, find online ones. For APCS-A, I'm pretty sure there are exercises available *somewhere* on the internet. As is with *everything*, practice. Start simple with online things, and then:
  
  After you feel sufficiently practiced with the material for a subject, start
  
  # **creating your own exercises**.
  
  This is the big one. This is the main point. This is my answer.
  
  I cannot emphasize that more (I suppose I *could* make it *italic*...). This part is, by far, the most important. This is far from saying that one can "skip" to it. I've tried, it doesn't work if you don't do the previous parts.
  
  For a better learning curve, try to think up of a division of a subject (for example, dividing [OOP to sub-subjects](https://cseducators.stackexchange.com/q/4082/150) in a logical). Create exercises for yourself for each division of the subject. Try to make both practical and theoretical questions.
  
  The latter being questions of pure knowledge, and the former - questions of applying said knowledge.
  
  Track the difficulty of the various questions in each sub-subject.
  
  These stages will come in handy when you teach *others*. You'll have a well ordered collection of exercises, fully covering the material, in varying difficulties.
  
  I have done what I have described on multiple occasions. This works for self learning (Not so surprising `;)`).
  
  ---
  
  The main point is:
  
  ## Learn it, as you would let your students learn it
  
  ---
  
  Now, as for answering students' questions:
  
  If you don't know the answer to a student's question, then say so. But also say something like
  
  > I'll check and get back to you on that
  
  And then treat the question like one of the theoretical knowledge exercises (mentioned above). Usually, the theoretical knowledge can be found on the spot by searching google. There's no shame to let students see how *you* find information.
  
  When you get back to the student with the answer, show the student how you found it, detailing how you learnt it. This is both useful for you (to make the knowledge stick in *your* head), and useful for the student.
  
  > **Comments:**
  > **username_17**: -1  for using Firstly, Thirdly  instead of First, Second, ...  and for jumping from Firstly to Thirdly. Sorry, it's a pet peeve of mine  
  > **username_16**: @username_17 If you read carefully, I have a "secondly". Doesn't have a huge header, but I do specify that there is a "second stage"...  
  > **username_18**: This. This is really key, and the other answers are helpful as well. As a physician, I have had to teach medical students, residents, and PAs/CRNPs. Imagine the harm I could cause trying to bluff my way through teaching them about an illness. You either know it or you don't; when you don't, you say, I'll get back to you about that, and then read about it yourself until you understand it. It's no different for any subject at any level; the students deserve to learn.  
  
  ---
  
  ### Answer by username_9 on 2018-02-28. Score: 5
  
  Fleshing out something I mentioned in a comment to another answer - a very simple thing I have done in the past is to set a timer for myself in class when I feel things have gone south, for whatever reason, to give myself time to regroup and possibly even change direction. Setting the timer forces me to admit that things are not going the way I expected (to myself AND my students) and focus on determining what to do next. It may just be three to five minutes - but do it, and make yourself sit down and actually think. You will be surprised at what you might come up with, either based on plans you already have for another day, or something you may have already covered that you need to reinforce.
  
  Our role is, yes, to teach students our content, but more importantly, it is to teach them to be lifelong learners. I can model that by learning alongside them, even with a subject I think I "know". I can also show them that I make mistakes and missteps - but that I will make a correction and keep going.
  
  > **Comments:**
  > **username_0**: Good point. Trying to brazen your way out of a bad situation is almost always noticed by students. The teacher's reputation will be diminished. Life is much easier when you don't have to insist that you are perfect.  
  
  ---
  
  ### Answer by username_19 on 2018-02-27. Score: 5
  
  One thing I think is important to acknowledge is the advantage you have in having learned something recently before teaching it. Mainly (these are related):
  
  **1) It's easier for you to distinguish "easy" and "tricky" concepts**
  
  When you've had a skill/background knowledge/understanding of a concept for a long time, the memory of learning it often fades, in my experience. It's harder to recognize what takes two minutes to understand, and what takes hours/days/several different methods of explanation.
  
  **2) You can guess where students will get stuck and what questions they will have**
  
  This is probably (hopefully) because you've just gotten stuck in those same spots, and asked yourself those same questions. In my experience, formulating a good answer for myself, or helping myself get over a particular hurdle has been helpful for my students, who often find the same explanation I gave myself illuminating.
  
  **3) A student's question that you can't answer immediately can be a great learning experience**
  
  It's ok (in my experience) to say that you don't know. Like other answerers here (username_16), I say "I will get back to you"; in a few minutes, by email, or in the next lesson; and if I can, give a best guess at an answer. In the worst case scenario, someone has called you out on not being fully prepared, and you need to scramble for an answer. In the best case, it's a question that goes beyond the course material, and an opportunity for you both, and possibly the rest of the class, to learn something new (and promote learning in general). In my experience, students usually appear proud (and they should be) that they've thought about something in a way that I haven't before. You can't be expected to be the world expert in everything that you teach, and even if you're already familiar with a topic there will always be questions that you don't know the answer to.
  
  I would also note that learning as (or slightly before) you teach works much better if you have (as pointed out in other answers)
  
  **a) A prepared syllabus/some homework questions**
  In particular, it's difficult to provide the conceptual overview required for a syllabus until after you've learned much of the material.
  
  **b) Someone(s) you can ask for help.**
  We all have questions that we can't seem to answer on our own... If you need a syllabus, hopefully this same person can help you here as well.
  
  **c) Extra time and energy to learn.**
  In particular, you want to understand your material more deeply than you expect your students to. This means that, even if you learn quickly or already have some knowledge of the field, you will probably need a reasonable amount of time for self-study.
  
  > **Comments:**
  > **username_6**: Those are good additions. Welcome to [cseducators.se]!  
  > **username_0**: Your profile suggests you aren't registered here. I hope you do register and come back often.  
  
  ---
  
  ### Answer by username_22 on 2018-02-28. Score: 4
  
  You start by explaining how CS is different.
  
  One thing that is not going to be immediately apparent to high school or even university students is how *young* CS is as a discipline compared to other subjects. Or rather the ramifications: they probably won't realize how *different* that is from the other subjects they get in the core curriculum even as they're memorizing important dates. Every subject has a forefront of changing knowledge (one that high school and undergraduates basically never see) but for the most part that's *all* CS has.
  
  For every quicksort or lambda calculus there's a hundred things that have become common place in the lifetime of your students. So unlike math, science, literature, etc. which have centuries if not millenia in their bodies of knowledge CS has decades *at best*.
  
  So you explain that, you explain that over the course of their careers as computer scientists or software engineers they will almost certainly constantly have to learn new concepts/tools/techniques, and that you are doing that right now.
  
  And that's actually quite exciting even if it makes for some conundrums like yours: how many fields can you be in where you, Joe Blow/Jane Doe programmer, can possibly make or at least contribute to a meaningful advancement?
  
  
  ---
  
  ### Answer by username_11 on 2018-03-03. Score: 3
  
  There are lots of great answers here.
  
  I am adding this answer to preserve it outside of a comment.
  
  If you are new and learning the course material yourself try to apply more structure to the content to assist yourself and your students. A good tool for this is to develop scaffolding for your exercises that your students work within. This will help contain the material and limit the types of issues that you will need to prepare for.
  
  I have seen that one of the biggest challenges for new CS teachers is "debugging" student code. This can be time intensive and distracting. Scaffolding can help immensely in this area.
  
  Another technique is working backward on an exercise. Provide answers that are flawed in some manner and have them correct them. This kind of backtracking can avoid the many paths students can take if they were to move forward through some material.
  
  
  ---
  
  