Analogies in the Classroom

By Dave Reed
I don’t know about you, but when I teach I am constantly using analogies to relate computing concepts to real-world experiences the students are familiar with. Some of these are pretty standard and well known among CS teachers.
For example, when I want to make the distinction between classes and objects, I relate the class to a blueprint for a house and objects as particular houses built using that blueprint. Similarly, I relate a class variable to a safety deposit box that all instances of the class have a key to.
Sometimes my analogies border on the bizarre. For example, in my programming languages class this week I compared different memory management schemes to squeezing toothpaste out of a tube. Most people just squeeze the tube in the middle. This is analogous to a garbage collection approach: it is fast and usually produces toothpaste, but occasionally you use up the paste near the top and have to take the time to flatten it out (i.e., perform garbage collection). For the brand of toothpaste I use, there are instructions on the tube (yes, an algorithm for dispensing toothpaste) that tell you to squeeze from the bottom and roll up the tube as you go. This is analogous to a reference count approach: it takes a little longer, but it ensures that toothpaste will come out as long as any is left in the tube.
What analogies do you use when you teach? Which ones work particularly well? Which ones sounded good in theory but flopped in practice? Inquiring minds want to know.
Dave Reed
CSTA Board of Directors

20% and Open Doors

By Ron Martorelli
I recently read Ken Auletta’s book Googled, about the creation and rise of Google. I read it as both a techno-geek and as an educator. There were two particular things about Google that I contemplated as an educator.
Among the more interesting tidbits I learned about how Google works was how they encourage their engineers to spend twenty percent of their time exploring ideas they find interesting and ideas they are passionate about. Many of the more innovative Google ideas, products, and initiatives have sprung from this allocated “free” time, which is encouraged further in meetings set aside where these engineers can discuss their ideas openly to benefit from brainstorming session with other engineers, as well as programs that mentor and team up engineers for further their ideas.
Interestingly, Auletta gives credit to the founders of Google for borrowing this idea from Stanford University, which both Sergey Brin and Larry Page attended, and at which their initial ideas for Google were formed and tested.
Contrast this time to develop ideas and creativity to the typical day of a K-12 teacher. If you consider a typical day as a series of forty-minute sessions or periods, a K-12 teacher will probably have one “prep” period, one lunch period, and one supervision period. So, in a seven hour school day, this teacher would have zero time to explore new technologies, teaching ideas, develop creative lesson plans, etc., unless one counts day dreaming at lunch as creative time. Yes, there is time after school and at home, but when you factor in the time it takes to create and grade assessment material, this teacher still has very little time to explore anything new.
The second thing about Google is the open door policy of management, the idea of supporting and mentoring innovation, and the willingness to test these ideas and encourage the development of those that are successful and discarding without prejudice those ideas that fail.
In one week my email box is inundated with information and newsletters about technology and education. I have bookmarks on my browser for CSTA and a host of other blogs and information portals. I receive magazines or E-zines like Edutopia which are full of creative ideas for the classroom. Announcements for grants, scholarships, and contests arrive every month with opportunities to engage my students in interesting and innovative projects.
I wonder if we have fallen into a trap of demanding more technology-based innovation and creativity in the K-12 classroom without being willing to discuss the need to change the very structure of the education system. Should K-12 school years be extended or modified? I ask this as I have a week off for “winter break”. Why do our teachers or students need a week off, just a few weeks after an extended holiday break, and a few weeks before the spring break? Should K-12 school days be changed to block schedules or alternating school days so that both teachers and students can spend more in-depth time on subjects? Should teacher schedules be modified to enable them to spend more time exploring ideas and innovation, and with time to develop the ideas for classroom instruction? How many of our schools are set up to brainstorm ideas, or to mentor and team teachers to develop their passions? Instead, we often find administrative bureaucracies that discourage the very innovation they seek.
As we watch Google grow to dominate the Internet, media, and software worlds, many of their competitors have acknowledged that they must adjust their own methods of developing and delivering software and other technology to their customers. Perhaps it is time for the educational system to face similar realities and change our methods of development and delivery to our customers – our students.
Ron Martorelli
CSTA Board of Directors

Build a Playground!

