Wednesday, February 27, 2013

2013 CSTA Annual Conference Registration Open

Just announced via the CSTA member email system – registration is now open for this summer’s Annual CSTA conference. Some great sessions in the line up. Something for just about everyone in computer science education. Oh and I’m taking part in two presentations. Yeah me! Although I have to miss some sessions I would really like to sit in on because if it. Can’t win them all.

You are cordially invited to attend the 2013 CSTA Annual Conference (formerly known as the Computer Science & Information Technology (CS&IT) Conference). This year’s conference will be held at the Boston Marriott Quincy, just outside of Boston in Quincy, Massachusetts.

  • July 15: Hands-on Workshops
  • July 16: Keynotes and Breakouts

The CSTA annual conference is a professional development opportunity for computer science and information technology teachers who need practical, classroom-focused information to help them prepare their students for the future.

Learning and Networking Opportunities:

Take advantage of this opportunity for relevant professional development!

  • Explore issues and trends relating directly to your classroom
  • Network with top professionals from across the country and around the world
  • Interact with other teachers to gain new perspectives on shared challenges

Some of this year’s session topics include:

  • AP Computer Science
  • CSTA's K-12 Computer Science Standards
  • Equity & Diversity
  • Mobile Applications
  • Robotics

Act now to register for the 2013 CSTA Annual Conference at:

Pre-registration is required and will be accepted for the first 300 teachers. The registration deadline is June 16, 2013.Also, please note that you must complete the payment portion of the online form in order to be fully registered for the conference!

Thanks to the generous donations of our sponsors, the registration fee of $60 (+$60 per workshop) includes lunches, resource materials, and closing session raffle.

Please note that all workshops are “bring your own laptop” and that registration is limited to 30-40 participants, so be sure to register early to get your workshop choice. Workshop registrations are non-transferable and it will not be possible to change workshops onsite. Registration and workshop fees are non-refundable.

The 2013 CSTA Annual Conference is made possible by the generous support of Microsoft, Microsoft Research, Oracle, and the Anita Borg Institute.

Please join us for this exciting event!

Tuesday, February 26, 2013

What Most Schools Don’t Teach has released their highly anticipated video to encourage more people, especially students, to learn how to code for computers. It’s one of the better videos I have seen with a lot of names and faces students will recognize and a few they will not. They may want to learn more about that later BTW.

Starring Bill Gates, Mark Zuckerberg,, NBA All-star Chris Bosh, Jack Dorsey, Tony Hsieh, Drew Houston, Gabe Newell, Ruchi Sanghvi, Elena Silenok, Vanessa Hurst, and Hadi Partovi. Directed by Lesley Chilcott.

There are 1-minute, 5-minute (what is embedded here) and 9-minute versions. You can get them from They are available streaming, as downloads and they will even send schools DVDs if they don’t have classroom Internet.

Monday, February 25, 2013

Interesting Links 25 February 2013

School vacation week for me this week. Trying to get some work done around the house, relax a bit, grade a bunch and of course plan for the rest of the semester. Also continue the long term thinking I am doing about curriculum in general. (Posted about this over the weekend at Looking At Curriculum From Different Angles  in case you missed it the comments add the real value.) I’d also like to remind people that they can subscribe via RSS using as the RSS feed or use the box on the right of this page to sign up for email updates as they happen.

Now for the links.

I updated my Windows 8 Game Development Links post with a link to Tara Walker’s latest in a series called Windows 8 Game Development using C#, XNA and MonoGame 3.0: – Part 4: Adding and Processing Player (User) Input Drop by and leave a comment to encourage her to continue working on the series. Tell her Alfred sent you. Smile

I found this post Habits That Programmers Should Adopt via @zite and plan to share it with my own students.

James Gosling Screwed Us: “Write Once…” is Anti-Customer is a post where Charles Kindel via @ckindel takes on the write once run anywhere myth and not only wrong but not good for consumers. Yet another good discussion topic.

Why developers should start choosing conscience over profit  from VentureBeat  @VentureBeat speaks to motivation. Would we be better off if companies focused more on solving people’s problems and less on pure profit? I think so but an interesting discussion topic.

Join the Scratch Ed team for a one-day Getting to Know Scratch 2.0 workshop at Harvard on Saturday March 23, 8:30am-4:30pm. if you are in the area.

