Tuesday, July 01, 2014

Don't Panic

I originally wrote this (for the CSTA blog)  near the start of the last school year. I have to say though that as this year ends and I am fired up about preparing for the next year is seems relevant to me now.
The cover of the famous fictional "Hitchhiker's Guide to the Galaxy" reads, in big letters, "Don't panic." There isn't a definitive "teacher's guide to teaching computer science" but if there were I suspect it would have the same message on the cover. Students are back to school in some of the US as I write this and most will be back in the next week or so. As teachers we start the year with all sorts of emotions. Excitement, anticipation, and to some extent a wonder of how it will all come together.
One never knows what will happen once school begins. Oh sure we start off with carefully thought out plans for the whole semester or years. Or at least we tell everyone we do. But plans change as they meet the reality of the classroom. Some years we get start students who force us to move faster than we'd planed. Other times students need a bit more attention and the plans have to be slowed down a bit. Seldom do they go completely as planned. While this happens in many subjects it is a bit different for many computer science teachers as we often have no one else in our building to go to to bounce ideas off of. We can be isolated and alone. I am here to say "don't panic" because there are resources available. You are not alone!
CSTA local chapters have been growing in recent years and they can serve as a great support system. Chapters can be great sources of professional development, networking and opportunities for personal and professional growth. If you are not involved in a local chapter, it is time to get involved. If there is no local chapter, perhaps you can find some help to get one started.
There are resources online as well. Are you signed up for the CSTA listserv? This is a great place to ask (and answer) questions with CSTA members.
The CollegeBoard also runs an online discussion forum for AP CS teachers that is useful for more than just AP issues. You'll need to create a free professional account at the site if you don't already have one. If you're teaching AP CS the account you used for your curriculum audit works just fine.
You can also find information and discussions on the CSTA Facebook page. Yes, Facebook does have educational value.
This year is alive with potential. This can be as intimidating as it is invigorating but "don't panic" the best is yet to come!
Note: This post is cross posted from the CSTA blog where I post something about every other month as part of my responsibilities as a member of the CSTA Board of Directors. I am cross posting these posts in advance as part of my attempt to take a vacation from the Internet for a few days.

Monday, June 30, 2014

Final Thoughts–ISTE 2014

There is still one more day for ISTE but today was the last day for me. My brain is full and I am tired so I am ok with missing another day. ISTE is a huge conference. There are many sessions, a gigantic exhibit hall and 13,000 attendees not counting the thousands of people working the exhibit hall. Is it too big? That is a question I asked myself several times over the last couple of days.
This year there seemed to be lines everywhere. Not just for the food concessions or the ladies rooms either. I got locked out of several sessions because there were more people wanting to get in than could safely fit. I heard more than a few people complain about lines and missing out on sessions. This (Georgia World Congress Center) is no small venue either. There are something like 3.9 million square feet of conference center here.
For me ISTE is about three things: The sessions, the exhibit hall and the people and personal connections. That’s pretty much in reverse order. I attended some sessions that were pretty good. I was impressed by Microsoft’s sessions which while as much marketing as a  session in the exhibit hall as anything were presented by teachers who use and know how to use the tools.
For me the big problem with sessions is the shortage of Computer Science related sessions. But I go to the CSTA conference and SIGCSE for those sessions anyway.
I also stopped by a lot of poster sessions labeled different things. Those rooms/areas tended to be crowded and busy and loud but I picked up a few things. Some suggestions to people who present this way in the future:
  • Have handouts that explain a lot and link people to still more online. QR codes on your poster are all well and good but people really want to look at your website later. So create a handout and put the QR code andor a URL on it with enough information so they remember what they are looking up.
  • Don’t just talk to one person. It can be very easy to get wrapped up in conversation with just one person with the result that others don’t think you have the time to talk to them. Exhibit hall discussions can be longer, often, because companies put a lot of people in the booths to talk to people. If you are the only one then you have to work at making sure you get to talk to a lot of people. Schedule a later face to face meeting if there is real interest in going deep.
I know people who wish there was no exhibit hall at all. They see it as too commercial and marketing oriented. Even if you ignore the fact that exhibit hall fees are a huge part of making the conference affordable there is a lot of potential value from the exhibitors.
Yes there are some companies that are all about making the sale. That is human nature. But I find that most companies, and especially the people they send to conferences like ISTE, really believe they have products that make education better. Some of them may even be right. You will not know it without talking to them though. You may get some good ideas even from the worst of them. It’s been known to happen. Best case you will find something that will make a real difference in how you teach. I enjoy the exhibits.
Last but far from least are the people. There are a lot of people I communicate with and learn from all year long via social media. Even a short face to face meeting makes that ongoing communication much better. It builds relationships that last more than many might think. Face to face is high bandwidth communication as well. You can really learn a lot in a short period of time face to face.
With ISTE being so large both in venue and numbers of people I didn't get to connect with everyone I wanted to talk to. But I sure did connect a lot. And that makes all the difference.

Sunday, June 29, 2014

Day Two–ISTE 2014

So much of what makes a conference for me is the people. I’ve missed the last two ISTE conferences and it has been a while since I have seen a number of people who I interact with online in person. Today was a day to reconnect in real life.Steve Alfred
New for me this year is the selfie. I've taken several with people. The one on the right is with Steve Dembo of Discovery Education. We caught up at the Blogger’s CafĂ© early today. It was great to catch up with him. And with too many others to mention.
I spent the morning in the exhibit hall. There were a lot of 3D printers and robots. I've seen robots in previous years but the explosion in 3D printing is new. I think we’re still early in that but the move towards getting students making things is going places. Of that I am sure.
On the computer science side the Alice program from Carnegie Mellon had a booth this year. Don Slater was manning the booth and it was encouraging to hear him talk about how people were already using Alice and looking for more ways to use it. That’s exciting.
Python, the programming language, was present a lot this year. Grok Learning has an online tool (not free) that evaluates code and reports back on errors. It has some similarity to some project from Microsoft Research like Try F# (http://www.tryfsharp.org/), Pex 4 Fun(http://pex4fun.com/Page.aspx#learn/) and more recently Code Hunt (http://www.codehunt.com/) It’s not free like the Microsoft options are but there is support and it is designed for teaching so I may look at it some more.
Exploring Robotics has an “Exploring Robotics with Python” curriculum that uses a Scribbler robot. Combining programming and robots seems to be a common theme at ISTE in the exhibit hall. I may look into that idea some more. Kids like seeing things move and do things.
At the Computing Teachers Network forum (used to be SIGCT)Neo I saw the Nao robot from Aldebaran up close and personal. It can be programed using a number of languages and also a drag and drop system called Choregraphe. That system is built on Python and Python can be used to create new objects and commands for Choregraphe. It is expensive though.
So many things are, probably not surprisingly, not free and some costs add up quickly. But then a lot of the best things in education do cost money.

Saturday, June 28, 2014

Day One–ISTE 2014

I actually got here on Friday but things started for real this afternoon. More or less. I was not able to get into one big session of mini talks because the room (and overflow room) filled up. Poor planning I think. I was not impressed by a very long line outside a door that apparently didn’t open until minutes before the session was supposed to start. On the upside, that caused me to go to my backup session.

