Tag Archives: Scratch

AP CS Principles College Pilots

The following colleges will be piloting the new AP CS Principles course in 2010-2011.

Metropolitan State College of Denver  –  http://LivingInAComputingWorld.org
University of California Berkeley  –  http://inst.eecs.berkeley.edu/~cs10/fa10/
University of California San Diego  –  09/23/2010
University of North Carolina at Charlotte  –  01/10/2011
University of Washington  –  01/03/2011

I will update this later once the other courses come online.

AP CS Principles General Information

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.

Teaching AP Concepts in Scratch – Vol II – Searching

A typical linear search algorithm consists of some variables, an if-statement, some type of loop, and of course a list.  The search may be examining the list and looking for a specific value or some type of thing, like a specific type of creature, the prettiest princess, or an animal in a game.  I do not write games about pretty princesses, but I do have students that like to do that.

The AP A exam tests a student’s ability to solve problems and formulate algorithms.  The exam does use Java as a testing vehicle, but does not test specific syntax details of the Java language.  First and foremost, the AP A exam is focused on testing a student’s problem-solving ability.  Searching a list requires a certain amount of problem solving ability at a very basic level.

Searching through a list for something is a very important Computer Science concept and one that is tested on the AP A exam.  Typically, the AP exam free response will ask a student to write an algorithm to search a list for something.  The multiple choice component of the test usually contains a question or two focused on searching as well.  Students need to understand this concept very well.

Searching in Scratch and in Java.

Searching in Scratch and in Java.

Writing a search in Scratch is relatively the same as writing a search in any language or environment.  Students still have to combine some variables, a loop, and an if-statement together to process a list in order to solve the problem.  The main benefit of doing this in Scratch first is that students can just focus on the problem as they have to spend considerably less time on the details of typing in all of the pieces.  Scratch does not require that students focus on syntax details so students can concentrate solely on how to solve the problem.  After mastering the concept in Scratch, it will be much easier to crank out a solution in a text-based language like Python, Scala, PHP, Ruby, or even Java.

Scala is a pretty slick language by the way.  A good friend at Rice University suggested I check it out.  It is pretty cool.

Using Scratch BYOB makes creating a search in Scratch a bit slicker as you can create your own blocks and pass parameters.  This adds in a bit of abstraction that you do not have in the non-BYOB version of Scratch.