ANX.Framework (ANX's not XNA... but kind of) is new at Channel 9. It talks about a new project to create an open source replacement for XNA that will be updated and maintained. Looks interesting for anyone invested in XNA.

More prizes added to Windows Phone Next App Star contest - Get your app in now!

Saturday, February 23, 2013

Looking At Curriculum From Different Angles

My job at Microsoft was to promote the use of Microsoft tools for computer science education. It was a great job and I was promoting tools that I had and that I currently use for teaching. I am loving teaching using Visual Basic and C# with Visual Studio. My C# students are having a blast learning programming and problem solving while creating games using XNA for example. That job did have an impact on how I looked at curriculum. Specifically I looked at curriculum with an eye towards how and where Microsoft products could fit in. As a teacher I look at curriculum first with an eye towards what concepts I want to teach and then look for tools to use to teach them.

Now honestly I know a lot of teachers who start with the tool. You have no idea how many times I have been asked “I have this [computer, software, new technology] what can I teach with it?” Or “how can I use this new technology in my classroom?” We all know that we should start with what do we want to teach and look for a tool second but the allure of new technology effects us all with an urge to find a problem that it is the solution for. It’s probably just human nature.

These days I am working very hard to get back to basics. I want to design a three and/or four year curriculum for computer science education that really works. The CSTA K12 Computer Science standards are my obvious first step of course. I am taking a close look at them. What ever I come up with I want to work with those standards. There are also some existing courses that I have to look closely at. The APCS A exam for one. The new CS Principles course and the Exploring Computer Science course out of the LAUSD are two others. I’m looking at these primarily for the big ideas, the important concepts, and a possible order for introducing those ideas and concepts.

Often discussions of curriculum move quickly away from scope and sequence to tools. I saw that in the comments for my recent post A Friendly Survey of Programming Languages. Though in all fairness that started out as a discussion about teaching programming languages so the language focus is completely to be expected. And it was a welcome and interesting conversation. It convinced me that much of what I wanted to do with that course could probably done as well or better with multiple courses each using different languages.

For now I am trying to focus on outcomes and how to get to them. Specifically what do I want students to know that will prepare them for either a vocational or a more academic career. For many students the correct path after high school is a two year program or a professional training program of some other sort. Something that leads quickly to certifications and jobs. For others the path is going to be more academic leading to graduate degrees even doctorates. Can we create a program in high school that prepares students as well for one path as they other? I think we can and that we can do it in a way that helps students determine which path is the one for them.

That is the greater discussion I would like to take part in. As I see it this curriculum has to be project based. Projects encourage students to stretch themselves, explore and learn on their own far better than tests and quizzes. Tests and quizzes may be (if done right) good diagnostic tools for teachers to understand what a student does or does not know. At the same time they discourage learning anything that will not be on the test and limits creativity. A proper balance if tests/quizzes and projects benefits everyone. Although we all know projects are more work for teachers to grade. That’s life.

One of the things I want students to know is that computer science can help them change the world around them. So projects have to have meaning. They have to not only allow a student to show what they know but do something useful. Early one games fill that role for many (thought not all) students. Students love games. Can we have them wrote meaningful games? Of course we can and we should. We can encourage students to write games that are both fun and educational. I’ve seen a number of tach3rs who do this with their students. Some use Kinect to create whole body interactive games. Others Xbox controllers. Others smart phones. I’ve seen some great programs come out of high schools for Microsoft’s Imagine Cup as well.

Pat Yongpradit has created a project course using the Imagine Cup to force students to hit deadlines, learn new skills (like presentation skills as well as software skills) and work as teams. He’s had great success with this by pretty much any metric you use to gage success.  Lou Zulli has his students work on projects where the customer is the school they are attending. Real projects that are used daily by students and faculty in their school.  Students learn valuable skills that they can put to use in careers but also prepare them for academic pursuits. I could go on and on about the teachers I have met the last 10 years or so.

What I am searching for now (view this as a request for samples) are curriculum guides for successful programs. What are the courses and their descriptions? What are the scope and sequences? What are the stated outcomes and the paths to reach them? If you have materials like these would you send them to me? Please?

Leave links in the comments or send documents to me at Help me to put together a great collection and create something that will work for me? Really appreciate it.

Friday, February 22, 2013

Obama Endorses Programming Classes in High School

On one hand this is great. The President of the United States promotes computer science education. On the other hand he talks about it primarily as a vocational subject. Something that will lead to a two year degree and an apprenticeship. I think that missed to point of computer science being a liberal art that all (or at least most) students should take.

The best part though is at the very end when he talks about the need for students to be creators and not just consumers.

Thursday, February 21, 2013

A Friendly Survey of Programming Languages

I was sitting around thinking about high school computer science curriculum last night when the idea of a programming languages survey course came to mind. I’m a firm believer that spending all on ones time learning just one programming language in high school fails to take advantage of how quickly students learn new languages. It is has been said that the hardest language to learn is the second and that after knowing two the rest become easier. I believe that. So what if we created a course, maybe even a semester course, that stuck to the very basics but introduced several programming languages? Suppose we included several programming paradigms as well? What would that look like?

I was thinking that you’d teach using one of the block programming languages for one. Pick one of Alice, Scratch, Blockly, Appinventor, or Snap! Doesn’t matter – pick the one you like best. Then include a couple of traditional programming languages.

Pick at least two with no more than one being a semi colon and curly brace member of the C family. So one of C, C++, C# or Java. Again which ever one you like best. For an other language pick one or two from Visual Basic (or some other Basic) and Python or something else you like. PASCAL anyone? I recommend you use Visual Basic though. Controversial perhaps but I can think of a couple of reasons.

One reason is that the Select/Case structure is much more powerful and flexible than the switch/case structure in C family languages. This is driving me crazy right now teaching C#. Also the AndAlso and OrElse keywords compared to And and Or really help bring home short-circuiting. Plus it lets students see that those semi colons and curly braces are not the only way to do things.

Python is also a good choice as it is a powerful dynamic language that is growing in use everywhere. I think that using a good dynamic language is a plus for this sort of course.

Lastly I think you need a Functional language. Scheme, Lisp, Ratchet or perhaps F#.  Not having a good background in a functional language is a big hole in my own background and with functional languages becoming more popular all the time I think students should have some exposure to the paradigm.

There are lots of options in all categories of course and I would expect different people to pick different languages. I would probably pick: Scratch, C#, Visual Basic, Python and Ratchet (or maybe F#). With Visual Studio I can teach/use C#, VB and F# all in the same IDE which could save some time and allow code from a project in one language to be used in a project written in another. But maybe there is some value to using multiple IDEs. Different strokes for different folks.

I would not try to “boil the ocean” and get students totally up to speed in all languages but would focus on key concepts that are fairly common to all languages.

  • Variables and Assignments
  • Arrays
  • Loops (for and while)
  • Decision structures (if and switch)
  • What else?

Maybe a few other things that are done particularly well in one language or paradigm and not as well in others. What would you include?

I don’t see this as a replacement for a university level Programming Languages course but as a gentle introduction to the various ways that syntax effects how we look at programs while keeping some key concepts constant.

I don’t see this as a first course. Maybe not even a second but also not the last that they take in high school.  I would want to get students to want to learn new languages. I would also want them to see different ways of doing things before they get too set on their ways. Open minds rather than just fill them.

What do you think? Am I crazy? Are my groupings off or missing something important? What languages would YOU select? Is 5 the right number of languages or too many? Too few? Should assembly language be included? I wonder about that one. I’m looking to start a dialogue not present a finished product. So please leave me some things to think about.

Wednesday, February 20, 2013

I Can Look That Up For You

One of the things that has happened over the last few years is that I have learned what I needed on a just in time basis. That is to say that rather than trying to learn everything or even as much as possible about something I have learned what I needed to know when I have needed to know it for a specific project. It’s worked ok for me because I am good a looking things up. And, perhaps more importantly, I have a wide background that lets me make sense of information that often assumes a good bit of prior knowledge. I’ve had to learn a little about far too many things over the last nine years to get as deep in anything as I might have liked. These days in the classroom this method of learning is showing up some holes in my knowledge.

A classroom of 12 to 15 students such as I have in my programming classes (yes I know I am very lucky to have small classes) can easily come up with questions that go beyond the knowledge I have at the time. There are several ways to handle that situation. The one inexcusable one is to tell students to forget about it because if is “not in the curriculum.” Generally I go with one of two options: Tell the student to read the help or look it up and teach it to the whole class.

It’s hard to say which one is the best way to go and there are pros and cons to each. Students tend to learn something they are forced to look up very well. Unless that is they become too frustrated to continue. I’m not a big fan of frustrating students. I am a fan of them learning on their own though. So looking for the balance is important. I feel an obligation to help students before the frustration gets to the “I give up” point.

Looking it up for students is often a good way to go when the question is likely to be of interest to the whole class. If the result is more interesting projects and more engaged students it can be a big win for the class. Yes it takes some time for the teacher but that is seldom a reason to not do something. The advantage for the teacher is great. Not only do they make the class more interesting but they, the teacher, also learn things that they can use later. It gives a teacher a chance to model life long learning for one thing. The process of taking information that is often incomplete, must be assembled from multiple sources and/or phrased in ways that are opaque to students forces (aids?) the teacher in gaining a better understanding of the concepts and processes involved.

So far I have gone the “look it up in the help” route a couple of times and the “I’ll look that up for you” route several times. Today for example I helped my C# students learn how to use the SpriteBatch.DrawString method in XNA so that they could display scores on their Pong games. Slightly embarrassed to admit that I had to look it up first but that’s life.

The reason I looked it up and presented it to the students was because I did not want them to spend a lot of time figuring it out on their own. I have no doubt that most of them could have done so but some of them would have taken a while. Rather I wanted them to focus on the process of writing the code to keep score. That involved more concepts that were core to what I need them to learn and that have more general applicability in the long run. Besides they can use this in many programs later on. If it was something that was optional or not easily reusable or only one or two students needed it (for some definition of “need”) I might have gone a different route.

As for me I now have a handout that is reusable, an understanding of the DrawString method that will serve me in good stead going forward, AND a more engaged group of students. Win win all around.

Monday, February 18, 2013

Interesting Links 18 February 2013

Another snowy weekend in New Hampshire for me. Not a bad thing as I had a lot of grading to catch up on. But today is a holiday for my school (Washington's Birthday) so I hope to get out into the woods on my snow shoes. I have been a lot more introspective lately and posting more “think pieces” such as Drive Fear Out of the Classroom and perhaps less of links and discussions of projects and resources. Just the way things are these days. If you run into something worth sharing I hope you will share them with me. Leave a blog comment, send me a tweet (@Alfredtwo) or send me an email ( And now for some things I did pick up last week.

Doug Bergman @dougbergmanUSA was interviewed and had a video up last week.  “There is tremendous energy around games"

Microsoft Partners in Learning pointed me to this interesting video on Accessibility in Education via @MicrosoftPIL

The Central NY CSTA running a one-day introduction to Bootstrap, generously hosted by SUNY Oneonta  Saturday, March 9, 2013, 9am-4pm

Do you like interesting quotes? I have since I was a kid. I read several last week:

  • "Before software can be reusable it first has to be usable." -- Ralph Johnson h/t @HPCodeWars
  • Programmers should look at Excel with wonder over how it empowers non-technical people, not w/ derision cuz they produce bugs. (via @tlack)

Once again I have updated The Focus Finding Outstanding Classrooms Using Social Media) with Don Wettrick’s latest FOCUS show with Special Guest Vicki Davis @CoolCatTeacher

Taking it out of the classroom. Cool new outreach program via @zamansky More at Something more schools can replicate? I think maybe so.

Sunday, February 17, 2013

Drive Fear Out of the Classroom

Many years ago I was privileged to take the famous four day course taught by W Edwards Deming. Deming is widely credited with turning around the Japanese manufacturing system after World War II. he’s one of the founding fathers of modern quality control. His 14 Points or key principles are at the core of his philosophy for quality. His eighth point came to mind again recently as someone Tweeted about Finland avoiding standardized tests to help create a “fear free zone.”

Deming’s 8th point is “Drive out fear, so that everyone may work effectively for the company.“ While many people, especially in management, believe that fear is a great motivator Deming did not agree. He believed that fear created an unhealthy environment where people became more concerned with following the rules than doing the right things. It creates an environment where gaming the system to meet artificial or unreasonable metrics becomes a priority over getting real results. Deming was a huge opponent of fear based management.

As I try to teach my students I find myself very concerned about them being afraid. I don’t want them to be afraid to ask questions, to try new things or to go an extra step to learn something beyond my lectures. Honestly the less I can lecture the better in most cases.  The more they feel free to stretch themselves and try new things the better and more they will learn.

There are some mistakes that beginners always make on a regular basis. Students are bound to use a single equal sign for a comparison statement when C-style languages like Java and C# require a double equal sign. Making them feel foolish when they do is counter productive.  Using the wrong data type is a natural error and a good learning experience not an opportunity to degrade a student.

I’ve taken to asking students to let me know when they run into problems so that I will know what I need to do to teach them better. I tell them that in so many words too. Not so that I can fix it for them or point out “stupid errors” but to do my job better. I want students to see me as a partner in learning rather than someone looking to dock their grades for every little mistake.

Deming did not give grades. Or rather everyone got an A. It was up to the student to learn and Deming to teach. Deming did not want students to live in an environment of fear. I don’t have this same luxury – I teach in high school not at MIT and I’m not internationally famous. What I can do though is reassure students that beginner mistakes are not fatal, that they are good for learning, and that school is not a game of the student against the teacher. I expect that less fear will contribute to more learning.

Friday, February 15, 2013

Throw Out The Usual Suspects

Anyone who has spent time in a classroom knows that there are some students, usually a small number, to take up most of the class participation. It’s not that they are the only ones who know what is going on but they are the ones not afraid to ask questions or answer questions. At times I wonder which takes more self confidence to ask questions or to answer them. These are the “usual suspects” in a class. We see a lot of the same thing in professional development events and conferences. Year after year it seems like the same people are submitting (and having accepted) proposals to present. Again it is not because they are the only ones doing interesting, creative, innovative and interesting things. These are the ones who for various reasons really want to get up and share.

Now I confess that I have proposed more than one or two presentations. I really like to share what I know (or think I know). I like to think that these presentations are also learning experiences for me as well. I try to listen and the question and answer period of most presentations is as or even more valuable than the presentation itself. But there are risks involved in the same faces presenting year after year.

For one thing we risk squeaking out new people. When certain speakers become stars of a sort other people may feel intimidated by a perception of competing with the established crowd. Public speaking is scary enough without the idea that one will be compared to people who seem to present all the time. One may feel they don’t have a chance to get their proposal accepted. Or that if they are accepted they will not measure up. This concerns may be heightened if there is a perception that the usual suspects are quarantined some set number of the speaking slots.

Most conference session committees work hard to get new faces and new voices into their conferences. They do occasionally take some heat for rejecting regular presenters of course. A few people may develop an entitlement attitude especially with specific conferences. Others want to present that same basic talk year after year and think “it was reviewed very well why not let me do it again this year?” But conferences have an obligation, I believe, to make sure that conferences stay fresh and new and that they keep the doors open for new presenters.

Program committees have a tough job though. BTW I have been on such committees but am not currently on one. It is easy to accept proposals from known quantities. People who year after year give well received talks, especially if they talk on different topics, are a safe choice. A committee has a good expectation that the speaker will arrive prepared, present well, and add value to the conference. If the committee has not heard the speaker and does not know them by reputation they have to look closely at the proposal and the reviews by independent reviewers. So what do they look at?

Well a lot of things and not everyone weighs everything the same. Obviously the first thing is the proposal itself. Is it well written? Does it explain clearly what the presentation will be about and why it is valuable for the conference attendees? What are the qualifications of the presenter? Qualifications is not just any one or two things. Previously published or presented work is great but there has to be a first presentation or paper. Academic background? Nice but that does not always translate to a great speaker? What do they do for work? Are they a current practitioner talking about work they are doing or are them a consultant presenting on work that other people do? Both are good in their own ways.

There are also the needs of the conference itself. Are their different tracks to be filled? If there are 8 great presentations but only room for 6 in a track who gets left out? Are there three great proposals on very close to the same topic? Can you really have all three and if not who do you select?

All of this is moot though if new people don’t submit proposals. I think that is the biggest concern for some conferences. Why don’t people submit? Again, lots of reasons. One is being afraid to present. You would think that teachers who present to students every day would not have this fear but, trust me, speaking before ones peers can be a lot more intimidating than presenting to students for many people. Most conferences though are pretty good to first time speakers.

Many speakers find that once they start talking on a topic that they are passionate about the timidity fades away and they begin to speak with more strength. Solid preparation helps build confidence as well. Generally a proposal is accepted because the committee believes that the speaker knows more about what they are proposing than the people they expect in the audience. A speaker who makes sure they are prepared and ready with data, information and a clear idea of how they will present can be a confident speaker.

Other people are falsely modest. Oh they don’t think it is false modesty but often it is. Many teachers have great ideas and do innovative things in their classroom Unfortunately, in part because we in the US undervalue teachers, many think they are “just doing the job” or “not doing anything special.” I suspect that more great ideas are lost because teachers don’t share them out of some sense of modesty than any other cause. We need to help break teachers out of that way of thinking.

The season for submitting proposals for conferences is pretty much over right now. CSTA is evaluating proposals for this summers CSTA Conference this weekend. SIGCSE is a a few weeks and the presentations have been locked in for quite a while. Likewise the presentations for ISTE are locked in. TCEA, FETC and many other regional conferences are already passed. But in a couple of months new requests for presentation proposals will start opening. I hope many more teachers who have never presented will take a good look at what they are doing in their classrooms and asking themselves honestly “would others benefit from knowing about this thing that I do?”  The corollary may be “why do I do this if it is not valuable?” If it is different from what you learned or how you learned and it is working it may very well be worth sharing with others.

Think back on how much you have learned from conferences and ask yourself if it isn’t time to give something back in the way of presenting your work.

Thursday, February 14, 2013

Beware the Scaffold That Becomes a Crutch

This year I am experimenting with scaffolding to help students get started with imageprojects. For example I started one group with a project to calculate BMI (Body Mass Index). The students were given a project with the code that calculated the BMI and asked to add code to display a message based on that value. Not a lot of code and having the project that far along meant that they could spend all of their time on the if statements that were the topic of the current discussion. It worked out pretty well I thought.
The students got some good practice and there was no wasting of time building the GUI or making the BMI calculation work. I was pleased. But there is a down side to too much scaffolding and I want to make sure I avoid that as much as possible.
The downside is that students can become too dependent of too much scaffolding and too simple an add-on that they don’t learn how to create new code on their own. The Gas Station Without Pumps blog had a discussion about this problem recently at Descaffolding.
I think there is a good balance that can be reached. I am not a fan at all of exercises that give step by step instructions where the key is being able to read and follow a recipe. I know classes (and textbooks) like that and I worry that they not only remove creativity but hinder learning. I’ve driven to places where people sitting next to me have been there to direct me turn by turn. (And done this with a GPS of course). While this gets me there it often fails to teach me the way. The step by step directions become a crutch that removes the need to pay attention and learn the way myself. It means that if I want to learn how to get there on my own without the navigator (human or otherwise) that I have to pay extra attention and work deliberately to learn the way. I think it is like this for students with too detailed step by step instructions or too much scaffolding.
As a teacher I feel I need to find the balance between enough help that the frustration level is not too high but not so much help that they student doesn’t have to think about what they are doing. There has to be room for error. A lot of great learning comes from error. Going back to my driving analogy, I seem to be able to get to places better and easier if I have gotten lost (or a might confused) on my way there in the past. Such a problem forces attention and remembrance that a failure free trip does not.
I’m working at this balance. I want students to create unique projects and are theirs rather than fill in the blank or rote copies of code I have written for them. Students need to see how to get to a new solution on their own and not be dependent on every problem looking exactly like something they have already done.

Wednesday, February 13, 2013

Computer Science - Part of English Baccalaureate

There is some good news from the UK in that Computer Science is going to be part of English Baccalaureate (secondary school) program there. The Ministry of Education there has made two important and perhaps transformative decisions regarding ICT (Information and Computer Technology) in the British education system. The first decision was that they current ICT program which focuses almost completely on applications and computer use is inadequate. The conclusion is that ICT needs to include a lot of real computer science. The second decision is that computer science should be a core subject that meets part of the science requirement for graduation.

In the US a handful of states permit including computer science to meet a graduation requirement as either a math or a science. Unlike the UK the US does not have a national curriculum. The Common Core curriculum is sponsored by a large group of states but a) is not a national mandate and b) does not include computer science. It’s hard to understand why computer science is not in the Common Core but since it is not this gives computer science in the UK a jump over the US in CS education. Although it is not quite as easy as snapping ones fingers, writing a policy and making it happen.