I spent some time in a group with Vicki Davis (AKA Cool Cat Teacher) talking about a student directed MOOC project. I’m not sure I would call it a MOOC the way many think about it but it was interesting hearing about anyway. One of the end results of the project was evaluations of some 70 “educational games.” You can see some of the project including the evaluations at http://gamifi-ed.wikispaces.com/ A good use of a wiki.

One of the conclusions that her students came up with was that most serious games were either educational or fun. very few were much of both. This is not news to anyone who has been paying attention to research on serious games. I heard much the same thing at the Games 2 Learning Institute in NYC two years ago. Thought honestly to hear about 9th graders coming to the same conclusion after their own independent research was reassuring to me.

I’d like to see more students work on their own educational games. They know about about what fun is like at least. And they also know when they are learning or not.

Talking about student initiated learning. I talked to Vinnie Vrotny for a while about the maker spaces he has been setting up in schools. Wow! Kids are getting fired up making things across the curriculum. I hope to get some more ideas along this line over the next couple of days.

The opening keynote was by Ashley Judd and I’d tell you all about it except I skipped it. I’m sure it was interesting and all but nothing in the write up make me think it would be worth waiting for an hour in a huge line to hear. I would rather have had Hadi Partovi from Code.Org give a keynote. ISTE needs to move a little back to its roots and do a lot more to encourage computer science in schools.

Wednesday, June 25, 2014

Information and Knowledge

The cartoon below by Hugh Mac­Leod is one of the most shared of his images on  the Internet. I have to say I see something different in it every time I view it. Recently I saw it as showing the difference between teaching a programming language (information) and teaching how to program (knowledge). Teaching a programming language is easy. Really it is. The hard part is helping student make the connections and putting something together that makes sense.

information knowledge

As I though more about it though I realized that helping students turn information into usable knowledge is what all good teachers do regardless of the subject they are sharing with their students.

Information, they say, is power but real power is using that information in a knowledgeable way. Lists of names and dates are really just trivia. Interesting but not useful alone. What is useful is knowledge about what the events and actions around those dates and people did to change the world around them.

I’d like to close with one other of Hugh’s graphics that I like. I may have to get a print for my computer lab. After all, changing the world is what I am counting on my students to do.

microsoftbizcard219border

Click the image to read the backstory behind the Microsoft Blue Monster.

Tuesday, June 24, 2014

The More Languages Change The More They Stay The Same

One of the links in yesterday’s interesting links post was to a fun questionnaire for computer science people. Guess the Programming Language asks you to identify programming languages from a small snippet of code. two of the languages in the questions were pretty far out and more joke than useful. I’ll ignore them for the time being. But several were pretty recent real programming languages that are being promoted as new and special.  I have to say though that a lot of them look a lot a like.

At some point one had to work fairly hard to find the unique attributes or syntax between languages. Most of them seem to have a large volume of “stuff” that could be taken right from the definition of the C programming language. Other features, or rather syntax changes, seem to be attempts at obviating the need for the use of letters. OK none of them take it to the extreme that APL did. Am I the only one who remembers this sort of keyboard overly for entering APL programs?
APL-keybd2.svg

Did no one learn from that?

It feels like the early days of programming saw languages that were really different from each other. No one would confuse a FORTRAN program with a COBOL program or a BASIC program. Let alone APL.  Java, C++, C# and more in the C family all look largely alike for the basics. One sort of wonders why people bother creating new languages if they are not really different.

Another thing I have noticed is that while there once was a goal of making programming languages easy for people to understand it seems increasingly like one goal is to make them easier for compiler writers (or at least the people who write the parsers). The use of special characters seems to be going way overboard. Maybe that is through back to or because people didn’t learn from APL? I don’t know.

One thing this has done is encourage the use of block programming languages for beginners. While an (mostly) good idea this makes the jump to more professional languages into a big step. What’s an educator to do?

Monday, June 23, 2014

Interesting Links 23 June 2014

School’s out for the summer! Not that I haven’t been busy doing a lot of stuff I just haven’t had time for during the school year. And this week I am getting ready to go to the ISTE conference after missing the last several. I am really looking forward to seeing people, attending sessions, and scanning the exhibit hall for new ideas. Look for me if you are there.

I found a new (to me) blog this week -Computing Science in Primary Education written by Phil Bagge who is on Twitter @baggiepr. Two articles there to get you started

“The job gap and growth opportunity is in computer science, not STEM" is the comment with the following graph found at the Code.Org blog (What % of STEM Should Be Computer Science?) We are not facing a STEM shortage as much as we are facing a CS shortage.

Embedded image permalink

Small-Group Code Reviews for Education recently on the blog@CACM via Communications of the ACM. I keep saying I’m going to do code reviews with students but I haven’t done it yet. This fall for sure.

I found a fun questionnaire for computer science people. Guess the Programming Language. Give it a try. Warning one of the languages has a name that may not be “safe for schools.” There are a lot of the newer languages and fewer of the old favorites. Hint: COBOL and FORTRAN are not correct answers (or even options) for any of the questions. How well do you do on it?

Last week the CSTA Announced the First Ever Administrator Impact Award! to recognize “an administrator who has made an outstanding contribution to
K–12 computer science education.”

What are you doing this summer? My latest post on the CSTA blog.

Why Computer Science Needs Women This article is from Marie Claire which is not your typical geek journal!

Friday, June 20, 2014

Things You Love Are Made With Code

Well it looks like Google is jumping into the effort to get more girls interested in computer science in a big way. Their new program is called Made with Code.

image

From the official Google blog.

Today, we’re attempting to solve this issue on a much larger scale. Along with Chelsea Clinton, Girls Inc., Girl Scouts of the USA, Mindy Kaling, MIT Media Lab, National Center for Women & Information Technology, SevenTeen, TechCrunch and more, Google is launching Made with Code, an initiative to inspire girls to code. The program includes:

  • Cool introductory Blockly-based coding projects, like designing a bracelet 3D-printed by Shapeways, learning to create animated GIFs and building beats for a music track.
  • Collaborations with organizations like Girl Scouts of the USA and Girls, Inc. to introduce Made with Code to girls in their networks, encouraging them to complete their first coding experience.
  • A commitment of $50 million to support programs that can help get more females into computer science, like rewarding teachers who support girls who take CS courses on Codecademy or Khan Academy.

$50 million is a lot of money. It will be interesting to see both how it is spent and how it works.

Thursday, June 19, 2014

Programming as Storytelling

Code tells a story. When I hear someone talking about telling a story in code I tend to think of tools like Alice, Kodu and Scratch. After all those are tools with lots of pretty pictures and commands that seem to scream “use me to tell a story.” But really any program tells a story of one sort or another.
Take for example this bit of code.
          PictureBox p = (PictureBox) sender;
            if ((int)p.Tag == 0)
            {
                p.Tag = 1;
                p.Image = Image.FromFile("redot.png");
            }
            else
            {
                p.Tag = 0;
                p.Image = Image.FromFile("bluedot.png");
            }

