Teaching AP Concepts in Scratch – Vol I

The AP A exam tests a student’s ability to solve problems and formulate algorithms.  The exam is not focused exclusively on Java language syntax.  The exam does use Java as a testing vehicle, but students need to have a broader knowledge of Computer Science to score well on the exam.

Many times there is much focus in the AP A course on Java and Java syntax details that it is easy to forget that Computer Science is more than a language; it is using a Computer and some set of tools to solve problems.  Solving problems involves designing algorithms and finding ways to use computing power to create a solution that might otherwise not be possible or would not be nearly as efficient.

Can you teach the concepts tested on the AP A exam using Scratch?  The answer is clearly – YES!  Scratch enables students to solve problems and design algorithms which are two of the main components of the AP A Computer Science exam.

What do you use to design an algorithm?  Well, often simple and very basic algorithms include ifs, loops, and some type of list.  On the AP exam, there are typically several  free-response questions or components of questions that focus on using loops and ifs to manipulate a list of stuff,  be it numbers, words, or objects.

Can you use ifs and loops to process a list of stuff in Scratch?  Yes, you can.  Then, you can obviously teach AP level concepts using Scratch.  Wow, I am getting really good at answering my own questions.  I think I am channeling Walter Bishop again ( Fringe reference – Google Fringe ).

In my Pre-AP / intro Computer Science course, I use Scratch to teach students fundamental algorithmic design principles and problem solving skills.  The reason I use Scratch is that I can focus solely on the problems and prevent students from getting bogged down in the syntax details of a typical text-based language like Java.  For students new to Computer Science, the minute details of a typical language can be overwhelming at first which is one of the reasons the subject does not appeal to a large number of students.   Most students will eventually use Java , Python, or some other language that requires lots of typing in a text editor, but I would prefer they have a solid understanding of computing concepts first.

A typical AP A free-response problem that seems to show up on the exam every single year is one that involves accessing the items in a list one at a time to make some determination about the items.   Students may be looking for how many blue things there are, which one is the biggest, which one is the smallest, or making all of the red ones turn green.  Whatever they are doing, they need to know how to design a solution that will move from the first item to the last item as well as do some stuff with each item visited.   Teaching these concepts in Scratch enables the student to learn an important skill in a very friendly environment at a very early point in the year.  The skills they are learning are easier to learn because they are using Scratch to implement the algorithm and not dealing with loads of minute syntax details at the same time.  The skills being learned are fundamentally the same in Java as they are in Scratch.

Processing a list in Scratch and Java

Processing a list in Scratch and Java

Is it bad or “dumbing-down” to make learning Computer Science easier?  I just erased my original response and am now just going to provide the politically-correct version:  learrning does not have to be hard to be considered rigorous.  Actually, it is quite absurd to think that learning that is not painfully hard is not really learning.  A bad teaching approach can make even the easiest concept seem hard; a great teaching approach can make even the hardest concept seem easy.