Already teachers in the UK are asking question about implementation. Like the US the UK is not overloaded with teachers qualified to teach computer science.  Where is the training going to come from? Who is going to pay for it? And who is going to provide the training?

While British industry (including international tech giants like Microsoft and Google who have significant operations there) have been very supportive of the curriculum and have been influential in its creation it is not clear to me that they are the right people to provide the training. Fund it? Perhaps as it is to their advantage. It’s still going to be expensive.

Still since CS is part of the core set of courses and more and more parents are aware of the importance of computer science education one can expect the pressure on schools to offer CS courses to grow. Schools that are responsive to parent demands (which may mean first in the schools we call private in the US) are going to look to offer these courses. Students who were interested in CS but were concerned about it not counting towards graduation will also start asking for more CS courses. With increased demand one hopes that training opportunities with increase to build up the pool of qualified teachers. It has to start somewhere and maybe this is the kick start that is needed.

The US is much larger and has a deficit of qualified computer science teachers so in some respects the problem is larger here. The NSF with some funding from industry (the same few companies over and over again) has been working through a plan to get 10,000 computer science teachers teaching real computer science across the country. This is a struggle though for several reasons only one of which is the shortage of teachers and the limited funding for professional development. The big problem is that schools (districts, states, etc.) seem to have little interest in adding computer science to the curriculum. As noted, it generally doesn't count towards graduation. It never counts towards meeting adequate yearly progress (AYP) under No Child Left Behind or even Race to the Top. These days many school districts are only interested in doing things that help raise standardized test schools and get the district out of NCLB trouble.

