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