Thursday, May 16, 2013

Why Web Apps?

I have a bias in favor of applications that run locally and take full advantage of the hardware and OS of the base platform. These days it seems like everything is moving to the web in some form or other. Scratch 2.0 runs completely in the web browser for example. Twitter is shutting down the TweetDeck AIR app that I love so much in favor of some sort of web based version. I’ve been using some web based email (unhappily) for a while now. It seems as though everything is moving there.

I can understand some of the logic. The web (or more specifically web browsers) are a common baseline that can be programmed against. Write it once and it runs on any system with a compatible web browser. A developer gets the benefit of ubiquity without having to write and maintain multiple versions. It’s cheaper.

Web apps also have the benefit that the developer can make fixes once in  one place and all of the users have the benefit of changes, improvements, and additional features transparently. No update routines. No version mismatches. It just seems like a dream.

The elephant in the middle of the room is of course that you have to have Internet connectivity to use these tools. Sometimes that has to be very fast Internet as well. While Internet access is becoming more wide spread it is not yet ubiquitous. Where it is available it is often not cheap. Or fast. Internet on airplanes, where it exists, is expensive and slow. On trains (Amtrak for example) it can also be spotty. Cars? I haven’t tried it while moving as I am usually driving but given how often I find poor cell coverage for calls I don’t know that I want to bet on it there either.

School Internet connections can get pretty slow as well. We’ve had some issues lately with slow wi-fi and Internet in my school.

Even if you assume wi-fi that is fast and affordable applications can not always easily take advantage of device functionality. For example with the TouchDevelop app I can handle a “shake” event. Not so on my iPad (thought that is “coming”). It takes more work to make all the hardware available to a web app. For security reasons giving a web app too much access to hardware and local storage is not always a good idea either.

It still seems like a locally run application that is targeted to the hardware (or at least a specific operating system) is going to give users the opportunity for better performance, more functionality and less dependence on external factors like Internet connections. Maybe I’m a Luddite or maybe just a cranky middle aged man but I really want real applications over web apps.

Tuesday, May 14, 2013

2013 CSTA Board Election Results Announced

CSTA Election results are announced  Congratulations on reelection to Patrice Gans, Dave Reed and new member Stephanie Hoeppner. Oh and I have been elected too.  Pretty excited about that.

The Computer Science Teachers Association is the professional organization for K-12 computer science educators. If you are a computer science educator you should belong to the CSTA. And also think about attending the 2013 CSTA Annual Conference this summer.

CSTAbadge

Monday, May 13, 2013

Computer (and Math) Humor

Two Kinds

I like this one in part because it is subtle. There are two basic standards for opening the curly brace in C-type languages.  Not everyone will pick up on it. Is it important which way you do it? Actually no. It may not even be important if you stick to it. But some people really do insist that their way is the one true way and that everything else is wrong.

Of course there is also the group of people who think that curly braces and semi colons are crutches for compiler developers and that real programming languages don't need them.

lol_programming

I’ve seen this time and again. OK perhaps even felt the same way. When nothing seems to be working programming can be frustrating and even something to hate. But lots of us persist. And when it works it just feels so good.

pi

OK it’s math not computer science. But is sure is fun.

Interesting Links 13 May 2013

Just about a month left of this school year for me. In between trying to keep things going with grading and teaching I’m starting to think about what I want to learn over the summer to use in class next year. Some of  the links below are about some of these things. A lot going on in CS education these days.

Ray Chambers who is one of the very innovative teachers I have run into over the past few years has posted his Scheme Of Work for Touch Develop. I've downloaded most of it myself to look at how I might use Touch Develop in my own classes.