In the UK Education Secretary Michael Gove is providing national visibility, prestige and even pressure to include computer science. We don’t hear Secretary of Education Arne Duncan talking about computer science much if at all. Even without control over a national curriculum more support from Duncan would go a long way towards helping with the shortage of CS education in the US.

We still have the problems of finding enough teachers and training the ones we have now of course. But if there were more demand for CS educators schools of education would have the incentive to create training programs for them. We have a sort of Catch-22 situation right now. There is not enough demand for CS education training so universities are not providing it but since there is a shortage of qualified CS educators high schools are afraid to offer courses for fear they will not find teachers to teach them. Without CS being part of the core curriculum no one has incentive to make the first move. Someone needs to break the logjam.

BTW don't miss Ken Royal's take at  ICT Move to Computer Science More Than a Makeover

Making Money or Making a Difference

I found this very interesting info graphic (OK Doug Peterson tweeted the link so really he found it first) from Seattle University at Training in Technology: The Merits of a Master's Degree [INFOGRAPHIC] It is intended to show the financial and career security benefits of getting more than a bachelors degree in computer science. The data makes a solid case, financially, for getting a masters degree in terms of potential income and potential for getting and retaining a good job. Nothing I can argue with there. But is that the best argument? For some I am sure it is. There are people who chose their educational path and career path based on financial concerns to a great degree. But not everyone does. For some people selecting an academic and/or career path is driven by other passions. Passion for a subject or for specific non-material goals.
I remember once having a discussion about why students do or do not select computer science and someone suggested that it was “because computer science is hard.” It’s a tempting argument and many students do look for the “easy A.” At the same time though medicine is also very hard and our medical schools have so much unmet demand that many good students go overseas to get a medical education. Clearly hard work isn’t scaring those students away. Why not? Money? Well the money is good but that seems like it would not be enough given how hard pre-med and medical school actually is. No, medical students have a passion for medicine. They want to heal people, cure disease and make life better for others. They will work hard to satisfy that drive, that passion, that self imposed mission. So I don’t think it is just that computer science is “Hard” by some definition of hard. I think it is about work played against reward. And cash is not always enough reward.
I remember seeing a cartoon some years ago where a person was saying something along the lines of “I’m not one of those geeks who started a company and sold it for millions of dollars. I’m just a regular geek.” That’s pretty much me. I’ve had a good career, live a reasonably comfortable life but I’m no where near rich. But that isn’t why I went into the computer field in the first place. I got into it because I loved writing code. Learning computer science concepts was and remains a lot of fun for me. It can be hard work at times but the payoff in the joy of learning is great. It makes the work worth it for me. Which just goes to show that people have to find their own motivations.
I was able to see a lot of Imagine Cup teams and their projects while I was at Microsoft. A good many of them and most of the best of them were inspired by a passion to solve a real and often personal problem. I do believe that computer science offers a great many ways and strong possibilities to make the world a better place. It is and will continue to change the world and we need good, talented people who are not afraid of some hard work to make that difference.
Money works for some people but I think we need to promote the ability to make a difference in the world as well. SmartPhones, GPS, eBay and PayPal and youTube and Facebook and many other things are revolutionizing our world. If young people realized that they could be part of changes on that sort of scale I think more of them would be interested in studying computer science. Making them aware of those possibilities is perhaps our greatest challenge.

