Tag Archives: ap computer science

TCEA Panel Summary – What is the Future of AP Computer Science?

Today in Austin, Texas at the TCEA state convention, Bill Dunklau organized a panel to discuss the proposed AP CS Principles course.  Bill served as the panel moderator.  Teresa Dahlberg, representing NSF, and I served as live panel participants.  Several others participated via Skype.

Bill provided an intro and began the AP CS Principles Pilot awards.  Awards were given to the colleges currently piloting courses based on the AP CS Principles framework.  Various awards were presented to recognize the different approaches used to deliver these pilot courses.

Teresa provided an overview of the AP CS Principles course, an explanation of the combined efforts of NSF and the College Board, and the rationale behind the development of the course.  Related information can be found at http://csprinciples.org/

Dan Garcia from UC Berkeley spoke about his CS10 : The Beauty and Joy of Computing course.  He provided some examples and supporting feedback from some of his students.  Scratch BYOB is the main environment used to create projects in this class.  Information can be found at  http://inst.eecs.berkeley.edu/~cs10/sp11/

Teresa provided a bit more information on the NSF role in the project and some slides from Owen Astrachan.  Related information can be found at http://csprinciples.org/

I presented some slides from Larry Snyder and gave an overview of the CSE120 University of Washington course.  LightBot and Processing are the main environments used to create projects in this course.  Information can be found at http://www.cs.washington.edu/education/courses/cse120/11wi/

We finally were able to get Jody Paul up on the big screen via Skype.  Jody spoke about the Living in A Computing World course he teachers at Metropolitan State College of Denver.  Scratch and LightBot are the main environments used to create projects in this course.  Information can be found at http://livinginacomputingworld.org/

Chris Stephenson wrapped up the panel via Skype.  She provided information about the role of CSTA.

Hopefully, the panel discussion provided useful information to all that attended.

Other related Links

LightBot –  http://armorgames.com/play/2205/light-bot

Scratch BYOB – http://byob.berkeley.edu/

Processing – http://processing.org/

Java.writeMyCode() – Vol. I – BigInteger

Programming contests are very popular in Texas and most areas of the state host at least 1 each month.  They are great vehicles through which to increase enrollment and to get students excited about “cranking code”.

It is very important to know what tools are available in your language before attending a contest.  If the language being used provides a tool to help solve a problem, then teams should use that tool as part of the solution instead of writing every single line of code from scratch.  I stress to my students to never re-invent the wheel.  If the language already has a perfectly good wheel, put that sucker on your car and hit the road.

Java has lots of cool stuff built-in.  BigInteger is a class that has many methods in it that can make solving certain math related contest problems much easier.  BigInteger contains an isProbablePrime() method.  This is quite useful at contests.

Using BigInteger in Java

Using BigInteger in Java

It is equally important that student understand the algorithm being used to determine if a number is prime and how to create such an algorithm.  Learning the fundamental algorithmic concepts is critical to being a well rounded CS student, but for contest purposes, it is all about speed and accuracy so using built-in methods where possible helps save time and prevent errors.

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.

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 – Java Developers in High Demand

Java Developers in High Demand

This article provides an overview of the current IT job market and pinpoints the Java Developer segment specifically.  According to this report, there are 14,000 Java Developer jobs open in the US with an average salary of around 89,000 dollars per year.  That is pretty decent money and the fact that the jobs are all over the US makes the job openings even better.  This information is also consistent with the US department of labor jobs projections for IT jobs.
Once again, this is just another thing to share with our Computer Science students so that they can see the benefits of having Computer Science skills.  The more tools you have in your tool belt the more marketable you are as an employee and the more flexible you are as an entrepreneur.

AP Computer Science Summer Institute Report

Well,
My AP Summer Institute officially wrapped up on Thursday.  It was a great week and we covered lots of material and had fun doing it.

I had participants from all over with the furthest coming from Florida.  Last year, I had a participant from China which was cool as well.  I found out that some of my attendees this year had mad skills, including Senior Olympic archery, Vice-Presidential experience, Athletic Training, CIA experience, Social disturbia ( pretty sure that is the proper description and a pretty common comp sci diagnosis ), Home Improvement, Buried Treasure Hunting, Aerobics, Tennis, Fire Safety, and Computer Science.  I list Computer Science last as it just does not stack up against the rest.  How could Computer Science compete with Buried Treasure Hunting?

During the workshop, we spent a good deal of time discussing how you could and should use GridWorld all year long when teaching the AP A Course.  The case study is very dynamic and makes the course much more fun and engaging for the students.  It provides a nice game platform as well.

I also spent tons of time on the basic fundamentals of the AP A course, including ifs, loops, arrays, ArrayList, interfaces, abstract classes, and recursion, but not necessarily in a programming centric way.  I tried to present ways to teach the topics that makes them relevant and gives them context to which students can relate.  When teaching matrices and interfaces, I teach these topics in the context of Codes and Ciphers to show the students some of the ways Computer Science is used beyond just typing in braces and semi-colons.  It works well and I think the workshop participants found the approach effective as well.

Pre/AP was discussed and I included tools like Scratch, Alice, and Jeroo as pre/AP courses do not have to be taught using Java.  I spent time showing how you can use Scratch, Alice, and Jeroo to teach any AP level topic effectively.  We did some nice list processing in Scratch.

Scratch Pong Game

Scratch Pong Game

We also spent time discussing ways to broaden participation in Computer Science.  Participants visited the ACM Education Policy Committee site to see the resources posted there.

The workshop wrapped up with a look at the new AP Computer Science Principles course that is being developed.  Participants visited the AP Computer Science Principles site as well as Dan Garcia’s Full Frontal Nerdity site ( you have to love the name ) to see some of the resources posted for Dan’s new pilot AP CS course.

Lunch everyday was awesome!  I am very motivated by food that was a huge plus for sure.  It was a great time and I am sad it is over.

I should have taken some pics, but I didn’t so imagine you see people writing code and looking really excited when looking below this line.
(:)(:)(:)~~(:)(:)(:)
(:)(:)(:)~~(:)(:)(:)

Ciphers and Codes – Vol. I

I use ciphers and codes in my Computer Science classes as discussion topics and lab topics.  There are many different types of ciphers.  Codes are a big part of our everyday life and have been a big part of our history.  Students relate to these topics and enjoy discussing them.
I presented a Model Classroom session at the TCEA State Convention on February 11 over Ciphers and Codes.

Ciphers
Substitution Ciphers
Transposition Ciphers

Ciphers and Codes Slides
Ciphers and Codes Lesson Plan
Youtube – National Treasure Secrets and Codes

Ciphers and Codes materials will be included in the new 2010-2011  A+ Computer Science Curriculum which contains labs with solutions, slides  with examples, quizzes, tests, and related materials.