There is a story here. The story is a simple one. Let’s make the dot blue if it is red and make it red if it is blue. It’s part of a larger story of lets manipulate some dots on a form to make it look like they are rotating around in a loop.


image


Like any good story it has characters. In this case the characters are a bunch of dots that can either be blue or red on color. The dots don’t actually move in this story but the pretend to move by changing colors in a synchronized manner.

We have a plot of sorts.It has a beginning – a button is pressed. Every fraction of a second a dot takes on the color of a neighbor dot in a pattern. There is an end to it – the button is pressed again or the program is terminated. OK it’s not much of a plot but then it is a simple program.

Larger more complicated programs have larger more intricate stories. A book piece of software even has a back story based on the types of people who will use it and what they need it to do. Some development groups layout these backstories and great detail with names and descriptions of different types of users to keep in mind during the development.
 
At any point while reading a piece of code one can ask “what happens next?” and “how did we get here?” What is this character (variable, method, data structure) and how do we expect it to act? What are its traits? What is its reason for being? Have we described it carefully enough so that it can act out its proper role in our story? Does our story hang together and make sense?

Part of teaching programming is teaching students how to tell the story in code. And to understand the stories someone else has written. This is not the normal, natural language, way of storytelling but that doesn’t mean there isn’t a story there.

Wednesday, June 18, 2014

Computers Don’t Do Ambiguity Well

I’ve seen several variations of the image below over the years. The last time I saw it I decided I’m going to use it with my computer science students next year.

can you read this

I suspect that most people can read that. Some may struggle with some parts of it but once you get rolling your brain takes over and deals with the misspellings and sees what it wants to see. Computers are not very good at that. Generally one has to do something specific before software recognizes that uppercase and lowercase letters mean the same thing. Or at least close enough for most applications.

I think this will serve as an example of a couple of things. Obviously how well human minds handle things that are not quite the way they should be but also how difficult it can be for computers to parse what humans mean by what they say. I’m hoping it will lead to some interesting discussion. What do you think?

Tuesday, June 17, 2014

The Things We Argue About

I shared the image below on my Facebook page last week. As I write this there are ten “Likes” and nineteen comments from my friends. Over how curly braces should be formatted? Yes. Computer science people will disagree on almost anything.

Two kinds

The style on the right is the original Kernighan and Richie C book style. The style on the left makes it easier to line up the braces and for many, including me, that makes the code easier to read and to debug. There are people who argue for each style and make good if difference cases for their style.

And then there are people who suggest languages, Visual Basic and Python came up on my Facebook page, that don’t use curly braces at all. 

So who is right? Probably everyone. And no one. The discussion is interesting either way. In fact one of the things I have long appreciated is that in software there are almost always several ways to accomplish anything. A lot if left to personal opinion and what works best for the way the individual thinks.

Companies usually have set standards because regardless of personal preference consistency makes life easier when working on a team. Deciding on standards when creating a new organization gives people a chance to work out their own ideas and come to agreement (or at least acceptance) of a common way of doing things. That can be a useful process.

Monday, June 16, 2014

Interesting Links 16 June 2014

School is out! Well after lunch today school is over for the year for me and my school. I’ll miss the kids over the summer but I’m ready for a break. I plan to work on my curriculum over the summer though. I’ll be blogging about some of my ideas over the next few days and as the summer goes on. I’m definitely going to make more videos though. See Office Mix and Binary Numbers  for some of how I’ll be doing it.

Let’s start with some news from code.org - 22 states now allow computer science to count, up from 10 when we started in 2013. http://code.org/action

Embedded image permalink

CSTA Annual Conference Reminder – time is getting short. I’ll be there. Hope to see many of you there as well.

14-year-olds find manual online, hack an ATM during their school lunch hour Can you imagine that? You have to hand it to those kids for initiative and for doing the right thing with what they learned. A good topic of conversation for the future.

There was a lot of media excitement last week about a computer passing the Turning Test – fooling people into thinking it was a person. But it turns out No, A 'Supercomputer' Did NOT Pass The Turing Test For The First Time And Everyone Should Know Better Artificial intelligence is another great topic for discussion in class.

Saturday, June 14, 2014

I Am Not a Bug

The term "undocumented feature" is a humorous term for something that was not planned in software. OH for sure there can be features added to a product that are not documented. Easter eggs are a notable example. But generally the term undocumented feature is used to down play something added by error. When I ran into this image last week I was in a bit of a philosophical mood though and saw more to this cartoon than a bug calling itself a feature. 

not a bug

Computing attracts its share, perhaps more than its share, of people who stand out from the norm. A bit geeky at times. People who look at problems a bit differently perhaps. We live in a society that often sees being different as “a bug” but I have been thinking that perhaps we should see ourselves as having “undocumented features.”

Friday, June 13, 2014

Office Mix and Binary Numbers

One of the things I worked on this year was sharing resources with students. I uploaded all my PowerPoint presentations to our learning management system for example. And I created some video demos which I loaded on YouTube and linked from our LMS as well. I did see students using the PowerPoint decks for review which I think helped some of them. What I was really wanting though was something better. Something more interactive. I may have found it.

I’m in the customer preview for something called Office Mix which works with PowerPoint to let you record presentations, add video, and quizzes and other things. Basically it lets you do a lot with PowerPoint and mixed media. imageOne of the things I wanted to do was to record presentations, which I could do with various tools already, but add more. Specifically I have long thought that it would be great if students who were watching the videos on their own could check their knowledge. Office Mix lets you add various types of quiz questions to a presentation so that viewers can do just that.

My learning project was an introduction to binary numbers. It includes me speaking to a (pretty good if I say so myself) set of PowerPoint slides with some quiz questions after two sections. Just something to give students a chance to try things themselves.

I’m looking at a bunch of my presentations to see if I can do more of this over the summer. The idea that kids can replay my talk and not just review the slides seems like a real positive. The only downside is that it requires PowerPoint 2013 and right now I just have a 180 trial version. May have to see what the school’s budget is for upgrading me is like.

image

Hour of Code 2014

The latest announcement from code.org hit my email inbox yeterday. Looks like they are planning for a bigger better "Hour of Code" for CS education week this fall.

Code.org

The Hour of Code is coming... again! December 8-14

Thanks to educators like you, last year's Hour of Code movement just keeps growing. By now, 37 million students have tried computer science for the first time with the Hour of Code!

We hope to make this December's campaign even BIGGER. So before you leave for summer,mark your school calendar now for the Hour of Code 2014, coming December 8-14.

Check out new Code.org courses

By fall, we'll offer:

  • 3 levels of elementary courses (K-1, 2-3, 4-5)
  • Free, one-day curriculum workshops for elementary teachers beginning in September -Sign up to be notified when a workshop is scheduled in your area.
  • Middle school programming activities for math and science classes. Learn more

Check out our current courses for a preview of what's to come: all free, open source and available worldwide.

I can't wait to share more Hour of Code news this fall and together hit our goal of reaching 100 million students by the end of the year!

Thursday, June 12, 2014

Good Things Are Happening in APCS

