AP Computer Science Materials This site is from a summer workshop they run for APCS teachers. It includes several good sample assignments from their CSE142 course.

Created by Rebecca Dovi

AP Computer Science Materials This site is from a summer workshop they run for APCS teachers. It includes several good sample assignments from their CSE142 course.

Created by Rebecca Dovi

It is midterm exam time here, which means lots of review. Especially for the AP Computer Science class I try to build in plenty of time to do multiple choice practice.

Not my Board – it’s from Mathastrophe |

This year I am trying a new game –**ZAP**.

Directions can be found here.

Teams of students play against each other. Everytime a team gets a question correct they pick a ZAP card out of one of the envelopes. The cards say things like “Steal 2 points from one other team”, “Add Two Points to your Score” and “ZAP!” where you lose all points.

The advantage to this is it keeps all the teams scores pretty close. This is my main rule for classroom games –**Close scores = engaged students**. You’ve had that experience right? Your team is getting beaten badly, how long do you really keep playing? If all the team’s scores are with in 2-3 points everyone is envolved. When one team starts gaining a huge lead it means everyone else is pretty tuned out.

For AP we’ll use review MC questions from the Barron’s review book.

In my imaginary free time I would redo the cards with things like “MOD your score by 5” and “Score ++”.

Here’s a similar game called Bazinga that also includes this like “Randomly Switch a Member with Another Team”, “Randomly have a player from the winning team go to the losing team” and “Take half of all the other team’s points”. I like the idea of switching kids around, not so sure about the last one. Seems to violate my rule of “keep the game pretty close so the kids stay interested”.

Created by Rebecca Dovi

Ok, this is cracking me up:

This site lets you create “official” certificates, Mad-Libs style. It is the Bureau of Communication.

This has potential for the Intro to CS class. We’re going to be doing String manipulation soon and this could make for a fun start.

Created by Rebecca Dovi

I have a thing for elementary classrooms. While the idea of teaching the 12 and under crowd is in no way appealing, all the projects and circle time really sound fun.

Here are a few of my favorites:

This one we have used already this year. It is great for doing Octal and Hexadecimal numbers. It really gets the point across that hex and octal are a more compact way of storing large values. When you pull the cups apart you have the number written inside…I’ll try to post a picture of the Hex-Cups to make that clearer.

We already do the Analog-Binary Calculators – which my kids call Flippy-Dos, so the cups have become Roley-Dos. And seriously – the flippy-do is the *easiest* way to show twos comp for negative numbers.

This would be great for showing the sequencing of code. My beginning students have a hard time sometimes getting the ordering of the commands. This could be a fun way to demonstrate how important the order is. They could work in pars with a whiteboard and follow each other’s commands.

This project maps where a student is in their community. This is my next project for the CS Principles course. One of the my goals for the students is to understand that the Internet is a physical *thing*. My plan is to do these showing where they are on the Internet. They would be on the small circle in the middle – and then the structures that make up the Internet are on each of larger circles moving out.

This is a review game – the site includes the cards for the pockets. This would work well for AP style problems. Here is a link to how I used this with my APCS classes.

Created by Rebecca Dovi

This year we tried something different for the final APCS exam review. We’ve been doing multiple choice and free response problems for weeks now, and really we are at the point where they either know it or they don’t.

So what I want is for them to remember all the connections – those picky details that can make a huge difference. Like when do you use == and when the .equals? Or when to use super vs this.

So I gave them a list of terms from the APCS curriculum (see below) and I had them cut them out to make a mind map. They had to draw and explain the connections. They worked in groups on this and there was a lot of great discussion today as they debated where the pieces fit together.

The list isn’t complete – I keep remembering things I left off. The kids found most of those as they built their maps.

.length() .move .random .remove .size() .turn ++ = = abstract accessor Actor array 1-D array 2-D base case boolean class Color |
concatenation constructor double extends Flower for for-each if implements int interface List Location Math method mutator new |
Object object overload override parameter primitive private public recursion return row major toString void |

Created by Rebecca Dovi

In my APCS class we are functionally done with new topics this year. They are working on searches and sorts the next two weeks, but in my mind that is just an application of the array material we covered back in December.

This is how I pace my AP class…as a spiral. We hit a topic early on, like arrays. Then in the next unit we cover methods, and guess what? Most of the methods I have them write process arrays. We do class design, and here we are back on arrays. My hope is that by seeing them embedded throughout with lots of repetition, they might actually remember a few things about them on the AP exam, or in college, or on Jeopardy. I’m a dreamer that way.

To start off we did a day of review about arrays. I gave them some practice exercises, then we did CodingBat problems. That was Monday. Wednesday we started searches. First I gave them a quiz – I randomly picked one of the CodingBat problems from last class and used it for a 60-80-100 quiz.

As went over the problem we talked a lot about stealing points on the APCS Free Response questions…did you know you could steal points?