For more  on Touch Develop take a look at Getting in touch with TouchDevelop (Think 'From What to Wow")  from Channel 9 @ch9

Four ways to kick start zombie coders is another great post by a UK CS education blogger. Zombie coders are those students who just don’t know where to begin. Some great ideas here. BTW I follow her @CodeBoom on Twitter.

Peter Beens in Canada  (@pbeens) pointed his Twitter followers to this great article written by Mitchel Resnick of MIT and Scratch fame.  Learn To Code, Code To Learn.

Speaking of Scratch, there is a new upgrade to Scratch 2.0! Check out the updated website: http://scratch.mit.edu/

Computer Science Concepts in Scratch - Free textbook and more. Set up for Scratch 1.0 but still useful now. Updates are planned as well. 

Chris Lehmann: Students as Active Agents is a new interview by Ken Royal. Chris is one of the outstanding high school principals I know.

More genius from @drenton72: NoNeed4Green - The Green Screen without a Green Screen is a Kinect application with a lot of good educational possibilities.

Sorry, College Grads, I Probably Won't Hire You. Not without programming knowledge. Some controversy about this one. See this contrary view at Sorry, Digital Ad Exec, I Probably Don’t Want To Work For You

From Google to Botball, check out what NCWIT Aspirations in Computing recipients have done lately.
Kinect Magic Cursor version 1.7 with Gesture support /by @drenton72 http://feedly.com/k/1739cJ8 Good read

Expeditous - Time Lapse is a video by one of my wife’s students. I’d like to see it get some views to encourage them for the future.

Ingenious app for the deaf!  Help @Bookwormlexa reach her goal.

See how this Texas CS classroom inspires students and teaches skills for in-demand careers.

CS Resources Abound But There’s Still a Crisis in CS Education an insightful look at what is going on in CS education by Joe Kmoch.

Friday, May 10, 2013

How Many Fart Apps Do We Need

The satirical publication TheOnion released a fart application on GitHub. One can add it to their web page and people who visit it will hear fart sounds when they scroll on it. Sophomoric? Obviously. But as an advertising gimmick it seems to be working as there is apparently a lot of Internet chatter about it already. No doubt some more main stream media will take it up as well. But is this really the sort of app we want students to emulate?

Fart apps, in my mind, is short hand for a whole category of apps that are simple to make, usually amusing (to some people), occasionally (somewhat) useful but basically not significant. We tend to create a lot of these sorts projects for students. We want them to create someone that demonstrates mastery (or at least some level of ability) with specific concepts. These days we’re also looking to have students create their projects to run on phones, tablets, and other hand held devices. A simple app that shows an RSS feed, random pictures from the Internet, or plays some sort of sound (i.e.. farts) fits into the process easily.

But ultimately how many such apps do we really need? Not many. The problem though is creating applications that are both legitimately useful and yet within the abilities of students. Can we do it with scaffolding? Or does that cause its own problems? (Beware the Scaffold That Becomes a Crutch) Can we do it with group projects? Or does that create a different complexity for beginning students.

I’m just tired of “fart apps.” I want students to create meaningful apps. A big part of my summer planning is going to be about what sorts of projects students do. I want students to know that they can and should create meaningful work.

Tuesday, May 07, 2013

Visualization–can you see it in your head?

I had dinner tonight with several computer science professors. The topic of conversation turned to the question of “can everyone learn to program?” One professor is pretty sure the answer is no. He believes that some people just can’t think that way. I fear that he may be right. But we moved on to how can we make it so that more people CAN learn it? Even if we can’t teach it to everyone how to we get more people to understand programming or more broadly computer science concepts. We decided that one problem at least is that it is hard to visualize some concepts.

Recursion for one is hard to some people to picture. I know it took me quite a while. To this day my mental picture of it is cloudy but at least usable. Many concepts that computer scientists picture in their heads almost as if second nature are opaque to other people. The tools we have to create images that will help others picture these concepts too often seem inadequate. They are too hard to use or too limited in scope. After all most of the concepts we want to teach are not static. Images that don’t move do little justice to the concepts.

Honestly I wouldn’t know where to begin with an animated image of recursion. My own image is too cloudy. I suspect that others have a much better image but converting that to a useful tool is non trivial.

Other concepts lend themselves to visualization more easily. Linked lists, trees, stacks, and arrays for example. We can sort of do them using tools like PowerPoint but it sure does take a lot of work. We can draw them on the board. But as anyone who has demonstrated something like adding and removing nodes in a linked list can tell you this can get messy very quickly. I’ve always wanted to try using pieces of something (paper?) and strings (you know the fiber ones) to show links and lists but the logistics of that takes someone more handy than I tend to me.

Sometimes there are physical objects we can use. I can’t be the only one who bought a giant Pez dispenser to demonstrate stacks right? Or labeled boxes all in a row for arrays. Ideally though what I would love was something that students could actually manipulate themselves to see things work. Something they could ask themselves “I wonder what happens if I do this?” and then try it out.

We have more and more new tools for programming and implementing things. Where are the tools that help beginners picture how it works though? Are there things out there I am missing? What do you use to help students visualize the concepts?

Monday, May 06, 2013

Interesting Links 6 May 2013

About five weeks left to my school year. I’m behind in grading. I’m behind in lesson planning. This means less time on the Internet for the next week or so. Somehow I managed to collect a bunch of interesting links last week though.
Makey Makey is cool stuff that lets you use all sorts of items (bananas?) as input devices. I‘ve seen a demo and it looks cool. This post reminds me I need to look closer at it.  via @drenton72
Programming for kids is a good list of programming environments for kids which includes a few I need to look into.  (via David Wees @davidwees)
Most everything you need to know about CS education and jobs . Includes a lot of statistics and links to information you can use.
Education Week: N.Y.C.-IBM Partnership Focuses on Students' Tech. Skills  Things keep happening in New York City with regards to computer science education. I have to wonder were it will all lead.
The Role of HyperCard in Today's World interesting post on the blog@CACM from Communications of the ACM. Remember HyperCard? It may be coming back!
Gwinnett pilot hopes to draw students to computer programming highlighting a new program in Georgia.
Is that a mouse on your face? Or your face acting as a mouse? Both? FaceMouse is some new Kinect related software from Channel 9. See also KinectMouse.
The May, 2013 edition of the SIGCT newsletter is now available for downloading http://sigct.iste.wikispaces.net/file/view/SIGCT_Newsletter-May2013.pdf/428064912/SIGCT_Newsletter-May2013.pdf  (PDF)
Why isn’t there a glut of good software engineers? There are good paying jobs out there with good clean change the world work so why are more people not entering computer science fields. This posts asks that question in detail.
Are you going to the CSTA Annual Conference this summer?  Microsoft opens the doors to the NERD Center for CSTA 13 attendees. Don't miss this tour! NERD stands for New England Research and Development. I used to spend a good bit of time there and there is lots of interesting things going on there. And the views of Boston are amazing.
Super Computer Science: Why you Need a Popcorn Maker in your classroom Fun idea from Rebecca Dovi . Not sure I can get away with it but it’s a thought.
Madlib Madness is about a fun project that Mike Zamansky uses with his programming students.
Benefits of Teaching Kids To Code That No One Is Talking About
“Teaching kids to code is not about programming itself. It’s about promoting creativity, curiosity, teaching persistence, and giving young people a sense of how they can create technology.”

Wednesday, May 01, 2013

Why Search Engines Can’t Replace Teachers (yet?)

My programming students are working on some projects these days. I have them working of teams of two to four. As they work I am listening to their conversations and occasionally stepping in to help with a problem they can’t figure out on their own. Yes they can and do use the Internet. And they are learning a lot that way. But sometimes searching the Internet doesn’t work.

Why doesn’t the Internet search work? A couple of reasons account for most of the problem. The primary reason is that students often don’t know who to ask the right questions. They often lack the vocabulary for asking a search engine for what they want. Other times they are asking for the wrong thing because they just don’t know enough to know what it is they need. Honestly, a lot of high school students are just bad as using search engines in general which is a whole other problem.

Another issue is that they don’t understand the solutions the search returns. Sometimes this is because the person who wrote what they found assumes knowledge that the student hasn’t acquired yet. Sometimes this is vocabulary and sometimes this included advanced concepts. Not all students are ready for the way a professional would do it but need something, maybe less powerful, that will just get the job done simply.

Sometimes the students are in too much of a hurry. Students today wanted to insert a line feed in a string and kept entering “/n” when what was needed was “\n” not realizing that not all “slash” marks are the same. Noticing little details like that sometimes escapes even the best of us but is a particular problem for beginners. Teachers are good at helping find these nits that can otherwise cause a lot of wasted time.

As a teacher I often need to ask “what problem are you trying to solve?” Starting from what the student thinks is the solution often wastes more time than first trying to understand the problem. Search engines don’t have that sort of dialogue with searchers. Maybe they will at some point but they are not there yet.

I also need to help them understand the answers they find. Or perhaps I should say help them apply solutions to problems similar to theirs to their actual problem. Helping them move from general to specific (or specific to specific but slightly different)  solutions is an area where teachers add value that search engines are not yet ready to do.

There is a difference between knowing something (a fact, a concept, a programming syntax) and being able to apply it in a specific situation to solve a specific problem. Teachers can help a lot here. And yes I know that there are self taught “wizards” in many fields. Even before the Internet there were autodidacts who taught themselves from books. The Internet lets people teach themselves a lot. But that sort of learning is not for everyone. In fact I doubt it works for more than a relatively small number of people. Teachers are education for the rest of us.