The Advanced Placement Computer Science exam was graded last week. Well the free response part was anyway. I had a number of friends there and got some news from them. There was also some APCSA 2014 Exam info from Trevor Packer (via Twitter) [collected by Jim  Huggins and posted to the APCS mailing list] which I have copied below.

Besides the Google funded efforts I know that the TEALS program (Sponsored by Microsoft) put a lot of industry professionals in classrooms to help teach APCS last year as well. So industry is starting to step up their support. I think that is a great thing.


Trevor Packer, head of the CollegeBoard's AP program, just posted some information about the 2014 APCSA exam to his twitter account (@AP_Trevor).   I'll copy his tweets here for your edification:

American schools are showing real commitment to helping students learn computer science: participation in AP Comp Sci grew by 33% this year.

Google funded the creation of AP Computer Science courses in more than 100 schools this year where female & minority students lacked access.

2014 AP Computer Science scores: 5: 20.9%; 4: 23%; 3: 16.9%; 2: 7.7%; 1: 31.5%. These may shift slightly as late exams are scored.

Given the difficulty level, it's rare to see a perfect score on an AP Exam, but when we do, we notify the student & teacher in the fall.

We're seeing the first perfect scores on any AP Exam so far this year in AP Computer Science: 9 students earned all 80/80 pts.

AP Comp Sci students scored very well on mc questions about object-oriented programming, but still struggled on data structures.

Of the AP Comp Sci free-response questions, students tended to perform best on Q2 (GridWorld case study)

Tuesday, June 10, 2014

That Was (Not) Easy

Someone mentioned in a comment somewhere (I wish I could find a link) that sometimes they create a project for students that they haven’t built themselves first and find out that it is harder than they expected. I sure can relate to that. I’ve done it more than a couple of times.

Now normally I like to assign projects that I have already coded at least once. Failing that I like to use projects that I know other people have used with students at the same level. But sometimes I get creative and adlib something. Typically this comes as a result of a conversation with students during class. It usually involves me saying something like “Let’s try this.” Sometimes it works. Sometimes it even works well. But sometimes things turn out to be a lot harder than they first appear.

I’m not sure this is necessarily good or bad. When it results in the students and me both learning something new that can be good. If we have fun doing the learning so much the better. When it results in a lot of frustration and misery that is not a good thing. Not for me and not for the students.

One could avoid that by always taking the safe way out – use tried and true projects only. Or perhaps wait until the instructor has a chance to code up a sample solution first.  But if you do that you risk losing a special teachable moment. Plus I like to live a little on the edge.

I learn a lot from watching students work on projects. Even if I have done a project before and think I know all the things that can go wrong an inventive student will often find a new way to mess things up. And that is fine. I learn. They learn. We both win. Having done the project before either on my own or by helping students makes it easier to make sure all the required techniques and tools are taught before assigning the project. And there is nothing wrong with that.

Trying to code a project myself usually helps me determine how long it should take students to complete the project. Sometimes I even calculate it correctly. But having students do it is really the most reliable way. It makes for interesting scheduling and lesson planning when you get it wrong of course. In high school one can’t often expect students to put in many extra hours outside of school as one would at the university level. So there are advantages to getting the timing right.

So much is about trade-offs though. There is value in spontaneity and in creating spur of the moment projects that students are really interested in doing. And there is value in having clear schedules and stable projects to assign. Generally I find some balance and that seems to work out.

Of course sometimes students surprise you and finish things early. As they say “I love it when a plan comes together.”

how long

Monday, June 09, 2014

Interesting Links 9 June 2014

Well my seniors are done. Graduation was yesterday. The Salutatorian had several interesting and funny things to say. Perhaps because it is a Catholic school some of it was in Latin too! A former student was by to see a cousin graduate and told me all about his career in computing which was great. Nice to know I didn’t mess him up too much. I have a lot of links to share this week. I hope you find some of them as interesting as I did.

CHOOSING THE RIGHT LANGUAGES FOR EARLY CS INSTRUCTION IS IMPORTANT by Eugene Wallingford @wallingf which relates closely to a recent post by Mark Guzdial Hands up who likes PHP? The role of popular programming languages in Computing Education

Self driving cars are coming which leads danah boyd to  ask Will my grandchildren learn to drive? I expect not  Something i need to discuss with my students. And think about myself.

There are some 35 teams from around the world across 3 categories headed to the Imagine Cup world wide finals. (See Meet the Imagine Cup 2014 World Finals Teams! ) Only one US team is going. A few years ago we could count on several US teams there. Should the US be worried? I wonder. See my old post on What Is It With US Students and Programming Contests?

The problem with hacker schools  is one of several posts which inspired my own post On Being a Software Developer. Have you looked at so-called hacker schools? What do you think about these apparent “short cuts?”"

Study Computer Science!!: A fun ad (a YouTube video)  for AP CS by a high school student. Nicely done.

What we should be teaching in CS by Laura Blankenship. Personally I think we need some help with this question – especially for younger students.

Navy Puzzle Challenge Blends Social Media, Cryptology I’m seeing more and more of this sort of thing. People who are looking for smart creative people to hire are using interesting and innovative ways to find them.

Bill Genereux @billgx passed on a link to How to (really) get girls into coding  in which Lydia Loizides  @lydiaNYC takes on the question from a woman’s point of view. Do you agree with her?

Garth Flint asks a big question - How expensive are good teachers? 

New from Mark Guzdial - Why Counting CS as Science or Math is Not Considered Harmful writing at the blog@CACM.

Scott Hanselman @shanselman says that This URL shortener situation is officially out of control. I have to agree. I am spending extra time these days preparing this link just getting rid of “short links” that seem to get several deep at times. At a point this becomes unhelpful.

Friday, June 06, 2014

On Being a Software Developer

Recently Mark Guzdial had a post called High school CS teachers need to read and trace code, not develop software that got me thinking along some new lines. Working with students on their final projects and some other online reading lately has me thinking even more about what is involved in becoming a real developer of software. Some claim that once you write your first code you are a software developer. Seems a stretch to me. I’ve replaced a few pipes and made minor plumbing repairs but that doesn’t make me a plumber by any means.

As a teacher with limited time for teaching I can teach only so much. I teach some important concepts that software developers need to know for sure. Loops, decisions, variables, and the general basics. Students can write simple programs with what we cover even in a short part of a semester that we dedicate to that in our first course. That doesn’t make them developers though. Not in a real sense that means someone should hire them to write code.

Developing software is more than just writing code. It means writing code well. Let me jump back to plumbing for a minute.

I replaced an l joint under my bathroom sink. It sort of worked by which I mean it only leaked a little. I knew the basics but my implementation left something to be desired. I hired a real plumber to fix that and some other work that, thankfully I knew were beyond my skill, and there was quite a difference. No leaks for one thing. For an other thing it all looks nice and neat and clean. My depth of knowledge was not enough to do a professional job.

This is also true with programming. I printed out a student program to play a game called lights out (instructions at the bottom of this post). It went on for about 20+ pages. The version I wrote too barely 2 pages. Why the difference? Experience mostly. There was nothing in my code syntactically that the student hadn’t learned. But the experience to look at a problem and see that there are different ways of doing things was not there for the student. Students took days and days to complete their Lights Out games. It took me a bit over an hour. That’s not a brag. It’s what happens when you have decades of experience.

