<p>Our school is (finally!) going to introduce an AP CompSci A course this next school year (Sept. '13). Since I'm pretty much the only teacher on campus with any programming experience, I was asked to teach this course, and it sounded like a good challenge, so I accepted.</p>
<p>I don't expect this first year (or the first few years, probably) to be easy, but I was hoping you guys could give me some pointers in terms of resources I should look at, or things of that nature.</p>
<p>To give you some background, I'm currently a math teacher (geo, alg2, calc bc ap), but I graduated in 2000 from Harvey Mudd College with a B.S. in Math/CompSci. Right after graduating, I got a job as a programmer (C++ environment), until I got so sick of it that I quit in 2002 and became a math teacher, which is what I've been doing since. So although it's been a good 10+ years since I've done any sort of programming, I am still somewhat familiar with basic programming theory and syntax. However, most of that programming was in C++, and I understand that the AP test is focused on Java.</p>
<p>I’m a student, but I hate it when I ask my teachers questions (relevant ones that they should know, being experts in their field and all) and 1) they say “that’s a good question” and ask another question 2) they don’t know and have to reference the textbook or Internet.</p>
<p>Or 3) class is just powerpoints or lecture. Since this is compsci, have students write programs.</p>
<p>Our school uses the textbook “Fundamentals of Java” which basically has reading sections with questions. Could assign those as homework, while making programs in class.</p>
<p>And read the textbook thoroughly beforehand, front to back.</p>
<p>Also: consider joining the online APCS community (links available there).</p>
<p>Also: consider attending one of the many regional Summer Institutes that are run for APCS.</p>
<p>Also: for future years, apply to be an AP Reader! There’s very little better than actually grading the exams to see what kinds of things need to be emphasized in the classroom.</p>
<p>jkhuggins: thanks for the info - the school is actually paying for me to attend the APCS summer institute this summer, so hopefully that will be beneficial. </p>
<p>I know this first year or two will be a bit of a struggle (first year of ANY class is usually filled with learning curves, but AP classes more so), but hopefully after that I’ll really get the hang of it!</p>
<p>Please teach your students on the terms and vocabulary, because my teacher just gave us labs to do and we had to figure out how to program, but we didn’t know any terms! Half the class just recently learned what a constructor is!</p>
<p>My daughter’s CS teacher is in the same boat as you - real world CS and engineering experience and decided she wanted to be a teacher. CS is only offered if enough students sign up and the teacher is not good with Java and really doesn’t like teaching the class but does it because she knows the students want it. She is a spectacular AP Calc AB and AP Calc BC teacher but not good with CS. Here is advice from my daughter:</p>
<ol>
<li><p>Get comfortable with Java so that you can explain the concepts well instead of letting your students try to figure it out for themselves.</p></li>
<li><p>Lecture before you assign a new programming concept so the students can learn the concept and then give a lab so they can practice what they learned. Her teacher just turns them loose on the lab and they have to teach themselves.</p></li>
<li><p>Don’t make your students take the AP test if they don’t feel they can do well. My daughter’s teacher makes them take the AP test and my daughter is interested in CS so she would need to take it again in college anyway to actually learn Java correctly so the test is a waste of money and time (and my husband is currently unemployed so the wasted $89 is a hard pill to swallow). My daughter’s teacher said if the students don’t take the test they will be given a similar test that will be counted in their grade. Since the teacher hasn’t taught much about Java, the in-class test could be brutal and would negatively impact the student’s grade.</p></li>
</ol>
<p>currently a student, and i have found that all of the excercises and projects my teacher made us do payed off big. Also, when have them practice a bunch of the past exam FRQ; they are great.</p>
<p>Agree with terpsfan726 here. Practice practice practice.
HS senior here with 5 years of programming experience (2 in Java). I learned easily because I was lazy (ironically - we work hard to be lazy in programming).
I’d say sit down, write code. Do some FRQs. Contribute to an open source project written in Java.</p>
<p>Come up with examples and exercises for each topic. Throw in a lot of pictures and diagrams, because it’s a lot easier to explain some topics with pictures rather than with words (plus it’s a lot less boring for students since they don’t have to always be looking at code then).</p>
<p>My teacher uses PowerPoint slides with diagrams, has the class ask questions and answer questions presented in the PowerPoint, and after every lecture there’s an exercise that the students need to do. Homework is another exercise/an FRQ. Daily warmup MC questions + biweekly quizzes, and I usually go over the solution, explain it, and answer any questions.</p>
<p>Have students share their solutions to programming problems. This will engage them more and they’ll actually understand the code they’re writing.</p>
<p>Also, don’t hand-hold them 100% through the course. The biggest part of APCS is developing the critical thinking skills needed to program well. Students won’t get a lot of things the first time around simply because the way they need to think in APCS is a lot different from what they’re used to. Find multiple ways you would explain topics to a nonprogrammer and use them in your lectures, then have them use those topics in exercises. Be very careful that you don’t throw too much at once at them when you do this - GO SLOWLY. This way, when they do exercises they’ll know what’s going on - you should only need to answer the occasional question, not write out entire parts of the solution for them.</p>