By Fran Trees
A playground is generally described as an area designed for children to play freely. Oftentimes playgrounds include jungle gyms, see-saws, overhead ladders, sandboxes and various other recreational equipment that can help children develop physical coordination, strength, and flexibility, while they are playing with their friends, enjoying the activities, and improving their social skills.
Let’s bring that playground inside! Why not host a computer playground day?
Imagine three to five clusters of computers. Each cluster is a different type of “sandbox” designed around a theme: Alice, Scratch, Robotics, Game Maker, Greenfoot, or any other fun way to look at computer science and programming. Each sandbox has a playground supervisor who can introduce the activity, instruct, and help out when needed.
Previous blogs have presented great ideas for outreach. The playground can be outreach to different types of populations: high school students, middle school students, elementary school students, computing teachers of all levels, administrators, or parents.
Gather your local teachers who have experience with the activities. Try contacting local colleges, universities, community colleges, or your local CSTA chapter for support and resources. Offer activities that can introduce the “children” to computer science in an enjoyable way while they are playing with their friends, enjoying the activities, improving their computer skills, and learning something about the programs that you offer.
Be creative with your playground but offer structured play activities in each sandbox so the “children” aren’t at a loss and so that everyone has a great time, learns something, and with a smile! Those “children” may become our strongest supporters!
So, host a computer playground day for your local ___________s? You fill in the blank! Have a great time! And then tell us about it!
Fran Trees
CSTA Chapter Liaison

Blogroll

By Michelle Hutton
Did you know that January is (US) National Clean Up Your Computer month? I didn’t manage to clean up my computer, but I did clean up my blog subscriptions, by deleting ones I don’t read very often. Here are the computer science and education blogs that made the cut:

  • Wicked Teacher of the West, a middle school computer science teacher who reflects on her practice
  • Computing Education by Mark Guzdial, professor at Georgia Tech who thinks about the world of computer science education
  • Computer Science Teacher by Alfred Thompson, who many of you have met at conferences and the CS & IT Symposium (by the way, have you registered yet?)
  • Knowing and Doing by Eugene Wallingford, professor at University of Northern Iowa
  • In Need of a Base Case by Leigh Ann Sudol who used to be a high school CS teacher and CSTA board member and is now pursuing a PhD in CS Education at Carnegie Mellon University
  • Dy/Dan by Dan Meyer, who is a very thoughtful high school math teacher and is also an intern at Google working on computational thinking and programming in math classes
  • Ideas for Teaching Computer Technology to Kids is full of links to computer science resources

Three that don’t make the professional development grade but I think might be of interest anyway:

  • Learning Curves is currently my favorite blog. Rudibecka Hirta is a delightfully snarky math instructor at an unnamed southern university or college. One of my dreams is that I get to meet her some day. This one doesn’t provide much professional development, but it is full of personality. Also, she takes computer science and stats classes and reflects on them.
  • Indexed is Jessica Hagy reflecting on the world using graphs
  • xkcd is popular among all the geeks I know

Do you have a blog? Or one you think I should add to my (pared down!!) blog reader? Post a response and let us know.
Michelle Hutton
CSTA President

Beginning to Rethink CS Education at NSF

By Cameron Wilson
The President released his $3.8 trillion budget on Monday setting off a flurry of activity in the Nation’s Capital. The budget sets the Administration’s priorities for the big stuff, like how much he wants to spend on education and defense, down the minutia, like how much money the Department of Agriculture wants to spend on slug research. (Ok, I made that program up.) Budget season also gives agencies the opportunity to unveil changes to existing programs or the creation of new ones.
One such change, that quickly made its way around the computing community, was a rethinking about how the Computer & Information Science & Engineering Directorate (CISE) at the National Science Foundation approaches education and workforce programs. More specifically, CISE staff announced that it was combining the Pathways to Revitalized Undergraduate Computing Education (CPATH) and the Broadening Participation in Computing (BPC) programs into a broader computing education program. CPATH tended to focus on higher education, while BPC issued grants for the entire pipeline, largely focused on improving diversity in computing. These two programs have funded numerous education proposals including the current work to reform the Advanced Placement Computer Science course, the Exploring Computer Science course developed in LA, and national alliances focused on diversity.
I had a chance to talk about the new program with NSF staff. I should caveat this that no one really knows what the program will look like until the new solicitation is out (more on that below), so this is my fairly high-level take.
The described intent is to evolve CISE’s work into something broader. That is the new program would look at the entire pipeline but with special focus in two areas:

  • moving earlier into the pipeline with specific engagements in middle/high school to bring computational thinking/computer science concepts into this space
  • widening the program to be inclusive for all populations, built around a theme that “computing is for everyone”