When I looked at that program it screamed two dimensional array with “buffer” items around the edge to simplify operations. I’ve seen that sort of thing many times over the years. I see a group of items while a beginner generally sees 25 individual items that have to be handled individually. Could I have taught what I did to students? Of course. Should I have? Probably not with the time I had and the priorities for what needed to be taught in the time available.

In fact for each of the projects my students selected for their end of year projects (there were quite a variety of them) there is probably a technique that would have helped them create a more efficient and better running program. They could probably have saved time as well. But I didn’t have the weeks it would have taken to cover all those techniques.

What do we want to cover in a first programming course? The basic concepts of course. We want students to understand loops, decision structures, data storage, and the logical thinking behind all of this. That is computer science – at least a small subset of computer science. We’re not making them software developers though. Not by a long shot.


3. Lights Out – The game starts with 25 red buttons arranged in 5x5 grid. Each button pressed toggles itself and the four buttons around it (above, below, to the right, and to the left) between green and red. The object of the game is to get all 25 buttons green.

image

Related posts:

Thursday, June 05, 2014

Computer Science Principles Summit–Virtually

In case you are not a CSTA member  (why not?) and didn’t get the email this looks pretty interesting.


In a new twist for 2014, CSTA is thrilled to invite you to our first ever virtual summit in conjunction with our annual conference in July. As an online participant of the Computer Science Principles Summit you have access to presentation slides, handouts, and supplemental resources as well as the ability to interact with attendees participating virtually and on-site. This is free professional development for CS educators made possible by enthusiastic support from Google.

There are just a few simple things you'll need in order to take full advantage of our online summit experiment.

  • Register on the CS Principles Summit website so you can receive summit updates and the option to join a pre-conference tutorial on Google Hangouts-On-Air. CS Principles Summit Site: https://sites.google.com/a/csta-hq.org/csps
  • Before the summit, set up a Google account and connect with CSTA. Directions can be found on the CS Principles Summit website. CSTA on Google+: https://plus.google.com/u/0/104945032068887469146/posts
  • The day of the conference, use your laptop, tablet or smartphone to access polls, handouts, slides, and the interactive video stream. It all starts on the CS Principles Summit website.
  • Afterward, stay in touch with CSTA through social media on Facebook, Twitter, LinkedIn, and Google+. Review recordings of the sessions on the CS Principles Summit website, too!

I cannot stress enough how excited I am to be a part of this new dimension of conference participation. If you have any questions about getting set up that aren't covered on the Summit website, contact me, Daniel Moix, CSTA's Virtual Offerings Volunteer Coordinator for the Computer Science Principles Summit via email at daniel.moix@csta-hq.org.​

Wednesday, June 04, 2014

A Matter of Focus

My students are wrapping up the year with final projects. For the most part these are great learning experiences. Sometimes though students get hung up on the wrong things. For example, students can spend a lot of time getting things to look just right when what they should be focusing on is coding functionality.

One of my students is working on a game using XNA that involves collisions and showing explosions. He’s not happy with how the explosion graphic looks. Now if this were a game that was going into production that would be a serious concern. But for a final project where the code is the thing how the images look should be a later concern. Getting that message though can be difficult though. Human nature makes us want that which is visible look its best.

This is a common problem with projects that involved a graphical user interface. In other projects during the year I sometimes get around this by providing the GUI and asking students just to write the code. If they want to make the GUI “pretty” later I will let them but they have to have the code first.

There are also times when the focus is on “the right thing” but gets too narrow. For example I had a student ask me if there was a way in code to ask if something was NOT GREATER THAN OR EQUAL TO. I suggested LESS THAN. He was so focused on looking at the problem one way that he missed what should have been obvious.

That is a common problem even for the most experienced software developer though. That is why pairs programming (which I tried some this year) is becoming more popular. Even explaining a problem to someone else often makes the solution appear.

I keep thinking of an old saying “Though shalt not perspire minor matters.” I’ve heard it “don’t sweat the small stuff” as well. Sometimes it is hard to remember what is the small stuff and what is the big stuff. My student with the image issue had it wrong though only for that project in that context.

But in programming sometimes the small stuff really matter. For example is “=” to comparison operator or is “==” the comparison operator? Different languages do it differently. A small character but a big deal if you get it wrong. Often times one can focus and focus on an if statement and totally miss the missing character. That is where a second set of eyes can help.

For beginners the problem of a sort of tunnel vision can be devastating as they focus on the wrong thing or so hard that they miss things by being too close. A teachers job is often to help them refocus a bit. That is just one reason I think we’ll always need teachers for most students.

Tuesday, June 03, 2014

That Doesn’t Mean What You Think It Does

I’ve had some fun with a line from the movie The Princess Bride and meme generator below inspired by working with students.

not what you think

Programming is so non intuitive for many students. An equals sign doesn’t mean what they are used to and then we confuse it in some languages by having “=” and “==” mean different things. And that is just the start of the problem.

I find myself asking students “what do you think that code does?” in order to understand exactly what problem they are trying to solve.

Monday, June 02, 2014

Interesting Links 2 June 2014

I used to tell people that I liked to blog because I knew that classroom teachers didn’t have a lot of time to look for things. As the school year comes to a close and I am a classroom teacher I am finding the truth of that. My blog production is diminished the last few weeks. And I was sick over the weekend so even this post is late. So lets start with some fun.

Embedded image permalink

People have started a crowd funding effort to raise money to make Born With Curiosity: The Grace Hopper Documentary Hard to understand why there hasn’t been a movie made about her life yet.