Tuesday, February 12, 2013

CS Principles–An Update


The About the Program page for the CS Principles, A New First Course in Computing website has some updated documents since the last time I visited it. Of particular interest to me is a peek at what the questions look like. If you are not familiar with this new course here is a brief description from the web page:

Computer Science: Principles is a new course under development that seeks to broaden participation in computing and computer science. Development is being led by a team of computer science educators organized by the College Board and the National Science Foundation. Pilots are ongoing at the high school and college levels. Advanced Placement credit is not currently offered for this course-- present efforts in CS Principles are part of the requisite process to make it an AP course. The test will debut in May 2016 or later.

One of the things that makes this course different from the existing Advanced Placement Computer Science courses ( commonly called APCS A but that may change) is that it is programing language neutral. That is to say that any number of programming languages can be use. I know of pilots using  Scratch, C#, Alice and Snap! and I’m sure there are or will be more. The question then becomes what do questions look like in that sort of world?

The About the Project page now includes a look at Free Response Questions (FRQs) and Portfolios that were piloted by various high schools and university CS programs that offered pilot CS Principles courses last school year.

There are many more resources at the web site (clearly I should have been paying closer attention) including lesson plans for some of the big ideas being taught, a collection of resources for teachers, and information about some of the pilot schools for the 2012/2013 school year