We did the 2009 #1 free response problem. it ties in nicely with a lot of what you see in the CodingBat problems.

Then we did searches. **I used Plastic eggs** for the linear search. We did the telephone book trick for the binary search. Here’s a video of another way to teach this.

And as a side note, as telephone books become less common I am finding I horde these.

Created by Rebecca Dovi

One of my favorite toys in computer science are plastic eggs. Cheap and they can be used to teach so many things. We are working on searches and sorts in the APCS class right now. They also work well when doing algorithms in the CS Principles class.

To start with searches and sorts I use plastic eggs filled with fish tank gravel. Email your faculty and parents – I guarantee you can get these for free. Fill the eggs with varying amount of gravel and tape them shut. Better yet have a kid do this. You are busy.

I let the kids pick a partner and each pair gets 6 or 7 eggs. Please do not forget to explain that the eggs do not have candy in them. I didn’t do that the first time we did this and it made for a very disappointing mess.

Have them put the eggs in a row then “search” for the heaviest egg. Write out the steps you followed.

On the board I then do:

int eggs[] = new int[6];

This is in the APCS class, in CS Principles I make this less formal since they will be doing this in Scratch

I have the kids come to the board and write out their algorithm, in Java in the APCS, pseudocode in CS Pricniples, using this array. Bam! They just all created a Linear Search.

So, why eggs?

I used to do this writing numbers on the board. They watched and I did. It is always better when THEY do. They are going to remember the Linear Search much better if it was their idea in the first place.

Also, when you do numbers the amazing processor that is the human brain can just scan the list and pick the biggest. No problem.

But a computer cannot do that – it cannot just look at a data set in aggregate and pick one. It must “touch” every piece of data in the set and make a comparison. Which is exactly what the kids do with the eggs. Point that out, they should know that.

This is also a good time to go over swapping. They get so confused on this.

How many times have you had them try to swap two numbers and they do:

a = b;b = a;

Here is the fix: Hand each group some cups – make it look like you are giving them an arbitrary number, but make sure they all get at least 3.

Rule – you can only have an egg in a cup. NEVER can you have two eggs in a cup. Now swap two eggs.

Again, once they get the point of using a third cup, you have them write out the algorithm in the language of your choice.

Created by Rebecca Dovi

This year in the Intro to Programming class we are trying logic groups. This past summer Robert Luciano presented this at the UVA Tapestry workshop. He’s also written about it here. This summer he gave several example puzzles which can be found in the zip file on the Tapestry site.

The idea is you put the kids in groups and present them with various logic puzzles. Getting them off the computers and collaborating to solve puzzles helps build problem solving, which is at the core of what we do.

This is our third week with the groups and so far the kids are really enjoying it. I have seen some kids that do not normally get very active with class activities get very involved in the puzzles. We are on a block schedule – so we do it the first time I see them each week, either Monday or Tuesday.

Today’s puzzle came from this site: Brain Food It is #1, the elevator problem.

** Update – this particular puzzle stank. One kid had seen it before, and the rest of the groups got super frustrated. We’re going to try again on Wednesday with the latest edition of Bits and Bytes from the NSF. This latest issue has some great puzzles and tie ins with computer science curriculum.

Created by Rebecca Dovi

In the AP class we are transitioning from new content towards test prep. While we do AP style problems all year I have just really started talking about strategy for the AP exam itself. On the Free Response questions our theme is Stealing Points.

Grabbing points on the free response –> Here’s what I march my kids through:

- Is it a method? Look for return type – does it return an int?

int x = 0;

return x;

- while we’re looking at the return, does it return a boolean? You should probably have one case that returns a true, and one a false. Just a thought
- Does it tell you to return a -1 under certain situations?

int x = -1;

return x;

- does the problem use an array? Well, we usually use a for loop with those – write one. Use .length
- ArrayList? for-each loop, unless you are removing things
- does the problem ask a question? We use if’s for those. You probably want to access the array/ArrayList there too.

You get the idea – we’re just looking through our programming toolkit and looking for patterns in the problem.

Now obviously this is a terrible way to solve a problem. This technique is our worst case scenario. You’ve read the problem and *have. no. clue.* of what to write. It happens to the best kids, especially on a timed test under a lot of pressure.

Take a second to look over the grading rubrics and think about this technique. We did part 1a in class the other day. In theory you could get over half the points on this question and not have any idea of how to solve it.

Is this teaching to the test? Sure. But what I find is when you remove a kid’s blind panic and just get them putting some code on paper they often have that light-bulb moment that shows how to solve the problem. And really, writing code on paper is a bit silly, so a game plan is bound to help.

Created by Rebecca Dovi

I’ve been looking at what colleges do for their CS 101 classes. Here is a site for a Harvard class – all the lessons are available as videos and slides. This course seems to use scratch and C++, similar to what I am planning for the CS Principles course.

I have finished lesson 1. I really like the way binary numbers are introduced.

Created by Rebecca Dovi