Author Archives: Stacey Armstrong

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

Ciphers and Codes – Vol. II

Code and Ciphers and very interesting topics to discuss in a Computer Science.  There are many ciphers that can be used as Computer Science assignments.  I use Ciphers and Codes as a curricular thread throughout my AP A CS class to provide students with relevant reasons to learn more about Computer Science.   Ciphers and Codes have been around for a very long time and can be seen throughout history.

A very good book about Ciphers and Codes is “The Code Book” by Simon Singh.  Mike Scott, UT CS faculty member, discussed this book at the 2010 First Bytes Camp for CS Teachers.

I made an earlier post called Ciphers and Codes – Vol. I and provided some slides, a lab, and a lesson plan.  I include in the lesson plan a reference to a National Treasure special edition DVD that has a short video about Codes that has commentary by  Simon Singh.  It is a very good video to show students as it has some great cipher information although it can be a bit dull in a spot or two.

Timing out the cipher lessons in your class to correspond with the Social Studies classes is a great idea.  For example, find out when they are going to talk about the Zimmerman Telegram in U.S. History and teach a related Cipher lesson at the same time.  Everybody wins!

Cross-curricular projects work great to show students what they can do with Computer Skills and to provide relevance for why they need the skills.  These projects also provide a nice context for teaching Computer Science concepts.  Students tend to get a bit more excited about what they are learning if they realize what they will eventually do with it.

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.

CS News – Dancing Robots

Robots Can Dance

Robots can do everything these days apparently.  I thought I was a pretty good dancer until I saw this video.  These guys have moves.  We use robotics at my school as students really like designing the bots and making them do things.  We try to show these types of articles to the kids so that they can see what is going on with robotics more sophisticated than the Lego NXT kits that we use.  The Robo Soccer Dogs are also good examples.

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.

CS News – Computational Science and Math

Occasionally, some of my former students that are off attending college send me emails sharing their experiences.  The one thing that I hear most often is “I am sure glad that I took a Computer Science class while in High School.”
Why is this?  Are these students studying to be Computer Science majors and minors?  No.  Most of them are majoring in something related to Science, Engineering, or Math.  I do have quite a few that go on to study CS, but that is not the majority.
Several of my students that have entered a study in Biomedical Engineering have emailed back to share that they are using Python.  One even sent me some assignments that I shared with my Computer Science students.  My CS students could not believe that this student was writing Python code in a Biology class.  The class was a standard Biology class in the Biomedical track that required students to crank out some Python code.
Another group of kids went off to Texas A&M to study engineering and were using MatLab in all of their Calculus classes.  I had my students check out one of the courses online to see what they were doing and once again they were really amazed.   I had another student stop in that was at UCLA and he also stated that he was using MatLab in his math classes and was very thankful he took my class.
Computational thinking and learning how to use a computer and some tools to solve a problem is a very important skill to have no matter what you plan to do for a career.   Students that are not planning to major or minor in Computer Science still need to have basic Computational skills.   Often, they do not take Computer Science classes in high school as they are not interesting in learning the details of a specific programing language, but are very interested in learning how to use a computer to solve problems related to math, science, engineering, or whatever is their passion.
Offering a less language focused course that incorporates more cross-disciplinary problem solving is a way to get more of the Science, Math, Engineering students to take a Computer Science class.  They are learning a ton of important Computer Science concepts and skills while learning why they need to learn Computer Science.  We use this approach as much as possible and find that some students go on to study Computer Science as a major or minor that might not otherwise have done so.  The students that had already planned to study CS all along really like this approach as well.

CS News – What do sorts sounds like?

What do sorts sound like?

I do not know about you, but I think sorts are sexy!  Well, not really, but when you turn the sorts into music, then you might be getting my attention.  Most students do not find sorts all that exciting especially when they see them running in plain text – sorts in a black DOS window are not sexy!  Adding some music and animation should increase student interest as most all of them love videos and music.  Making them get up and act out the sorts helps as well.  Students learn in many different ways and often demonstrate intelligence in different ways and we need to do more to recognize this.  Howard Gardner came up with a whole mess of different intelligence types back in 1983.

CS News – Old People Like Scratch

Kids Teaching Scratch to Old Folks

This is a great article about the HILR program at Harvard.  Teenagers are teaching retirees how to write programs and create amazing stuff using Scratch.  I think this is awesome.  My sons, 6 and 9, both use Scratch and have attempted to teach every one of their friends how to “Crank Code in Scratch”.  It is very cool to see kids sharing their love for Comp Sci!
Disclaimer : I am using “Old Folks” and “Old People” in the title and link for the humor aspect only.  Retirees rock!

CS News – The Mobile App Revolution

Mobile App Revolution Will Change Your Life

I am not 100% sure that Cody has it totally right on this, but he does make some really good points.  Mobile apps are everywhere and smart phones are getting more and more popular.   My sons spend more time playing the game apps on my iPhone than I care to discuss.  I have a hard time even getting to use my phone as those dang kids always want to play Deadly Chickens or Goofy Gorillas or some other off the wall kids game.  They rarely play games on the computer anymore as they are always using my phone.
I have had my students work on iPhone games and Android games in the past and will continue that this year.  I am also going to utilize the Google App Inventor that was recently released a few weeks back.  The tie in to Scratch is nice and having an environment that is a bit simpler than Objective C will be nice.  The Android market is growing.  I also saw that DreamSpark has an option for Windows Mobile App creation now that could be useful as well.
We discussed Cody’s blog post today in my Computer Science classes and my students found it very interesting.  Many of them want to write apps for phones and quite a few decided to study Computer Science for that very reason.

DreamSpark

DreamSpark Software

Alfred Thompson has a great blog post up about the DreamSpark program Microsoft offers to students for FREE!  Yes, indeed – I did say FREE!  I am not plugging Microsoft or on the payroll ( yet ), but I do think the program is great and hope more people learn about it.  My students love all of the different tools provided.   We hope to do more with it this year.