Even though this course will not be available as an official AP Course until at least the 2015/2016 school year taking a look at it now will help schools with long range planning.

Monday, February 11, 2013

Interesting Links 11 February 2013

Last week was a great one for me. It ended with a massive snowstorm that hit New Hampshire Friday though Saturday. I love snow and we haven’t had as much as I would have liked. It did mean a snow day (no school) on Friday but that gave me some time to spend on the Internet and so I have a healthy batch of interesting links to share with you.

Next week, 2013 Feb 17–23, is National Engineers’ Week.  Thursday (2013 Feb 21) is Introduce a Girl to Engineering Day.

It’s not about the device. It has never been about the device. It’s about what we do with the device.” Very inspirational video and interview with Lou Zulli, Jr one of the outstanding teachers I am proud to call a friend.

Overheard in a Computer Science classroom is the latest post by Doug Bergman  @dougbergmanUSA and is a fascinating look into a great classroom.  I love what Doug is doing.

I ran into several interesting stories about young people and computer science. Some inspiring and one cautionary.

5 Tips For Up and Coming App Developers pretty much what is says. Smile

A lot of students are interested in game development. This post Backstage with the Windows 8 Games Studio gives a bit of an inside look into a game studio and the roles and people involved.

Interesting new site (new to me anyway) that makes it easier to find videos on computer science concepts

Who Knew Helping Women Get Tech Jobs Could Be So Controversial? an interesting post on the Huffington Post via @HuffPostTech

The CSTA blog has a couple of good posts on CS education advocacy:

The latest show in Don Wettrick’s video series is The FOCUS featuring Charles Cooper and Jill Compher using Aurasma  It’s also listed in my regularly updated post on The Focus (Finding Outstanding Classrooms Using Social media)

Kinect Games version 3 New edition of educational Kinect games from David Renton @drenton72

Friday, February 08, 2013

Improvisational Teaching

Yesterday I had a situation where several students were playing catch up after absences and the rest of the class had finished a programming exercise sooner than I had expected. It’s always nice being ahead of schedule but it brings up questions. Especially if some students are not up with everyone else. So I asked my students to get creative with the exercise. I asked them to add something to the project beyond the assignment and left the definition of something up to them. I did suggest that making single line if blocks into multiple line blocks would be on possible option. And that is where it got interesting.

