Friday, March 28, 2014

Why So Many Programming Languages

A post I wrote some time ago bemoaning the lack of new operating systems has been the most frequently viewed post of all time on this blog. Today I’m posting some thoughts about the opposite issue. We have an abundance, perhaps an over abundance, of programming languages. It seems like there is a new one coming out all the time.

Look at just block or drag and drop programming languages (Programming With Blocks is the second most frequently read of my blog posts) for a sample. Go Gopher designed by Renee FrenchAlso some big companies have been working on other programming languages.

Google has been working on the Go programming language. (The Go Gopher logo is a cute one)

Facebook just announced the Hack imageprogramming language which they have apparently been using to develop Facebook’s web platform.

Of course there are also many languages that have been around for a while that are constantly being improved (or at least having features added) such as Java and C#. So what is going on?

Part of what is going on is that we are discovering/creating new sorts of programming. Programming for a smart phone (App Inventor, TouchDevelop) is different from programming for the web which is very different for creating old-fashioned batch programming on mainframes (anyone else remember COBOL?).

And there are new paradigms (or at least increased importance of those paradigms) such as parallel processing (which used to be almost exclusively FORTRAN with extensions and is now often functional programming languages like F#). Also computer scientists are coming up with new programming ideas such as anonymous classes. Often these things do not fit easily into existing languages. Other times they do but require big changes to the language. Some of us remember how much change came with Visual Basic .NET compared to the older Visual Basic 6.0.

With new power comes new complexity though. The languages that professional developers use become harder and harder to use for training beginner programmers. (I recommend Programming Languages Are the Most Powerful, and Least Usable and Learnable User Interfaces by Mark Guzdial on the Communications of the ACM blog on that issue.)

The languages built for beginners tend to be more usable and in fact that is a goal in creating them. What they gain in simplicity they give up in power and full modern functionality. The gap between beginner languages and professional languages is growing over time.

I was reminded recently that the BASIC programming language is fifty years old this year. A version of BASIC was the first language I taught myself. Knowing FORTRAN made it easy even though the two were very different. After graduation I used BASIC-PLUS to write professional software for business applications. I didn’t really have to pick up a lot more in the way of language features and functions because there were not many that I wasn’t able to easily learn as a beginner.

Today many people (teachers often more than students) find the professional development tools (IDEs like Visual Studio or Eclipse) so complex that even though they could probably learn small subsets of a language the IDE adds more to the learning curve. This in part drives the interest in easier to use tools (think BlueJ or Small Basic) or easier languages (block languages or increasingly Python) for teaching purposes. I return to the gap between those tools and languages and professional ones as a stumbling block that remains.

Companies have little incentive to create either beginner languages or a smooth path between beginner languages and professional ones. There are simple languages coming from companies (Small Basic and TouchDevelop are two that come to mind from Microsoft). Small Basic started as one developers side project and the company came to adopt it – mostly. TouchDevelop is a largely a research project. And research is why universities develop their beginner languages. Research is a good reason to develop a language or a tool. I worry what happens when/if the researchers move on to other projects, lose funding or retire.

Change is the big constant in computer science and computer science education though so I guess when things go away we’ll move on to new tools. But there are times I wish things would just stop changing for a while.

Tuesday, March 25, 2014

Assigning Projects That Create Programs Students Use

I spend a lot of time thinking about projects for my students. For programming, for applications (Office apps etc.) and just in general. I want to  find projects that students are interested in doing, that teach them things and that they want to do. Today I was reading a post by R. Michael Shanahan Professor and Department Chair of Computer Science at Harvey Mudd College at The Computing Community Consortium Blog  called Computer Science for Non-Majors  that had several interesting suggestions including this one below.

Giving students the tools to write programs that they actually want to use.  Here are two simple litmus tests:  Will students spend at least as much time using their programs to explore something new as they did writing them (e.g., using a program to align biological sequence and make inferences from those alignments, building their own music recommender system, etc.)?  And, does the assigned work offer creative avenues for students to invent and implement their own ideas (e.g., in the form of innovative features above-and-beyond the minimum requirements)?

Well there is really two suggestions in that paragraph. One, “does the assigned work offer creative avenues for students to invent and implement their own ideas”, I already try to do. I always try to leave room for students to exercise some creativity and to explore beyond the bounds of lectures and “must include” features.

The second one, “Will students spend at least as much time using their programs to explore something new as they did writing them”, got me thinking. On one hand I like to think that by the nature of programming courses we give students “the tools to write programs that they actually want to use.” But do we do this is a way that they can see the potential to solve their own problems?

What I wonder about is can we come up with assigned projects that students can use to solve problems that are interesting to them? We tend to use games a good deal because students are interested in them but do we have them create games they actually want to play? Maybe but I wonder if that is really the best thing. What I am spending some time now it thinking about programs I can assign that students can use to do non-trivial explorations on their own.

I’ve been borrowing some media ideas, image manipulations, that some students really enjoy doing, using and exploring the effects of. They like to change pictures. More of that might be a good thing. I’m on the look out for more ideas across more curriculum areas. Something to think about. Any suggestions?

Monday, March 24, 2014

Interesting Links 24 March 2014

Supposedly spring arrived in New England last week. The daffodils working their way up in my front yard suggest that may actually have happened. The piles of snow that still fill other parts of my yard suggests I not get too excited yet. I hope the weather where you are has been good. Rather than bore you with more small talk about the weather here now some links I think you may be more interested in reading.

First off some Computer Science Teachers Association news.

There was some discussion about how teaching computer science can be difficult this week. Check out:

Mark Guzdial shares A kind of worked examples for large classrooms. I wonder about sharing links to Mark’s blog only because if you are teaching computer science you should be a regular reader of his blog. And then I remember that some link love will help more people find his stuff so I link for that reason as well as to highlight stuff I think is particularly good.

Code.Org has started naming teachers of the month and students of the week.

Politicians seem to be noticing computer science as an issue lately.

Mike Zamansky (another blog you should be reading regularly) writes about Teaching Sorting - Subtle Errors

Sunday, March 23, 2014

Microsoft Global Forum 2014

Recently Microsoft ran their big annual Microsoft Global Forum which brings together top teachers with technology from all over the world. I really want to go some day. I have attended parts or all of a couple of the US Forums in the past when they ran a big event to choose who to send to the global event and they were amazing experiences. I met some outstanding teachers there and have kept have in touch with a continue to learn from a number of them.
I followed the event as well as I could from Twitter (there were a lot of tweets from the event) and Facebook (A number of my friends were there) and managed to learn a few things and enjoy the event vicariously. I still want to go in person one day.
I have collected a number of blog posts from teachers and others who were there that I’d like to share. You can probably find more information with a quick search engine look as well. But this will give you a flavor of what sort of an amazing professional development experience it was.

Saturday, March 22, 2014

Are You Coming to the 2014 CSTA Conference?

As you may have already heard (especially if you are a regular reader of this blog), the Computer Science Teachers Association is in full swing for our 2014 annual conference. We are very proud of our lineup this year as we have stellar presenters covering a wide-range of topics that will provide insight, discussion and resources amongst our attendees.

Some of our topics include:

  • Programming
  • APCS
  • Game Design, and more!

For a full lineup of our sessions and workshops, visit: www.cstaconference.org. We hope to see you in St. Charles, July 14-15.

I’ll be there. Hope to see you there are well!

Friday, March 21, 2014

Changing The View Of Code

The other day I was working on a code project and ran into a frustrating bug. I looked at it for at least an hour and got nowhere with it. I used breakpoints, debugging code, and scanned though the listing again and again. No joy. I had to leave for a meeting and so put it aside for several hours. When I got home that night I decided to take another look and within five minutes I found the problem. It was in a section of code that somehow I had neglected to look it. I was too close to the problem earlier. This happens a lot.

Somehow I think that after a break we return and our brain has done some viewprocessing we are not aware of. Or perhaps after a break we use a different part of our brain to get back into the problem and that results in a new view of the code. I’m not at all sure other than something changes when you put code aside and come back later.

I see a different sort of view change working with others. Very often a student will call me over to help them with a problem. As they are explaining the problem and what the code is doing they will often suddenly blurt out “never mind. I see it now.” Something about explaining the issue to someone else changes how we look at the problem. Sometimes that is enough to help us see a solution that was eluding us before. I should say that I saw this frequently working as and with professional developers over the years. It is not unique to beginners by any means. It’s probably common in all problem solving situations.

Clearly though sometimes we need to take a mental break from one problem so that we can find a different approach or a second set of eyes. Or a third set.

The question for me becomes how to teach students to find different views into their work. Pairs programming is one possibility especially as it forces communication. Requesting that students ask peers to review code maybe. Or even asking students to describe in regular works what is going on. Or maybe just showing it by example. Something to ponder this weekend I guess.

Wednesday, March 19, 2014

Programming for the fun of it

Several years ago I was visiting a college and the professor I was meeting with told me he assigned a slot machine project to his students. That struck me a a very fun thing to do. At the time I didn’t have the time or the motivation to write one myself but the idea really stuck with me. I haven’t written a lot of code just for the fun of it for years. And quite honestly I’ve missed it. Other things come up and while I have written a lot of code it has all had some serious goal. A demo, a sample for students, or a book. or a workshop or any of a dozen more or less work related goals.

Now that was not a bad thing and I can’t deny that I have enjoyed writing some of that code. At the same time though I wasn’t doing it all to satisfy a creative urge of my own. Last night I decided that I really had to do a project of my own for nothing more than the personal satisfaction of doing it. Since an accident of scheduling had left me time during the school day to catch up with grading and lesson planning I decided to take some time to start on my own slot machine program.

I’ve made some progress so far. Slots DraftNow clearly the graphics need some work. OK a lot of work. But I figure I can get good pictures or images later. What matters is that I get the code to work.

Once I get it all working, it is no where near feature complete after just a few hours of coding, I’ll look into making a Windows Phone version and perhaps a Windows 8 “Metro” version. But for right now I am happy just writing some code (C# and Windows Forms) and having fun working out all the algorithms.

Now I am getting some refresher on some language features that I do plan to introduce to me students so there is some practical value. But I could have done that with a boring project as well. The goal for me is just to get back to having fun though. That is what hooked me on programming and computer science in the first place. I feel like I am getting back to my roots.

What do you do to keep software development fresh and fun?

Tuesday, March 18, 2014

Does Teaching Programming Teach Grit?

gritGrit seems to be the latest educational buzz word these days. According to psychologist Angela Duckworth “grit is a better indicator of GPA and graduation rates. [then IQ]” What is grit? It seems loosely defined to me but perseverance is a big part of it. As is resilience. The big question for educators seems to be can we teach it? If it is so important than teaching it becomes a goal to think about. And the question of can we teach it and how to teach it seems to be about as open as defining what it is.

It seems though that students learning computer programming, at least those who are successful at it, are learning some grit in the process. After all if you are the type to gives up when faced with problems than you are not going to be successful at programming. Various barriers from syntax errors to logic errors to things just not being the same as one is used to thinking are going to stare one in the face. Overcoming them is a key part of learning to program. It doesn’t matter if programming is on a par with brain surgery or something anyone can learn it still takes a certain amount of grit to succeed.

I know we have to help students and keep them from getting too frustrated but to some degree we have to let them work though things on their own. They learn the most from solving their own problems. And if along the way they learn some perseverance and resilience or even grit that’s a good thing.

What do you think? Does learning to program teach grit? And if so does it do it better than some other subjects we already force kids to take?

A couple of posts on grit by Vicki Davis may be worth a read BTW.

Monday, March 17, 2014

Interesting Links 17 March 2014

Apparently the groundhog was right about a long winter. At least for us in New Hampshire. Still plenty of snow on the ground here. Extra incentive  to find things of interest on the Internet.
Nell Dale is one of the most popular computer science textbook authors of all time. The IEEE Computer Society named her their 2013 Taylor L. Booth Education Award Winner: You can see a nice interview with Nell Dale with additional commentary from Jane Prey of NSF. Worth a watch.
Why Would K-12 CS Teachers Want to Attend SIGCSE? A lot more there for us then you might think.
Read up on the Candidates for the upcoming election for the 2014 CSTA Board of Directors! CSTA members get ready to vote!
Sorting continues to be a big topic lately.
Five iPad Apps That Help Students Learn Programming Basics Not a bad list. Pretty sure they are all on my list of block programming tools already.
Recent Reading via @caitsydney CS education related reading. Take a look.
Saw this online from Microsoft’s Imagine Cup twitter feed. Something to think about for sure.

Embedded image permalink

Thursday, March 13, 2014

CSTA 2014 Board of Directors Candidates

The elections and nominations committee has announced the candidates for the Computer Science Teachers Association board of directors. You can read about the openings and the CSTA Board candidates on the CSTA web site. As usual there is a slate of very good candidates although a couple of people are running unopposed.

Members of the CSTA should be getting information abut voting soon but I encourage all members to visit the candidate site, read and evaluate the candidate descriptions and be prepared to vote knowledgably.

I’m starting my second year on the board (members are elected for two year terms) and have really enjoyed working with the other members. It’s a great board but members need to make sure they participate in elections to make sure members of the board represent their interests. So vote!

Wednesday, March 12, 2014

Resources for Learning Sorts

sortingSometimes one just doesn’t know what blog posts are going to take off. Last month I wrote a post called Sorting Isn’t Always Simple. It’s been by far the most read post of the last month or longer. Given that a lot of AP CS teachers are working on teaching sorting this month that probable shouldn’t be a surprise I guess. After posting that I started seeing a bunch of sort resources on my twitter feed and on other blogs. I thought maybe I should gather a bunch of them in one place for future reference. Some of these sites have other visualizations than just sorting BTW. So here we go.

 Algo-rythmics - Technologically and artistically enhanced multi-sensory computer science education (Inter-cultural method for teaching-learning sorting algorithms) Most famous for their visualizations of sort algorithms though dance they have a bunch of stuff on their site these days.

The Java Applets center by the University of Canterbury in New Zealand has a lot of visualization applets that include a number of sorting algorithms. But there is much more so check it out.

Sorting Algorithm Visualizations by David Martin. 8 different sorting algorithms on 4 different initial conditions. Really helpful for showing how algorithms work on different data.

Data Structure Visualizations by David Galles at the University of San Francisco. This is another site that has a lot more than just sorting by the way.

What different sorting algorithms sound like A YouTube video that combines visual representation of sort algorithms with sound.

Using a deck of cards to show merge sort Mike Zamansky talks about a hands on way he uses to demonstrate a merge sort.

Sorting Algorithms from CS Unplugged This page includes even more links to other sorting resources than I have here. It doesn’t seem right to copy and paste there work here and slide down to Other Resources.

Monday, March 10, 2014

Interesting Links 10 March 2014

I spent some time last week trying to keep up with what was happening in Austin Texas at SxSWedu and Atlanta Georgia with SIGCSE by watching Twitter. The good news is that I’m less upset about missing SxSWedu than I was before. On the other hand I regret missing SIGCSE even more. Oh well, win some lose some.

At least I have ISTE (also in Atlanta) and the CSTA conference to look forward to this summer. Maybe I’ll see some of the people who follow my blog at one of those conferences. I hope so. As usual I also managed to collect some interesting links to share.

In a post called How hard is programming? Garth Flint breaks down a simple programming assignment and explains just why it is hard for beginners. Great explanation!

HP CodeWars 2014 is one of the really big high school programming competitions. It’s now held in several venues. The team has made available the solutions, datasets, stats, and scores from all sites are posted.

Eugene Wallingford frequently posts some great advice on his blog. Take Small Steps has some really useful advice for programmers. I try to teach this to my students but sometimes it is a tough sell.

One of the most popular presentations at SIGCSE is called Nifty Assignments. You can read about all of the nifty project assignments that have been demo'd at SIGCSE here: http://nifty.stanford.edu/

Accessible yoga for the blind using Kinect Pretty cool!

Get Serious About Computer Science Education is a great editorial by Ken Royal (@KenRoyal)

Den Delimarsky@DennisCode graduates from college soon and will take a fulltime job at Microsoft. Recently he wrote a post looking back on his undergrad years: To the Incoming (and Maybe Current) Computer Science Majors that has a lot of good advice for future university students.

Experts share their views on the "Year of Code" campaign and the best ways to teach children to code.

danah boyd@zephoria is a research at Microsoft Research who has done a lot of work looking at young people on the Internet. She recently published a book called “It’s Complicated” about what she has learned. While you can buy hardcopies you can also get a free soft copy. You can read about the book and why she is giving it away at What’s Behind the Free PDF of “It’s Complicated” (no, no, not malware…)

CS Teaching Tips  and on Twitter @CSTeachingTips Looks interesting. It’s brand new  so I’m going to be keeping an eye on it.

You can find non paying internships or you can study some computer science and find a few good paying internships. Read about some of the top paying internships out there.

Sunday, March 09, 2014

Have We Reached a Consensus on a National CS Curriculum?

Oh boy are things up in the air in the HS CS curriculum these days. While we have some great advice from the CSTA (CSTA K-12 Computer Science Standards) the implementation of those standards are still left up to individual schools/districts/states. Still it is easy to come to the conclusion from watching social media and some conferences that there is a consensus on a high school Computer Science curriculum. Today I got the following from a friend.

Is it an incorrect read or has a national consensus for CS in HS's been achieved with a sequence of :
--ECS (Exploring Computer Science) Curriculum
--CS Principles/BJC Curriculum (Beauty and Joy of Computing)
--AP CS (JAVA [for now])


As usual I have an opinion. My opinion is all my own of course. I think that consensus may be a strong word. There are a lot of people pushing that sequence but it is not gaining traction everywhere. A lot of places are lucky to do just ECS or similar. My school some a shortened custom version of ECS for freshmen and has an honors programming course (using C#) as a second course. Then we have APCS (JAVA) mostly for seniors. So we have two one semester courses plus the AP which is a year.

There is just no room in student schedules for three year long CS courses. Of course four years of religion are required and a) that takes up a lot of room in the schedule and b) that is NEVER going to go away at this Catholic school. Nor would I argue that it should as it is an important part of the school’s mission.

Anyway, a lot of schools will likely go to having ECS first and then either (but not both) of AP CS Principles or APCS A (Java). Again room in the schedule and shortage faculty to teach more courses. From what I can see a lot of schools will have just AP CS in one flavor or another.

Career/Technical schools on the other hand are usually some thing completely different from “academic” high schools. Few of them use the APCS exam for one though. For another they often have two to three year programs that look nothing like ECS, CS Principles and APCS A. These schools seem to be left out of the conversation a lot of the time. This is unfortunate as these schools send some students to university who are seriously impressive. Their school background tends to be deep and wide.

Few career/technical school students finish their time knowing only one or two programming languages for example. Three to four is much more common. Career/Tech students are also more likely to have experience with hardware, networking and system management as well. I’ve interviewed many of them over the years and there are many of them I give preference to in university admissions.

So have we (for some definition of “we”) agreed on a standard CS curriculum for high schools? Maybe if you only include schools with AP courses but clearly not if you include career/technical schools. And more generally high schools whose CS program is more focused on project based learning and less on standardized tests.

A related question is *should* we have a consensus curriculum. Let’s take that on a different time.

Friday, March 07, 2014

Any Monkey Can Learn To Code

One never knows where something is going to go on Twitter. I recently tweeted a link to a post by Garth Flint titled Teaching programming is not getting easier and had an interesting response on Twitter. 

doctorMonkeyIs programming on a par with brain surgery? Or it is more like one boss I had said “programming is easy and I could teach any money to program.” Hal, who worked for the same boss at one time, pointed out that that company went out of business not long after that was said. So there is that. My old boss is not alone in thinking coding is easy though. A political appointee in the UK caused a stir when she claimed that teachers could learn how to educate students in computer programming “in a day.” Well that is crazy but is the other end, brain surgery, any less crazy? Quite a range there.  I think the truth is somewhere on the continuum between those extremes. A lot of people on the “we need more people learning computer science” movement like to say that everyone can learn to code. But is that true? And even if it is can we make everyone an expert? Probably not anymore than we can teach everyone to write well enough to create the next Great American Novel.

I think we can teach most people some coding. I don’t think we can bring everyone to the level of professional coding though. Not as software development is practiced today. Forty years ago a lot of programmers were basic coders who were taking highly detailed specifications that often came close to pseudo code and translating them to working programs. It was quite a bit different and easier than what we do today.

Some of that is because we have gotten away from that style of development and some of that is because we can create programs today that are much more complicated and involved then we could back then. The tools are better but more complicated. Today we demand a lot more creativity and imagination from software developers than we did from the rooms of low paid rote coders we used to have.

The hard part of coding (as I wrote recently) is not the syntax. The hard part is taking the commands available and figuring out how to build useful applications from them. That is a different way of thinking than many people can adapt to. How many can? I don’t think we know. Could more “get it” if we taught better? Perhaps but then again how many people can learn to do brain surgery? Where does programming fit in that line? And while we can’t teach brain surgery to the masses we do make a lot of kids at least study some biology in high school or college.

Creating useful software is the hard part. We do see young people create very interesting things using block languages like Alice, Scratch and Kodu. Mostly they are creating games and telling stories. While those activities have value I’m not sure they lead to “real” programming as often as we’d all like to believe they do. The block languages we have are domain specific to a large extent. How does one move from a Kodu game to an Accounts Receivable application for example? The path is neither clear nor smooth.

I see there being several levels of programming expertise. Sort of analogous to sports. Everyone can play pickup basketball, some will make the HS team, some HS players make a college team where there are also levels. And then there are those very few who make the NBA. Big jumps with large drop offs at each level.

I like to think I made it to Division 1 as a software developer. My friend Hal, quoted above, jumped from HS to NBA all-star. Most people will never get above pickup games (think playing around with block languages or maybe some Excel macros). Our goal cannot be, and should not be, to make everyone an all-star software developer. But if we have more at the pickup game level the whole pool gets bigger and we are more likely to get more stars as well.

Not everyone has the talent or perhaps the special way of thinking that makes an all-star level software developer. But that is ok. We can at least expose enough students to the field so that the people who have the talent discover that fact and figure out that they can make a difference in the world by using it. Most people need an experience to help them be aware of the possibilities and of the talent they may have.

Michael Jordan was famously cut from his HS basketball team. But he grew in size and ability and later became a star. I think that this would never have happened though if he hadn’t developed a love of the game and had some good coaching first. That is why I feel that if I get a student interested while I have them as a student and help them see the potential it may make a difference later when their talents grow and change.

So programming – easy enough for everyone or on a par with brain surgery?

Related Posts:

Famous Women in Computing Infographic

Very nice Famous Women in Computing Infographic from the Anita Borg Institute.
A timeline of some famous women in computing

Thursday, March 06, 2014

When Knowing The Syntax Is Not Enough

This week has been hectic for a lot of reasons. Getting my grades and comments in for progress reports has just been part of it. I haven’t had the time or energy to write much at all other than comments for progress reports. But I have been doing a little reading and some thinking. Crystal Furman had a great post earlier this week that was really good. CODING COMPREHENSION is about how some students can understand the syntax and commands but new really comprehend what the code is doing.

What I see a lot of is students who can tell you how to set up a loop or a decision statement but can’t easily make the move to using them to solve problems. They understand the problem but they are not really sure how to apply code to solve it. It’s the age old problem that we are teaching a language and how to use it at the same time. But it is not a natural language so learning the words is not enough.

A lot of people point out block programming languages and how they remove syntax errors from the equation. And there is value to that. Students can create a loop and not get lost with semi colons or errors in case for keywords and that all makes some things easier. But if they don’t realize that a loop is what they need there is still a big problem. I’m starting to think that syntax is not as big a part of the problem of learning how to program as I used to think.

The biggest problem is helping students to think in programming. They need some help seeing how to apply the statements, keywords and other things that make up the mechanics of programing. There was some discussion about teaching coding comprehension on Facebook (and you thought it was just for cute cat pictures) in the AP Computer Science Teachers group.

The discussion there lead to people talking about giving students code snippets and asking them to explain, using only English words, what the code was doing. Some teachers reported students having real problems doing this. I imagine that is the case. One hopes that practice would help here though.

I think it is important not to get too tricky with the code samples we ask students to explain though. We don’t want to model poor coding practices. We don’t want students to think that writing tricky to understand and hard to read code is a good thing. It’s not! What we want them to learn is the right way to do things. Being able to understand tricky or poorly written code is something they will get plenty of practice with reading their own code.

How are others dealing with this issue? Do you have any lecture tricks? Any project suggestions? Are you asking students to explain code they didn’t write? Something else?

[Edit: Crystal Furman’s Teaching Computer Science blog is one of the great blogs on my Computer Science Education Blog Roll. Are you following them all? Know any I should add? Let me know.]

Monday, March 03, 2014

Interesting Links 3 March 2014

Last week was school vacation week and cat on bugsI spent a lot more time than usual off line. I even got in a day of snowboarding. I don’t have as many links as usual but I think the ones I do have are good ones.

You can find non paying internships or you can study some computer science and find a few good paying internships. Most of the companies on that list are in the software business. Names like Google, Microsoft and Twitter. Tough to get but so worth it on so many levels.

Mike Zamansky had a couple of very good posts last week.

  • I guess I'm a dumbass  On one lever this is about his relationship with his students but on an other there is a great way to teach students about merge sort.
  • Change the data is about how using different data can make solving some open ended problems easier.

Learning to Code  by Doug Peterson (@DougPete) is, as you might expect, about different ways to learn to code. Some good stuff in the comments as well. I love when a blog post becomes a conversation.

New from Code.org is a site that Lets You Program Your Own Game Of Flappy Bird

Thursday, February 27, 2014

It’s OK To Make Mistakes

Me to a student the other day“Several other people made the same mistake. That is why I was able to spot it so quickly.” Invariably that statement gets a look of surprise. Students often think they are the only ones making mistakes. Girls are especially prone to this mistaken assumption for some reason. And yet beginners are always making little errors especially in syntax.

The error of the day last week was unnecessary semi colons after while statements. You know the ones that create a null statement that causes the loop’s block of statements to be outside of the loop. Anyone who has coded in a C-family language has seen that one. Visual Studio even provides a helpful warning in most cases. A warning students seem to ignore. Several students made this error in the same hour.

The day before I specifically called out this error as one of several I expected students to make. Warnings seldom seem to help. But that is ok. It gives me a chance for a teachable moment to explain (again) what is going on and how these languages “see” statements.

I’d rather see syntax errors and typos than logic errors BTW. I had one girl who was seeing a lot of errors. I showed her one syntax error she had made and all the errors went away and her program worked. As I told her, she had the logic all worked out just fine. She knew, in theory and mostly in practice, what she was doing. She just got bit by a rookie syntax error. And that I told her was ok. In fact my experience is that the longest lists of errors are often caused by the fewest of actual errors. A little thought and some patience and work will get through them every time. Giving up is the only real wrong.

cat on bugs
In the beginning syntax errors are the bane of most students existence. That is why drag and drop programming languages like Alice, Scratch, and the like (lots of them listed at Programming With Blocks) are so popular. But at some point we have to move to more general purpose languages where syntax becomes an issue.
Dealing from students frustrations or fears that they are failing is as much a part of teaching the first course (I think) as teaching the concepts. Fear is a killer. Students should not be afraid to try things and to make mistakes. Making mistakes is the real world. Letting them know that they are not alone and that everyone else is making mistakes can help. As long as you help them see the mistakes as a learning and growing experience and not as a personal failure.

I thank every student who comes up with an error I haven’t seen before. I explain that I learned from their issue and that is a good thing. And I mean it!

Wednesday, February 26, 2014

Code Hunt

Gamification of learning is quite the big deal these days. While there is not unanimous agreement and unambiguous evidence that it works in all cases there is some evidence that it works for some students. Code Hunt is a coding game that looks pretty interesting. Well I have been having fun with it. It gives students the option of either Java or C#. The graphics are nice and there is a leaderboard. While some people are happy working up a score for self satisfaction there are others who would like to compare themselves with others.


Code Huntimage is an educational, browser-based coding game targeting teachers and students from introductory to advanced programming or software engineering courses.

At the core of the game experience is an automated grading engine based on symbolic execution. If you have never played Code Hunt before, we suggest you first visit the Instructions page or play the tutorial level to get a better understanding of the game platform and mechanics.

Found a bug? Have a question? Want to provide feedback? Please contact our developers at codehunt@microsoft.com.

Go to our Microsoft Research page to find a list of publications around Code Hunt.

Credits: Code Hunt was developed by the Research in Software Engineering (RiSE) group at Microsoft Research.

Tuesday, February 25, 2014

Which Comes First–Loops or Arrays?

One of the classing problems in teaching a first course in computer programming is what order to teach various concepts. So many things are interdependent on each other that sometimes you wish you should teach everything at once. That would generally cause student heads to explode so its not a great option.  One area I struggle with is loops and arrays. They are both so much more interesting to me with the other. So I asked people on Facebook about this.

Most said they taught loops first and then arrays. This makes some good sense. (Even if it is how I do it.) Arrays are more useful and interesting when paired with loops after all. They are almost pointless without loops. Almost being a relative term of course. Also loops follow on directly from decision structures. Once you talk about Boolean expressions for if statements adding the idea of using them in a loop is pretty natural. Once can come up with some fun loop demos even without arrays.

And then others added opinions. Some did suggest arrays first. Once you have an array you pretty much need loops. This tends to feel like some “just in time learning” in that now you have a need so “let’s talk about a solution.

A couple of people talk about arrays as part of a larger conversation about variables. This also makes sense. Arrays are after all variables. It’s a simple step from “Student0, Student1, …” to Student[i]. This is similar to the logic behind following decision statements with loop statements in that you are taking a concept one step further.

A case can be made for any of these options. I don’t know if  there is research on which order gets the best results though. Anyone out there know of research? Most people just do what feels right for them. Or teach the same way their learned.

What really bothers me, and for what I have no clear solution, is that it feels like we talk about variables four times. Once for “normal” variables for standard data types. Later for arrays. Still later for strings. By that I mean at some point we talk about how strings are fairly special and have attributes of single item data types and also attributes similar to arrays. Lastly we talk about user defined variables and data types. Is it too much to talk about all of that at once? Probably. I can almost see the eyes glazing over.

All of this is why I think the first programming course is harder to teach than a lot of people think it is. Once you are through it a lot of things come easier. Of course once you’ve learned all the key concepts in a first programming course it all seems easy and obvious to you. Well if you learned them well they do. It is sometimes hard to remember how hard some of these concepts were the first time one heard them. It’s a new way of thinking for most people. And let’s not forget the syntax struggles!

Still I find teaching the first course rewording. I love seeing a student when something “clicks” for the first time and they see the potential. If only I could teach all the concepts at the same time. 

Monday, February 24, 2014

Interesting Links 24 February 2014

I’m on vacation! February break in New Hampshire this week. I’m trying to take a break from the computer and the Internet as well – except for catching up on grading. We’ll see how I do. I may or many not have an interesting links post next week but I do have a few links to share today.

I love reading about the teaching adventures of Garth Flint. Take a look at Java, here I come. http://feedly.com/e/3bOslJPK

Did you see my post on the  http://Code.org Teacher and Student Awards I’m curious to see how that program works out.

Kinect yourself a 3D printed mini-me with Shapify I really have to look into this. The software uses a Kinect to create a 3D model of a person that can be used with a 3D printer to create a small “statue” of them.

My Own Flappy Bird in which Doug Peterson writes about his experience with TouchDevelop and a tutorial from Microsoft.

College Board program to provide funding to districts to start AP courses with a grant from Google. Maybe you can use it to start and AP CS course at your school? Information courtesy of Mark Guzdial @guzdial

The Joy of Teaching Computer Science in the Age of Facebook  Hope Reese interviews Mehran Sahami, a professor and Associate Chair for Education in Computer Science at Stanford University for The Atlantic magazine. I was on the CS 2013 curriculum task force with Mehran and he’s a great guy.

Laura Blankenship writes about Counting Computer Science on her blog. I’ve written about it to but I think Laura’s writing is better then mine.

Friday, February 21, 2014

University of Arkansas Program For Minority Students & Majority Women

An interesting looking summer program. One has to get there on their own from what I can tell but no cost other than that. Open to 11th/12th graders.


TECHNOLOGY AWARENESS PROGRAM (TAP)

imageThe Technology Awareness Program (TAP) is a one-week residency program, held during the summer on the University of Arkansas campus, in the Sam M. Walton College of Business.  Each year, the Office of Diversity & Inclusion selects up to 25 students with an interest in information systems, accounting, or related business field to participate in the program. 

TAP is designed to introduce students of color to the field of computer information systems. The program is designed to demonstrate how technology is utilized to assist business organizations in their decision making process to operate more effectively. Students will have an opportunity to participate in the preparation and presentation of a challenging team project. Additionally, the students will have opportunities to interact with minority professionals from business and government, as well as visit and observe them in their work environment.

TAP is open to minority students and majority women who will be in the 11th and 12th grade the fall of the summer when they complete those grades. All students must have a minimum of 3.0 GPA. Students selected to participate in TAP will receive a full scholarships to the program, which covers the cost of tuition, room and board, meals, books, supplies, and transportation during TAP.

Thursday, February 20, 2014

Twitter Accounts for CSTA Members To Follow

Patrice Gans has a great post on the CSTA blog about Creating a Professional Learning Network that I wanted to share. Normally I would just include a link on my Monday morning interesting links page but I wanted to add a bit more value. The post lists CSTA board members and staff who have Twitter accounts. I have included that list with hot links to make it easier for people to add them to their Twitter accounts.

Also I am building a twitter list of CSTA people at https://twitter.com/alfredtwo/lists/csta
Obviously all of these people are already on it but I want to build it out some more. So if you are an active CSTA member who tweets please let me know your Twitter username by tweeting to me at @alfredtwo or leaving a comment here.


CSTA Board Member and Staff Twitter Accounts

  • Lissa Clayborn - @CSTALissa
  • Myra Deister - @shhsMath
  • Patrice Gans - @reesegans
  • Michelle Lagos - @mglagos
  • Karen Lang - @kmclang
  • Irene Lee - @ProjectGUTS
  • Pat Phillips - @patjphillips
  • Tammy Pirmann - @tammypirmann
  • Chris Stephenson - @chrisstephenso
  • Alfred Thompson - @alfredtwo

  • Code.org Teacher and Student Awards

    New program from Code.org to recognize students and teachers who are making a difference in computer science.


    Do you know a teacher or student who's changing code org logothe face of computer science - in big ways and small? Code.org wants to feature them and is offering prizes for each winner!

    What does a Code.org Student of the Month look like?

    • A student who's learning in the face of adversity
    • One who's building amazing things with computer science
    • Or, one who's helping their peers learn, and is bringing computer science to others.

    Do you know a Code.org Teacher of the Month?

    • A teacher who is engaging or inspiring students in an exceptional way?
    • One who's working hard to spread computer science beyond their classroom?

    Every winning teacher will receive a $500 Amazon.com gift card from Code.org and be featured online.

    Please share your nominations to help celebrate students and teachers of all experience levels.

    To nominate a Student of the Week, go to: http://code.org/sotw

    To nominate a Teacher of the Month, go to: http://code.org/totm

    Wednesday, February 19, 2014

    Geek Squad Summer Academy

    This looks interesting.gs-logo Best Buy runs a summer program for students ages 10 to 18 in conjunction with various non-profits. Students get hands on experience in a number of interesting areas.

    Their web site is http://academy.geeksquad.com/ and you can find out about applying to host an academy at http://academy.geeksquad.com/proposal Information about finding a camp for a student you know may be found at http://academy.geeksquad.com/register though probably not for a while yet.

    WHAT IS GEEK SQUAD ACADEMY?

    Geek Squad Academy is an educational program brought to communities throughout the U.S. by Best Buy. We partner with local non-profit organizations to teach middle and high school students about the latest technology in a fun, interactive environment. Team building activities conducted by local Geek Squad Agents in classes such as PC Build, Programming and Robotics, Digital Photography, Digital Music, and Film Production help teens build friendships and self-confidence; as well as get excited by the opportunities technology can provide.

    gsabanner7

    Tuesday, February 18, 2014

    Sorting Isn’t Always Simple

    Like a lot of people I have been following the Olympics lately. For all the talk about sport and individual and team achievement there is always a lot of attention to what countries are “winning.”  Conveniently there are lots of places online where you can view current medal totals and see how each country is doing.
    There seem to be two ways to list what country is "winning" in theimage Olympics though. One is in total number of medals regardless of type.
    The other is sorting first by Gold, then Silver and then Bronze. So most gold is first even if they don't have any other medals. In a tie for Gold then how many Silver determines a "winner". Tie of Gold and Silver is broken by number of Bronze.

    There's also a third way: By totaling points where gold=3, silver=2, bronze=1. I haven’t seen that way lately but am told some people use it.image
    Which way is the right way? I suppose that depends on how you choose to look at things. If you are Norwegian or from the US you might prefer the list be ordered by total medals. At least as of the day I captured these screen shots. If you are German or Swiss then sorting by Gold first may be your preference.

    I see a lesson in computing here. One could easily create some sort of class to hold Olympic totals. By changing how the CompareTo method is implemented either sort would work just as well. I’m not teaching AP CS this semester and we’re not going to have enough time in my Honors Programming class (just one semester long) to do this but in the back of my mind I want to remember this as a good example for the future.

    Anyone else tried something like this? What did you use for different ways of sorting? How did it work for you?

    [Edit: I have a list of resources for teaching sorting at http://blog.acthompson.net/2014/03/resources-for-learning-sorts.html ]

    Monday, February 17, 2014

    Interesting Links 17 February 2014

    We’re having quite the winter here in New England this year. chain linksPeople in warm climates keep telling me about how warm it is there as if that would get me going. But I like the snow so I’m all good. I hope you are enjoying the weather where you are. In any case, here now are the links I found interesting over the last week.

    Do Things That Help You Become Less Wrong Eugene Wallingford writes about teaching students testing and debugging. A favorite topic of mine.

    Computer science professor Tony Morelli creates games for children with disabilities. Interesting project. I think it would be even better with Kinect than with Wii but that’s me. What do you think? 

    Innovators and Explorers Sandbox - I love reading about how Doug Bergman (@dougbergmanUSA) runs his school’s computer science program. Take a read.

    Know an administrator who's changing the future of Computer Science education? Nominate them for the Administrator Impact Award sponsored by CSTA and Code.Org.

    Mark Guzdial gives a wrap up of the Media coverage of analysis of AP CS 2013 exam results at the CACM Blog.

    Celebrate Canadian Computing Education Day 2014 in Video (and in Song, If You Like) via @csteachersa

    Two Kinect Speech Tips – more helpful information on Channel 9’s Coding For Fun site.

    Announcing CSTA's keynote speakers for 2014: Yasmin Kafai and Michael Kölling. Join us July 14-15 in IL. Register now!

    Looks like there will be a HS Hackathon in the San Jose area   March 8-9 at Paypal HQ. http://www.hshacks.com/

    This weeks interesting video to share is 15 Sorting Algorithms in 6 Minutes Some interesting visualizations.

    Saturday, February 15, 2014

    Keynote Speakers for CSTA Conference 2014

    Well we now know who the keynote speakers will be for this summer’s Annual CSTA Conference. I have heard Michael Kölling before and  he is a really good speaker. He has done a lot of work with teaching CS with various tools such and BlueJ and Greenfoot. Both of those were developed by him and his team at the University of Kent.

    I don’t know as much about Yasmin Kafai but the topic sounds very interesting.


    CSTA is excited to announce our keynote speakers for 2014!

    Yasmin Kafai is a researcher, co-developer, author and professor of learning sciences at the University of Pennsylvania. She earned her doctorate from Harvard University and is a Fellow of the American Education Research Association. Kafai’s discussion titled “Connected Code: A New Agenda for K-12 Programming in Classrooms, Clubs, and Communities” will cover three central shifts that lead us from computational thinking to computational participation—from code to applications, from tools to communities, and from scratch to remix—in teaching and learning programming to broaden participation in computing for all.

    Michael Kölling is a professor at the School of Computing, University of Kent, in Canterbury, UK. He holds a PhD in computer science from Sydney University and has worked in Europe and Australia. He is also an author and lead-developer of educational programming environments and a Fellow of the UK Higher Education Academy. Kölling will discuss “What’s Next for CS Education: Thoughts on Topics, Tools, and All the Rest.” In his talk, Kölling will share his speculations and opinions on what should happen in the near future for computer science education, focusing on educational software tools.

    Please join us at Pheasant Run Resort in St. Charles, Illinois July 14-15, 2014.

    Learn more on our conference page at: http://csta.acm.org/ProfessionalDevelopment/sub/CSTAConference.html

    and register today at: https://www.softconf.com/d/csta2014/

    CSTAConf-Logo

    Friday, February 14, 2014

    Searching for Code Snippets–Good or Bad for Students?

    This morning Rob Miles posted a link (C# Code Snippets on Demand) to a new site from Microsoft Research called Bing Code Search: C# code snippets on-demand. basically you enter a question “How do I …” and the site searches for a code snippet that can be used to solve you problem. Wow! Cool!

    image

    It’s a research project and there is still work to be done. Soon, they say, you’ll be able to automatically enter code snippets directly into popular IDEs. Since the language available is C# I assume that means Visual Studio and perhaps Eclipse.

    And then I thought “Do I want to share this with my students?” and my thinking got complicated. On one hand I really do want my students to become adept at learning how to do things on their own. In this day and age that means searching for answers on the Internet. It means learning how to separate the good from the bad and learning from examples. So this site could be a big win.

    On the other hand students also get good at asking other people to do their work for them. Hang out on any inline support forum enough and you’ll see cases of students looking for people to do their homework for them. They try to hide it but generally not very well. I want students to learn for themselves and to do their own work. I don’t expect them to memorize everything but I don’t want them to have to look up every little thing either!

    When it gets down to it I will share this site. I want students to explore beyond what we can cover in lectures and demos. I want them to be able to find the tools to make their own programs truly their own programs. Exploration is why I like that Visual Studio has Intellisense for example. These snippets are short enough that they are not total solutions and so students will have to understand them to really use them. And if they can’t figure them out on their own I’ll get a teachable moment. Right? Plus the searches I have tried so far bring up enough options that students will have to use their own judgment about which possible option is what they really want/need.

    What about you? Would you recommend this site (or one like it) to students? Or do you do as much as you can to discourage students from looking for code on the Internet?

    Wednesday, February 12, 2014

    My Favorite Students Ask Me The Most Questions

    I try hard to explain every well the first time. I really do. I think most teachers do. It never fails though that someone doesn’t get it the first time. In all honesty I think a number of students don’t get it the first time. On a good day though at least one of them will be willing to admit it and ask me a question. Or a bunch of questions. I love those students!

    I used to have a cartoon in my classroom. It showed a class full of students al thinking the same thing. In panel one it was something like “I don’t understand.” In the second panel they are all thinking “Everyone else gets it.” In the third panel they are thinking “I’m not going to ask a question and let others know that I am the only one who doesn’t understand.” Most teachers know that this happens more then they would like. But how do you fix it if you don’t know what the students are not understanding?

    Lately I have been blessed with students who will, if not in front of their peers at least in private, ask me for help with a concept. Invariably as we talk one on one I see a better, or at least different, way that I can explain the concept under discussion. Sometimes this results in me doing a bit of review next class. Sometimes it results in me adding to my class slides or notes. Sometimes it results in me writing a new demo. It always results in helping me to learn how to make things more clear to more students.

    In computing there always seems to be a different way of doing things. Just think about how many ways there are to do a cut and paste for example. Keyboard shortcuts, mouse clicks, menu options, you get the idea. For me it is logical that there are multiple ways to explain everything. I love computing. I mean I really love it. That means I really want to see my students love it as well. When they ask questions and give me another chance I appreciate it. When they help me discover new ways to make the topic fun, interesting and understandable that is a huge win.

    I suppose I could take these questions as a failure on someone’s part. On my part in explanation or the students failure to understand. But I choose to take them as an opportunity to learn more about the topic, about teaching, about understanding and about my students. While it might be great if my explanations were spot on all the time and that students understood it all the first time that is not reality. And besides it would get boring if I did everything the same way all the time.

    So spending time during a prep period or after school with a student reviewing a topic is a win-win. It is something I embrace as the best part of my day. I do love learning from my students!

    Tuesday, February 11, 2014

    What’s Wrong With This Picture?

    Are all I.T. Guys <sic> white males?

    INFOGRAPHIC - What Do IT People Really Do All Day?

    I'd hang this in my classroom if there were some women and some non-white males in it. Sure the information is not bad but there is a hidden message I don't want to broadcast to my students.

    Monday, February 10, 2014

    Interesting Links 10 February 2014

    A lot of people seem the be ready for spring. I’m enjoying the snow in my yard and around the area. Inspired in part by the Winter Olympics going on my family and I went snowshoeing in the woods over the weekend. I’m ok with a bit more winter. How about you?

    I have a few good links to share this week. Near the end is a set of links with different takes on the idea of computing or programming anyway as a replacement for foreign languages in school. Let’s start with a video though. A student talking about how she has become interested in computer science and how she wants to use it to improve the world of medicine.

    Why STEM? Why Now? Featuring student Ifrah Abshir

    Teaching sorting? You may want to check out this video of 15 Sorting Algorithms in 6 Minutes.

    There are no computer science teachers in NY Well not on paper. Read what some people (including some I know) are doing to correct this situation.

    Coming in March – The UK Hour of Code The Hour of Code was a great success in the US - now for the United Kingdom

    Rebecca Dovi pointed me to some posters by the Orlando Science Center called Career Bytes. PDFs free for the download.

    Career Bytes

    These posters were created by Orlando Science Center as part of an educational series for Otronicon. The idea was to highlight career aspects and information beyond just computer programming that are not always associated with the videogame and modeling and simulation industries.

    The idea of substituting a programming language for learning a second natural language has been a big discussion point lately. Here are a couple of links that discuss the issue.

    The Best Job of 2014 Has Been Announced.  Is your school teaching what is needed to prepare students for these jobs?

    The Top 10 Best Jobs:

    1. Software Developer
    2. Computer System Analyst
    3. Dentist
    4. Nurse Practitioner
    5. Pharmacist
    6. Registered Nurse
    7. Physical Therapist
    8. Physician
    9. Web Developer
    10. Dental Hygienist

    Wednesday, February 05, 2014

    Are We Going To Learn How To Do That?

    The other day I was demonstrating some things to my programming students. We’re at the very beginning of a new semester and students are learning the very basics. We were doing a simple exercise to help students understand how assignments work with object properties. The program moves the contents of one picturebox into another when a button was clicked. I took my sample program, added an array and a timer and had it automatically rotate images across the screen.

    image

    It looks sort of nice and reminded me of the old idle loop light displays we had “back in the day.” It was something I did just for the fun of it. One might say “because I could.” And then a voice in the back of the room asked in wonder “Are we going to learn how to do that?” And then it hit me that I had done something a bit more interesting than I’d intended. I’d attracted some curiosity with it too!

    Students are always willing to work harder to learn something they want to learn. A number of teachers have talked to me about just in time learning where students are taught a concept because they need it then. I tend to push out a concept and  then asking them to use it in a project. I think I need to set things up so they pull the concept from me rather than me pushing it out. Doing the right demo may do that. That is something I want to try.

    At this point  I’m planning on demonstrating working programs first and then talking about the concepts needed to create them. What I want to do is create projects the students want to do so they want to pay attention. Few seem to be interested in learning for the sake of learning. Or even for potential future use. If they see an actual use that seems interesting I think it will be easier.

    Ultimately I want to help students motivate themselves to learn rather than me trying to force feed them information.

    Tuesday, February 04, 2014

    Software Is Empowering

    Microsoft ran their first ever Super Bowl commercial over the weekend. While it is obviously a advertisement for Microsoft and Microsoft products I see it as an advertisement of the empowering and life changing potential of computer software. That is a message I try to give to my students on a regular basis.
    Computing is so much more than business machines or game machines. In so many ways computing is making a big difference to empower people in their daily lives. In the commercial we see a bit about the connection between medicine and computing about which so many people are unaware. I see this as an important message for many of our young people to see and hear.
    image
    The commercial highlights, very briefly, some major empowerment of some people and is pretty moving. The Microsoft video site though has longer (about 2 minutes apiece) videos on each of the people in the commercial. I’ve listed them below with direct links in case you are interested.
    • See how Skype is allowing students around the world to take virtual field trips. (VIDEO)
    • Watch the amazing story from @teamgleason. (VIDEO)
    • Technology changed a little boy’s life. Watch his story here.
    • Imagine hearing for the first time at 29 years old (VIDEO)
    • Once an artist, always an artist. (VIDEO)
    • Surgeons provide better care to patients using @GestSure and Kinect. (VIDEO)

    Monday, February 03, 2014

    Interesting Links 3 February 2014

    Starting the second week of a new semester today. Last week was interesting. It was a major adjustment because with a new group of students I had to reset my expectations. I had to transition from a group of students who had been learning things for months to a group that was hearing things for the first time. It harder than some might think. All in all I seem to have spent less time online this past week so only a couple of things to share. Some good ones though.

    I’m taking a look at this Microsoft Excel Lesson Plan: The Olympics for possible use in some of my classes. I like the idea of something timely that students might be interested in doing.

    Congressional App Challenge (on Twitter at  @congapps) started yesterday:app challenge logo2

    Modeled after the Congressional Art Competition, the House Student App Challenge promotes Computer Science and STEM (Science, Technology, Engineering and Math) education by recognizing and incentivizing our nation’s young programming talent.

    The House Student App Challenge is open to all high school students in participating districts. The inaugural App Challenge will run from February 1 to April 30, 2014.

    How I teach programming to 7-11 year olds using Scratch was written by Phil Bagge in the UK, Something for people teaching younger students. Phil is on Twitter at @Baggiepr