KIDS REACT TO OLD COMPUTERS The kids are shown an Apple ][ some of us remember when that was the state of the art in school computers. The video is worth showing students so they can see how far we have come.

Founder of http://Code.org and Harvey Mudd President: Don't Call It "STEM" (Video)

Google Computer Science for High School programs from Google regarding CS in high schools.

Two more though provoking posts from Mark Guzdial

Do programmers still need a computer science degree to land a great job? Good question. What do you think?

Recently on the CSTA blog - Moving From "CS for a Few" to "CS for All" to "CS For Each"

Finishing up with a quote to think about:

    "The most effective debugging tool is still careful thought, coupled with judiciously placed print statements." -- Brian W. Kernighan

Wednesday, May 28, 2014

Looking Back To Move Forward

I think most teachers do some introspection at the end of the school year about how things went for them. They think about what worked and what didn’t work so that they can make the next year better than the previous years. That is the difference between n years of experience and one year of experience n times. Certainly I’m doing a lot of thinking. Inspired by some teachers I really respect who have blogged their thoughts (Garth Flint and Laura Blankenship) I’ve decided to put some of my thoughts to print.

I taught two computing courses and Yearbook this year. I did everything possible wrong with Yearbook (I’d never worked with a Yearbook before) but thanks to some incredible students we did turn out what I think is a great yearbook. Thankfully someone else gets that course next year. That is better for everyone.

My first computing course is a course we call Explorations in Computer Science. It is loosely patterned after the Exploring Computer Science course but adopted for a single semester and some particular needs of our school. two of us taught a total of ten sections of this course which is mostly taken by freshmen (ninth graders). In it we cover a range of topics including the Office Suite, some HTML, computing concepts (some of it using materials from CS Unplugged), and some basic programming.

Overall it went well. The other teacher and I shared and co-developed a lot of the materials. We were able to tune some of it from semester one to semester two which was helpful. Students seem to like the course. One of the things we are still working on it making the material on the Office Suite more about problem solving and less about mechanics. We’ve made progress with the first semester being better than our previous course that was all mechanics and the second semester improving on the first. It’s still an area were we think we can make progress.

The programming has been a mixed bag. I think the other teacher may have done a better job than I did because he was more organized. Organization is my goal over the summer. I also want to revisit the projects we used to make them more interesting. Most of all I want to get more interactive with students.

Honors Programming was my second computing course. Because of how we changed our curriculum around I had more of a range of previous experience this year than I have had in the past and will (I hope) next year. Some students had a previous semester course (or more) in programming while some had no prior experience in code at all. That made things interesting.

I’m pleased with the projects I used for the most part. Students liked them and did some good work. Here again I want to get more conversation going with students as I explain things. Lectures just don’t work no matter how interesting one tries to make them. I taught without a textbook this year. Sometimes that works but sometimes it doesn’t.

I think what I want to do over the summer is write up some supporting materials for both courses. Less than a textbook but more than a PowerPoint deck. Maybe I’ll call them tip sheets or sometime like that. I envision one to three pages with pictures and sample code as well as  textual information. I’d like to cover both the required material and some supplemental things. It’s a thought. We’ll see how far it goes.

Organization will be a must do for the summer. I think I have a good handle on timing or at least how long things should take. If I document it all as a clear plan I hope to keep things moving more smoothly. Hopefully that will help students as well as me.

So what are you doing to prepare for next year? Or can’t you think about it before August?

Monday, May 26, 2014

Interesting Links 26 May 2014

There are still a couple of weeks of school for me and my students. Well the seniors are done with their finals on Friday but underclassmen  have some time after that. I should be thinking about summer vacation but I find myself thinking a lot about how to do things better next year. Interestingly enough most of this weeks links seem to largely have a forward looking slant to them. Take a look.

Constructionism for Adults by Mark Guzdial @guzdial I talked to Mark about this last week and told him he gave me something to think about on my flight home. And it did. Take a read.

Save the date! CS Ed Week is Dec 8-14, 2014 Will it be centered around an Hour of Code again or something completely different? Really not too early to put it on your and your school’s calendar.

Super Computer Science: AP Computer Science Teacher Training Rebecca Dovi links to resources AP CS teachers will really find useful.

A true CS course for next year by Garth Flint. Like me Garth is already thinking about how to do things next year. I find his introspection valuable to my thinking and I think you will as well.

Code matters – a thought provoking post by Bertrand Meyer. One great line that may get you to read is this one:

It is a pretty general rule that people arguing that language does not matter are partisans of bad languages.

Wednesday, May 21, 2014

Is the Tech Community Working Fine Without Women?

Mark Guzdial linked to a post about Technology’s Man Problem yesterday and highlighted one piece of it. It really got me thinking.

a commenter calling himself White_N_Nerdy wrote on Reddit, “I’m honestly trying to understand why anyone says that females are ‘needed’ in the tech industry.” He continued: “The tech community works fine without females, just like any other mostly male industry. Feminists probably just want women making more money.”

The bolded part above is my highlight and what I was thinking was the though that “The tech community works fine without females.” And my first thought was, well, no, actually the tech community is not working fine without females. Of course for me a well working community, by definition, incudes a diverse population including women. But even if you don’t include women as a requirement for a community “working fine” are we really ok? I think not.

Our software is too often non intuitive. We have too many bugs. We have too little in the way of creative ideas. We have great (for some definition of great) software for geeks and nerds and so-so software for the general population. And that is why we need more diversity.

Too much of the development community has no understanding of the term work/life balance. That’s not healthy. Too many people work too hard and not smart leading to software that is less than ideal and people who burn out.

In my first job out of college I worked for a software house that had a large percentage of women developers. They had lives. They had husbands, children and other interests beyond work. This lead them to work efficiently and smoothly. From them I learned that is not how many hours you work but how you work during those hours. We need more of that attitude.

We’ve seen all sorts of changes in other areas of work as women enter them in larger numbers. As more women entered the types of jobs involving business travel we saw wheels added to luggage. That’s not something men would have thought of on their own. Most men were too macho to say “I’m not carrying that because it is heavy.” Now we all accept wheels as being as normal as handles on luggage. What sort of changes would having more women in computing make? We’ll never know until it happens. But I suspect that men will find a lot of things how up that in hindsight they will wonder how they lived without.

Studies show that mixed gender teams tend to be more productive and more creative. With increased demands for software that solves more and more problems both productivity and creativity are desperately needed. We are not “working fine without women.” We are shortchanging ourselves and the community when we push women away. Men have to stop doing that.

Tuesday, May 20, 2014

Coding as Game Play

I’ve been thinking a lot about the idea of how we teach computer science or perhaps just programming to younger students. Some of it brought on my the online debate at the New York Times recently. Some of it by the comments Mark Guzdial posted from Elliot Soloway on his blog. And some of it just from ongoing thoughts I have been having for a while. What do we want elementary school students to learn and why do we want them to learn it?

We don’t know that introducing computing earlier in the curriculum will lead to more students studying it in high school and beyond. We want to believe it but there evidence is fuzzy at best. Clearly we are not expecting elementary and middle school students to develop professional code. Do we? So what do we want to get out of teaching computing earlier?

Tools like Kodu, Scratch and Alice (and other block programming platforms) are very much like video games. In fact they are virtually indistinguishable from video games. Is this good or bad? How do we even define good or bad in this context? Aside from learning to code or learning computer science concepts (assuming those things are happening) is there any other benefit from this early introduction to coding?

Perhaps there is. A recent article in the Seattle  Times (Code-writing clicks as kids get creative) talked about the creative aspect of all of this “video game coding.” I do believe that coding is very much a creative pursuit. That creative aspect is a large part of what got and kept me interested in it over the years. I do think that students benefit from more creative opportunities so these coding games are good for that. At least I think the are.

While I do want young students to learn  the things that we at least (want to think) teaching computing does such as critical thinking and problem solving I’m not sure we have evidence that this works. But perhaps the creative aspect of computing is useful for some students. And games can be creative.

Related links:

Monday, May 19, 2014

Interesting Links 19 May 2014

The only blog post I wrote was the Monday morning links post. I feel like I’m slacking off but I sure was overloaded with other things to do last week. Some of the links below deserve posts of their own and if I have time this week I’ll have more to say about several of them. But just in case go read them now. Smile

Reading, Writing, Arithmetic, and Lately, Coding: But mostly a video game (Elliot Soloway) Interesting take on the pros and mostly cons of learning to code via what amount to video games from Mark @guzdial

What It Takes to be a Successful High School Computer Science Teacher  Another post by Mark @guzdial this time at blog@CACM A must read in my opinion.

Stretch your programming skills: 4 languages you should learn this year An interesting list. Not sure I agree completely but it is something to think about.

Microsoft Research Launches Code Hunt Game to Teach Programming More gameification of learning to program.

Annual self review of my Python course  Garth Flint takes a close look at his Python course.

Microsoft is running free Youthspark summer camps, starting July 2 at various local Microsoft stores. Read about them at Helping Students Learn Through the Summer

Embedded image permalink

Not everyone will be a programmer Good stuff from Laura Blankenship who by the way recently won an election to the CSTA Board.

The winners of the Grand C++ Error Explosion Competition I’m not so sure that winning a competition like this is a good thing. On the other hand I am amazed at how easily one simple error can generate huge numbers of errors.

NY Times debate - Computing in the Classroom -  What do you think? Mark Guzdial takes exception to some statements on both sides of the issue at his Computing Education blog.

The rise of coding in K-12.... http://nyti.ms/1jyhQoH Reading, Writing, Arithmetic, and Lately, Coding | NY Times

Almost 6000 views in it's first few weeks - have you read Microsoft UK’s Computer Science in the National Curriculum ebook (regarding the Curriculum in England) yet?  

Embedded image permalink

Monday, May 12, 2014

Interesting Links 12 May 2014

Looking at my Facebook timeline it looks like schools in the southern US are starting to wrap up for the year already. My school has about another month or so. After that it is ISTE for me! Looking forward to seeing a lot off friends there and learning a lot. A lot of learning online for me now though. As usual I share some interesting links below.

Have you wondered What a systematic approach to computer science education looks like in England? I have and fortunately the National curriculum in England: computing programmes of study is online. Queen’s English spelling and all. Closely related  Mr. O’Callaghan who teaches in the UK is collecting a bunch of GCSE Computing revision materials

My friend Ken Royal @kenroyal discusses why educators should visit the exhibit halls at conferences.  I happen to agree with him. There is a lot of value in the exhibit halls of educational technology conferences.

How serious is Microsoft about their international student competition the Imagine Cup? Satya Nadella. Microsoft’s new CEO, will be a judge at the Imagine Cup World Finals as part of an  impressive slate of judges.

An interesting list - 7 reasons Computer Science is ideal for women.

Lee Kolbert writes in Flip, Blend, and Mix with New Free Office Plugin about an interesting new addition to PowerPoint. More interactivity. Needs the latest Office or Office 365 which I have yet to get so I haven’t tried it myself yet.

Game development takes a lot more than coding. A new study shows that diversity and communication skills are key.

This is interesting. Did you see the ciphered tweet from the NSA? Apparently they do this from time to time to help recruit people who are interested in code breaking.  Code Cracked: Mysterious NSA Tweet Is Decrypted in Seconds

Thursday, May 08, 2014

Can You Explain the Binary Clock?

Some years ago my wife bought me a binary clock. I have it sitting on my desk at school facing the students. It drives the students crazy.

What is it?
A clock.
How is that a clock?

We do cover binary numbers in class. And while they seem to get the idea and do well on worksheets and quizzes somehow making the application to the visual artifact of the clock is hard for them. The other day I had several students ask for a more detailed explanation of how it works. I thought that sounded like a reasonable request and started thinking about some visual aides to make it go better. Being a programmer a program seemed like the best solution. Maybe PowerPoint or similar would work for some people but not me. So during my lunch break (and some of a prep period) I created a binary clock program. It looks like this:

Binary Clock

There are two columns each for hours, minutes and seconds. I added position indicators on the right hand side to show the ones, twos, fours, and eights digits. Along the bottom I show the value of each column. This makes it easy to read that this image was taken at 1:17 and 9 seconds. The totals and position indicators are scaffolding and there are buttons to make each set disappear. I also have a stop clock button so we can deal with a static time or set a specific time for discussion purposes.

The class discussion went pretty well. By the end of the session I had students calling out the time displayed, even without the scaffolding, as I changed the static display. I plan on using this as an integral part of binary discussion in classes next school year. I am hoping that making it all more visual and perhaps letting students manipulate virtual clocks themselves will help then internalize the concepts better.

I rushed the code a bit so it’s not really sharable now. I am thinking about assigning something like this as a project for my advanced programming students. I’m looking forward to what they come up with for solutions.

BTW my primary list of Resources For Teaching Binary Numbers can be found at this link.

Wednesday, May 07, 2014

The Case For Lifelong CS Education

I stumbled upon a really good talk by Simon Peyton Jones from Microsoft Research about teaching computer science early on today. In it he talks about some things I have been thinking a lot about myself lately. That being computer science education throughout the school years. Not just a single or pair of courses late in high school but a series of including CS starting in the primary grades. Even if you don't read the rest of my post I recommend the video.

I’m teaching high school computer science and for most of my freshmen this is their first experience with computer science. Oh sure they have been using computers for many years but that is hardly the same thing. They have been exposed at some level to just about every other science and math subject for years. We don’t wait until high school to teach addition for example. That would be silly. Is it less silly to wait until high school to start computing science training? I think not.

By high school students are using math to help them learn other subjects like physics and even social studies. Can you talk about financial systems without an understanding of math? Not hardly! And they have been using reading and writing for over a decade as tools to learning other things. But not computing and that is a shame. I feel like I get my students just to the point of being able to do interesting things and then we are out of time. Frustrating!

I had my Explorations in Computer Science students write a temperature conversion program recently. It was a great way to talk about the difference between concepts like integers and real numbers, order of operations, and even number bases (1/10 is an infinitely repeating fraction in Binary). This is all material that they learned (sort of) in middle school if not earlier. Why could they not learn it with computing? Personally my understanding of those important concepts was enhanced when done with programming. I suspect it would be for many others as well. That is the tip of the iceberg for me. I really started to understand algebra when I got into programming. Programming allowed me to do so much more is less time that it became a wonderful tool for me.

What I would like to see my high school students is using computing  and programming as a tool for more than just learning how to program. I want to see them getting creative. I want them to solve problems but not my problems. I want them to solve their own problems. In my university statistics courses I kept getting bogged down in the arithmetic so I wrote programs to do the math for me. As my professor pointed out to my peers who complained about that I had to really understand the formulas and their application to write the programs.

I’ve had students go on to write programs to help them with their other school work. It is a wonderful thing to see. I would like to see it become the norm rather than the exception. For that to happen we have to start earlier. And it has to be a regular and, dare I say it, required, part of the curriculum.

People say that making computer science required will make it boring or that it will cause students to be turned off from it. And that is always possible. A poor teacher can make the most interesting topic dull, boring, and horrible. That is a very pessimistic and self-defeating attitude though. The other problem is a serious shortage of people qualified to teach CS. What that means is we need to train and prepare more teachers not that we should just give up on the idea of doing what needs to be done.

Monday, May 05, 2014

Big Change At The CSTA

Earlier this evening Chris Stephenson, the founding executive director of the Computer Science Teachers Association, announced her resignation from the CSTA. (Looking Back, Looking Ahead, and Thank You for the Honor of Serving CSTA) Her blog post includes a long list of the CSTA’s accomplishments over the first ten years of its existence. Make no mistake, Chris has been a driving force behind this organization from the beginning. Actually from before the beginning.

I’ve known Chris for many years now as we meet long before there was a CSTA. She has long been a powerful voice (and actor) for computer science education. I know that she will continue being that powerful voice as she takes on new challenges at that California advertising company (Google I think it is called) where she starts next month.

While Chris provides a look back at the history of CSTA I think it is important to look forward as well. The last year or two have seen an explosion of growth in interest in Computer Science and in the acceptance of computer science as counting for graduation credits. Code.Org has been a huge part of that and gets a lot of attention (well deserved) but it is important to remember they are building on a lot of the work that CSTA and its members have been doing for the past ten years. So where do we go from here?

CSTA is no less important now than it was ten years ago. I would argue that because of the progress we have made it is more important than ever. CSTA is a powerful voice of the computer science educator. It is the organization that supports local groups of teachers in CSTA chapters for example. It is the organization that provides the single most influential CS education professional development opportunity (the CSTA Annual Conference). It is the organization that has done the leg work behind many of the statistics that other organizations and groups use to make the case for CS education. And it is done the research into standards for courses and certification for CS educators.

As the demand for CS educators grows, and it surely will, CSTA will be the group that supports these teachers in the long run. Fortunately CSTA has a strong and active membership, a capable volunteer leadership in the Board (yes I’m on the board but there are some great people on it as well), a very good staff, and many people willing to step in and work for common goals.

Thanks Chris! You’re leaving CSTA in good shape.

Interesting Links 5 May 2014

Well back to school for me today. I didn’t plan on much Internet time last week (school break) but it turned out that the weather was horrible and I stayed indoors more than I’d planned. So I do have one or two links to share. First of some last minute aid for students taking the APCS exam this week.

Rebecca Dovi has some flashcards and some advice to students taking the APCS exam on her blog at AP Computer Science Exam Review Worksheet you can follow Rebecca on twitter via @superCompSci. I do.

Speaking of Twitter – a lot of education discussion happens on Twitter. So much so that Twitter itself has taken notice. Twitter Exec Reports that Educators Dominate the Twitter sphere

Did you see my post last week about HSFCTF: A Cybersecurity Competition For High School Students  Looks interesting. I’ll be talking about it to my students today.

Friday, May 02, 2014

BASIC, Computing, and What Have We Lost?

Yesterday, May 1, 2014 was the fiftieth anniversary of the BASIC programming language. Articles about this are abundant on the Internet and rightly so. I link to a couple of them at the bottom of this post for people who don’t want to Bing (or Google) for them. BASIC which is short for Beginner's All-purpose Symbolic Instruction Code was how many people learned to code “in the old days.” Many will tell you that its time is long past but even if you agree with that (and I don’t) it is good to look back on its importance.

In the early days of the personal computer, before Ken Olsen made his oft maligned comment that "There is no reason anyone would want a computer in their home." there was in fact no reason to have a computer in the home. If you wanted to use a computer at home you really had to create your own programs for it. The Internet was in its infancy and very few had access to it outside of work or school. And even at work or school you were limited in who had access. Tools like word processing or spreadsheets were still to come. Why would you have a computer at home without software?

The first personal computers, which came before the IBM PC we now think of when we say PC, did come with one important piece of software – BASIC. The Commodore PET, the TRS-80, the early Apple computers and many more which have faded into history came with BASIC. The people who bought computers were forced to learn to program.  

I learned BASIC in college on a mini-computer (built by Ken Olsen’s Digital Equipment Corporation). I had learned FORTRAN IV on an IBM mini using punch cards in a course the previous school year. The DEC computer was new and it didn’t have FORTRAN but it did have this BASIC stuff. And there was documentation laying around. The transition from FORTRAN to BASIC (in this case a version called BASIC-PLUS) was pretty easy. having access to a time shared computer which several of us could use at once was hugely empowering. It was in a sense of taste of personal computing as it was to develop.

At there time there were all sorts of books and magazines that provided listings of simple BASIC programs. Remember no Internet! Moving code from one computer to another meant transporting physical media usually magnetic tapes from one location to another. So we typed in these sample programs. We learned from them. We added to them. We made them our own. It was heady times.

Those of us who could program got attention. We did “cool things” like make the computer print out large banners or ASCII art. Some of us thrived on it.

As the personal computers became less expensive – I paid $600 for my first personally owned computer – a TRS-80 – more hobbyists bought them and learned to program. Almost always with BASIC in some form or another. Most were self taught because there were few if any classes available.

Today computers are ubiquitous and we have come quite dependent on them. While 50 or even 30 years ago we could get by with a relatively few number of programmers today we need more than we have. Few computers come with development software anymore though. And we don’t have enough people learning on their own. Oh we have some and they are doing some cool stuff. I read this morning about a student who is helping pay his families mortgage with income from some iPhone apps he wrote. He’s self-taught. Search engines and the Internet are here now. (See How a Florida kid's "stupid app” saved his family’s home and landed him on the main stage at Facebook for more on that story.)

So if computers don’t come with BASIC anymore (or any other development tool) how do the do it yourself learners get started? Fortunately there are a lot of tools free for the download. Microsoft has Small Basic which is a lot more like the early version of BASIC in terms of simplicity and ease of use/learning than most others. And they also make an express edition of Visual Basic (and other languages) available for free. Their DreamSpark program (which I used to get paid to promote but haven’t for a while) is a great opportunity for students to get professional grade software for free.

And of course Java and multiple development environments for that are also free. I confess to not being a fan of Java as a first language though and that is why I think various version of BASIC still have a place today. The syntax of Java and other C-family of languages really seems to get in the way of learning the more important concepts of programming in my experience.

Python has a lot of the good qualities of BASIC being a dynamic language and you can find it for free as well. But I don’t see an edge that it has over Visual Basic for example. (Your mileage may vary of course) Either does let you “play around” a lot though and that is important. BTW for very young students, pre-teens for example, you may also want to start Programming With Blocks of which there are many free and low cost options. But eventually you want to learn a real language.

What about the future? The future of computing and of BASIC? BASIC has come a long way in 50 years. Arguably it has grown with the times better than its early contemporaries FORTRAN and COBOL. While neither of them were designed with beginners in mind today’s versions of BASIC still have many of the attributes that made BASIC such a powerful learning tool in the beginning. A language like Visual Basic lets one do pretty much anything a language like Java lets you do. In fact it lets you do many things easier, with less frustration and with more ease of making programs that look and feel real.

I teach my student in our school’s first computer science course how to program using Visual Basic. It works well. And while, largely in a bow to the need for them to learn Java in APCS, we use C# in the first full semester programming courses I’d be quite comfortable teaching them a lot more VB. In fact some of my advanced students continue to use Visual Basic for their own personal projects.

BASIC was designed to be friendly and forgiving and those are still strengths we need in programming today. So here's to you BASIC and I hope to be programming with you as look as I write code.