Several students did start making multi-line code blocks which was just fine by me. I am happy to see them get more experience with nested if statement which we just covered (its week two of the semester). other students started experimenting a bit more though. One student discovered how to create menus in the GUI (we’re programming using C#, WPF and Visual Studio). I told him that if he prepared a lesson to present to the rest of the class I would give him extra credit. Experience tells me that students learn a lot while preparing to teach something they are interested in to their peers. We’ll see how this goes but I am hopeful to see more of this happening in future weeks.

Another student did the typical beginner move of copy and paste the have the same thing happen ten times. I suggested that loops would be a better way and he started asking questions about looping in C#. I gave him a clue or two and pointed him to his textbook. We’ll be covering loops next week and now I have an example of why to use them from a student project.

Other students asked about things like shutting down an application from a menu item or command button, changing the colors of objects (its different in WPF then Windows Forms which some of them had experience with already), or other GUI details. Students are experimenting with different GUI objects than I have time to cover in class as well.

Over all I am really pleased with the day. Students were finding things that made the project more interesting to them. They were motivated to learn things because they wanted to do something that they chose to do. They were happy. They were learning. And at the same time I was getting insights into the sort of things they want to learn and why they want to learn them. It was a good day.

Thursday, February 07, 2013

Swapping Values The Tricky Way

Last week my friend Tom Indelicato who talking to his Advanced Placement Computer Science students about sorting. As is necessary this involved talking about how to swap one value for another. This is typically done with the use of a temporary variable with code that looks something like this:
            temp = x;
            x = y;
            y = temp;
This is as you would if you were moving a liquid between two classes. You’d empty one glass into an empty glass then pour the contents of the second glass into the first glass. Finishing by pouring from the third glass into the second. Works great. Just takes having an empty space to hold things temporarily.

Tom showed me a different way. A tricky way. A way that only really works with integer values.

 y = y ^ x;
 x = y ^ x;
 y = y ^ x;

The caret ( ^ ) is the symbol for an Exclusive Or for those of you not current in C#. image

It’s Truth table looks something like  the image on the right. Of course when Tom showed me this I had to try it out. I used the values X = 10 and Y = 3. In Binary the results looked something like this: image

Naturally I had to write a program to double check my math. Smile


This is all fun and interesting in a geeky sort of way. But is it a good idea? No so much. For one thing it is tricky, unusual and can easily confuse people.  For another there is no speed gain. In fact the XOR operation is actually slower than the copy to another location operation. Not by a lot. They can both be register operations which are the fastest sort of CPU operations. But without a good performance gain there is no real reason to use the XOR method (even if it being confusing were not enough reason) over the swap operation. Lastly the fact that this is not as general purpose as the swap method is the nail in the coffin as far as I’m concerned.

But it sure is cool. In a geeky sort of way. Smile

Tuesday, February 05, 2013

XNA is Dead (or will be soon)


I’ve really loved using XNA Game Studio for game development. I think its been a great tool for hobbyists, students and even serious casual game developers. It looks like its time is about over though. While I was still at Microsoft there was a lot of talk about the demise of XNA but few wanted to come out and say “It’s dead” or really even give a clear message to provide to customers. It looks like that is changing though with a message to XNA MVPs last week. (XNA Phase Out Continues and Follow-up on DirectX/XNA )

Well not completely clear but there is some handwriting on the wall. MonoGameLogoSo now what do we do for game development? Well there are a couple of options. People I know who are still on the academic team at Microsoft have been promoting MonoGame for multi-platform gaming. (See some links at Windows 8 Game Development Links) And there is Direct X as well.

What is MonoGame?

MonoGame is an Open Source implementation of the Microsoft XNA 4.x Framework. Our goal is to allow XNA developers on Xbox 360, Windows & Windows Phone 7 to port their games to the iOS, Android, Mac OS X, Linux and Windows 8 Metro. OUYA, Windows Phone 8, PlayStation Mobile and Raspberry PI are currently in development.

In many ways this looks like the option to go for. I have heard from a number of Microsoft people that MonoGame is where people should be turning.  Microsoft may not be running it or officially supporting it but they seem to be happy it is being developed.

I admit to being pretty disappointed about the whole thing. I can’t say I’m surprised because Microsoft was probably not making a ton of money from XNA. The big gain for Microsoft were that it made it easy to create games for the XBOX and for Windows and Windows Phone. I have not idea how many applications built on XNA but I suspect that if the number was large enough to pay for XNA development after everyone else took their piece of them we’d still be seeing XNA being developed.

The other thing that happened was that the programming model for Windows 8 (specifically why they are calling Windows Store Apps but used to be called Mono) is significantly different from Windows 7 and Windows Phone 7. That means that using XNA to create Windows Store apps was going to require a lot of work (spelled M O N E Y) and that probably wasn’t going to fly.

The other win for Microsoft was that it enabled a lot of self-taught programmers and student programmers to get a good and fun start developing for the Microsoft platform. The current focus on the part of Microsoft seems to be less concerned about that goal. A number of products with this goal in mind have gone by the wayside over the last few years. Popfly and the Non-Professional Developers program it came out of for example. Some features that were put into Visual Studio but which are no longer included for another. Expression Web seems to be going away with the official line that Visual Studio lets you do all the same things. I can’t say I am happy about that decision either.

These are business decisions and of course we see other companies do the same things. Notably Google dropping some products that a lot of teachers I know were using. It’s the way of things. It’s why most of the best and most long lasting tools for teaching CS come out of universities rather than companies. (BlueJ, GreenFoot, Alice, Scratch, and now App Inventor – handed over from Google to MIT just to name a few.)

Things in the computer industry change with astounding rapidity and that is not likely to change. The trade off between tool power and tool ease of use seems to be leaning towards tool power. This may be great for professional developers (though I have some doubts about that) but it is horrible for beginners.

Related blog posts:

Monday, February 04, 2013

Interesting Links 4 February 2013

I was flat out all last week teaching full-time. It was a good week even though a bit stressful. Starting teaching new courses, especially after a long hiatus, usually is. But I still managed to find some time to scan blogs, Twitter, Facebook and Zite for stories and resources to share. I hope you can find something useful in this list.

One of my regular complaints is that companies in the computer and IT industries are not doing enough to support computer science education. Last week the CSTA took up this story with news about SAS getting involved. See SAS Stepping Up But What About Others on the CSTA Blog.

The mainstream media continues to take up the subject of computer science education. For example this commentary -  US kids need computer-science education was in USA TODAY in the US. The Guardian in the UK had this commentary Michael Gove's computer science revolution is long overdue. It looks a lot like the UK is taking computer science education more seriously than the US.

Scratch 2.0 Beta is  open to everyone. But you can only log in if you created your Scratch account before January 26th. I’ve seen demos of this and it really looks great.

Lone Star Invitational – TCEA TA-CS SIG state wide HS programming contest in Texas. IF you teach HS CS in Texas thing about entering a team.

0310_image_thumbMicrosoft has run some student competitions around Kodu in the US in the past. Last week Microsoft in the United Kingdom announced that Kodu Kup UK 2013–Competition now open If you are a teacher in the UK an looking for something to get students interested in software creating this may be a good starting point.

Five Principles to Radically Transform How We Teach Computer Programming got a lot of attention last week. I replied a bit at Do We Need Radical Change in Computer Science Education?

Muhamad Umer of Microsoft in Pakistan has started a blog series on programming with the Kinect sensor.

Friday, February 01, 2013

Do We Need Radical Change in Computer Science Education?

Everyone seems to be getting into the game of “fixing” computer science education. From Khan Academy to online programs seem to be popping up weekly. Some of these programs have been started by people with teaching experience while some appear to be entrepreneurs with aspirations of changing the world with some “new” idea of how to teach. Some are from major universities as part of a move to MOOCs (Massive Open Online Courses). Many of these are getting lots of attention in the popular or the tech media. Some even in the education media. They seem to be focused on two ideas:
  1. Students don’t have enough opportunities to learn computer science in school (k12)
  2. Current K12 computer science programs are doing it all wrong.
I’m in total agreement with the first assumption. I doubt that more than one in ten American high schools offer a real computer science course. The number who offer something as advanced at Advanced Placement computer science is even smaller. As bad as it is in general it is far worse in low income or majority minority areas.
The second item I’m not as sure about. Oh I do understand that there are a lot of computer science programs out there that are not going a very good job but there are also some amazing and wonderful CS programs out there. So that is a mixed bag. The solutions being offered are not always that radical or even different. The online component is the largest difference and that in my opinion is not a magic bullet by any stretch of the imagination.
Ajit Jaokar co-founder of feynlabs (similar to Khan Academy in that it was started in response to an adult wanting to help a child learn) has two interesting articles in Edutopia about how to radically transform how we teach computer science.
There are some great ideas in those posts but radical? I’m not so sure. Many of them are things I have learned from other CS teachers over the last few years or even (gasp) figured out on my own. I’ve listed his 10 points below (in bold) with my own comments. Is that a rebuttal? Not really. More like a conversation or a set of observations.
  1. Co-Relate the Teaching of Programming Languages to Real-Life Examples in Other Scientific Domains I think that most successful computer science teachers these days are trying hard to bring in more real-life examples especially in their projects. Projects that are too artificial and forced tend to turn students off. On the other hand finding ways to co-relate projects to other subjects and other fields of interest build enthusiasm for computer science.
  2. Prepare Kids for the Next Wave of Computing The next wave of computing includes mobile and cloud computing. Many CS teachers find themselves overwhelmed with too much to teach in too little time as it is. This makes fitting in cloud and/or mobile development tricky at best. When you add in that few teachers have training in these areas and it’s a tough situation. That being said, students need to be made aware of these topics. These are great discussion points and fit very well into discussion of computing on society which should flow all though CS education. These are areas where we need more professional development and available resources. There are some good things available for mobile (App Inventor for Android and some Windows Phone resources from Microsoft) but not much for cloud. And least not much for cloud that is appropriate for the high school audience. (Hint to my friends at Microsoft)
  3. Clarify for Kids the Economic Value of Learning Programming This is important for any subject being taught at school today. For CS it has to be more about just a job in computing though. It has to be about the value of understanding the tool that is central to almost every business and industry in the developed world.
  4. Delay Coding I have mixed feelings about this one.  I know there is a lot of thinking these days about teaching concepts apart from coding. I think that early success with coding is encouraging but doesn’t over do it. I also think that instructors can do enough set up to make starting with code easy. Plus there is increasingly the option of programming using graphical tools like Alice, Scratch, App Inventor and Kodu that really take syntax (a frustration point for many) out of the early doing picture.
  5. Discuss the Big Picture and Introduce Systems Thinking With an undergraduate degree in Systems systems thinking is never far from central in the way I do things. I think that object oriented program leads directly to systems thinking which is a plus. When teaching about objects I try to show the relationships between objects and how things like inheritance and polymorphism help a system to fit together more smoothly.
  6. Use Hacking as a Fundamental Teaching Tool I don’t like the phrasing of this. I might use the term mashup or just say “start with code and have students modify it.” I’m working on a number of curriculum resources where I supply working code either just the user interface or with some active code and then ask students to add to it or modify it. I didn’t always do this but I’ve talked to enough people who have seen good results with this that I’m doing it now. My hope is that this actually encourages more experimentation with code as opposed to too much playing with the user interface.
  7. Start with One Programming Language But Don’t Limit Yourself I’ve long been a believer that students should leave school knowing more than one programming language. I like to compare languages even without formally teaching multiple languages. I feel this gives students some sider insight that is helpful in their careers. In high school I think that if there are multiple courses there should be multiple languages taught. Kids at this age learn multiple programming languages quite easily as long as they are comfortable and confident in the teaching.
  8. Use Multimedia for Learning and for Content Creation Increasingly most teachers are using media for learning. Of course even when I was a student 40 years ago we had and used media in class but today YouTube and similar options make a lot more available. To me programming is creative but is it creative media? Not always. Media Computation is a great idea out of Georgia Tech but it is only one way to use media for content creation. The visual programming tools like Alice, Scratch and Kodu do let students create what are essentially programmed “movies.” These are great opportunities to mix programming, media and other areas of study. Over all I think I need to think more about creative media in CS.
  9. Separate the Exceptions from the Rules I think most of us do this. We present methods (or functions/subroutines) first in a simple fashion. Once students get the basic concepts of methods we introduce the differences between passing by reference and value. Doesn’t seem so radical to me.
  10. Discuss Learning About Learning I’m not sure I understand what Joakar is talking about in this point. I do know that my focus on teaching computer science is to help students learn how to learn more. They need an understanding of the basic concepts of course but the best thing we can do is help them learn how to learn on their own. I encourage experimentation and supplemental research. I emphasize that we are preparing for a world (of computer science) that is one of constant change and that students will never stop learning new things. The ones who get excited by this are the ones who really enjoy CS.
I’m not sure CS education needs radical change. I think there is a lot we can do better and a lot we can learn from people in education for other disciplines. I think we need more (and perhaps more frequent) professional development opportunities for teachers. And I believe that we need to share ideas about what works so that as a community we can improve the state of CS education. I’m just not sure that industry professionals with no experience beyond teaching their highly motivated children or other relatives are going to be the ones to “fix” everything.