It would also add a specific education research component that would seek to build education research capacity at the university level and to provide a greater understanding of how children come to understand computing concepts. At the center of this new program would be some big ideas in K-12 education that BPC has forwarded in recent years — including reform of AP Computer Science and the so-called CS 10K project. Assistant Associate Director of CISE Deborah Crawford posted the following on a post about this topic Mark Guzdial’s blog:
“In the summer of 2010, CISE plans to release a new broadly-scoped solicitation that will incorporate the most promising components/promising practices of the CPATH and BPC programs, with increased focus on middle and high school education in computing (making its scope consistent with the CS AP and the CS 10K projects, so no need for Mark to worry there) and education research. Like the BPC and CPATH programs, the new program is likely to draw on partnerships among academic institutions, as well as other organizations similarly committed to ensuring broad participation in the computing disciplines and to more effective computing education.”
There are still challenging issues around the level of focus that the program may have on diversity efforts that are causing concern within the community. These are details that will have to be worked out as the program moves forward.
In the past few years, the computing community has recognized the tremendous challenges that face computer science education in the K-12 level. This helps explain why there is so much energy around projects like AP CS reform and CS 10K. Yet, despite the obvious need, there is little funding for this type of work across NSF. It appears that CISE is going to step into this gap with a new program focused on the big ideas and add a much-needed research component to inform the overall education and workforce goals.
But it will likely be a small step until the community can start leveraging other parts of NSF. One potential for this new program is leveraging funding from the Education and Human Resources Directorate at NSF, which has about $800 million dedicated to education and workforce programs. Tapping into this resource could bring major resources for reform to the table.
This is a fairly significant transformation of what — at the federal agency level — is the only game in town when it comes to systemic computer science education funding. It will be very interesting to see what the summer solicitation brings. Hopefully the community will work together in helping shape a very strong program.
Author’s Note: I got one e-mail this week confusing this new program with another new initiative in the budget called Cyber-Learning to Transform Education (CTE). These are distinct programs with CTE being focused on using computing to transform education generally. Funding from CPATH and BPC is not being redirected into CTE.
Cameron Wilson
ACM Director of Public Policy

K-12 Events at SIGCSE

By Steve Cooper
I’d like to let everyone know that the early registration deadline for SIGCSE 2010 is coming up at the end of January. While SIGCSE runs from March 11-13, there is a special K-12 teachers day on Friday March 12 (and a cheaper registration fee for teachers who can only attend this one day).
Some of the exciting sessions that day include:
– a keynote address by Nobel prize winner Carl Weiman
– a paper session (and a separate panel session) on middle school issues
– a special session on the future of computing
– a special session on the proposed new AP CS course
– free lunches from Greenfoot and Alice (I think you’re only supposed to get one, but for the hungry among you….)
– a paper session on K-12 instruction
– a special session on Google’s new App Inventor
– computational thinking in HS
– lots of great workshops (unfortunately, the cost for these isn’t included as part of the registration for SIGCSE)
– lots of other sessions (that my way of saying I’m probably leaving out some cool sessions)
The program is available from
http://db.grinnell.edu/sigcse/sigcse2010/Program/Program.asp
There is also the wonderful opportunity to talk to nearly all of the textbook authors from the texts you are using in your computing classes. (I cannot guarantee all of us will be at SIGCSE, but most of us will be there.)
If you can get to sunny Milwaukee (yes, I know the organizers chose an interesting location for SIGCSE, but at least we’ll be indoors), I strongly recommend it!
Steve Cooper
CSTA Vice President

Getting Students to Test Their Programs

By Karen Lang
Animations and creation of games really does motivate students. Doesn’t every student assume they can take an introductory computer science course and get a job at Electronic Arts making video games?
While animations and game development can be a motivational tool, it can also be a good lesson in function design and proper testing. I find that the students, when faced with creating an animation, get caught up in the thrill of seeing something move on their screen and their good programming habits go out the window. The building of an animation and/or game requires a new level of complexity, with the need to incorporate several functions and possible classes or structures. Because of the extra complexity, there is even more need to take it slow, provide good documentation, and test each function as you build it. What I find is that students are so fixated on the end goal, they just throw together all their functions in a hurry without testing and then run the program to see if it works. When something doesn’t work as expected, they don’t know quite where to start to debug it. Despite my admonitions to test as they go, they rarely do.
A couple of days ago, I had a student look at me, extremely frustrated, because his animation would not work. His cat was supposed to move across the screen, and there it sat, still as could be. Yet he stated loudly, over and over, “I know it works!” I looked at his code and there wasn’t a single test case. I asked him how he knew it worked, when he hadn’t tested the code, and the lack of cat movement proved otherwise. He stepped me verbally through his logic, swearing it all made sense. He was so resistant to doing the grunt work of thorough test cases. I told him to go back and test every condition before concluding it worked.
How does one prevent this from happening? I emphasize testing and I deduct grade points for inadequate testing. This one student realized he couldn’t avoid it, if he wanted to see his cat move across the screen. Eventually he had to succumb and test his function to find his error. Do you have any ideas or strategies in cases like this?
Karen Lang
CSTA Board of Directors