Tuesday, May 21, 2013

Girls in IT–Infographic and Report from NCWIT

I found an info graphic from NCWIT on Girls in IT to be pretty interesting. I can’t get it to format right in this blog format but you can see it here. I’ve got one snippet of it below.

image

  It is shocking to me how under represented women are in the Advanced Placement Computer Science program and in undergraduate CS programs.

There is a lot more in the graphic and the accompanying report - Girls in IT: The Facts. I’m also reading the report which “aims to bring together this latest research so that readers can gain a clearer and more coherent picture of 1) the current state of affairs for girls in computing, 2) the key barriers to increasing girls’ participation in these fields, and 3) promising practices for addressing these barriers.”

Monday, May 20, 2013

Would You Hire Your Graduates?

I was reading a blog post by a university professor on the subject of adjunct faculty (Tenure-track’s untouchables) when I can across the statement that “the university has a disinclination to hire their own graduates.” This seemed weird to me. I teach at a high school that has a good number of their own alumni on the faculty. On a recent visit my my university alma mater I noted that there were a good number of graduates who had returned to teach there as well. I always saw this as a good thing.

I struggled to think of why a university would have this sort of disinclination and the only thing I could think of was a fear of becoming “in breed” in some way. The flip side of that is that it can also contribute to maintaining a mission, culture and environment. Maybe if you don’t like your mission, culture or environment you’d want to go outside for faculty but in general I’d think a mix of “old” and “new” would be closer to ideal.

The cynic in me wanted to ask “are the students you are turning out not good enough to teach at your school?” What does not wanting to hire your own graduates say about your program? After a bit of this sort of non-productive thinking I refocused on myself and my own teaching. If I were starting a new company or hiring for an existing company would I want to hire my former students? Am I preparing my students for the world they are entering after graduation?

Teaching high school I think mostly about if I am preparing them to succeed in university. I’m frankly less interested in what school they attend next as I am that they are prepared for what they find when there get there. I am also concerned about their ability to perform in industry jobs. Oh I know, I know. I hear it all the time No one gets a job in computer science right out of high school.

Bah, not true at all. Most do not of course but I have had a good number of students get great summer internships and even year round jobs while still in high school over the years. They have done well enough that the companies that hired them have returned with the question “any more like so and so?” It does happen.

So would I hire my graduates? Not all of them. At least not out of high school. But some of them? In a heart beat. I can think of several I would want to hire me if I were leaving the classroom again. While I wouldn’t think of taking full credit (or in some cases any credit other than not screwing things up) I like to think I have helped prepare a few students pretty well.

The goal should be to give students the knowledge and skills they need at a level were you would feel comfortable either hiring them yourself or at least giving them a strong recommendation for someone else to hire them. It’s not about passing time or giving them the minimum to get by but giving them, at least the opportunity to acquire, the knowledge to succeed either in industry or academia. If you would not recommend a student for an appropriate  job/university you should be able to answer the question “Did they not work hard enough or did you not give them enough opportunity to learn the right things?”

Yes, I want to turn out graduates I would like to hire.

Interesting Links 20 May 2013

In case you missed the announcement last week the CSTA Election results are announced. Thank you very much to those of you who voted for me. I’ve really looking forward to helping out on this board. The school year is nearing an end. The school I teach at had their senior prom over the weekend. I hope to see pictures today. I’m also starting to think about how I am teaching next year. We’re creating two new courses to replace some existing but dated courses. Some of the links below will play into my thinking.

I’ve been working a lot more with TouchDevelop lately. I really want to use it with students. I’ve posted one of the bits of code I’m playing with as a web app at https://www.touchdevelop.com/users/AlfredTwo/spinWP/   I’ve also been experimenting with TouchDevelop Presenter. Presenter lets me display want I do on my phone on a wi-fi connected computer. I understand it currently only works with the Windows Phone 7 app. It was developed before the web based version of TouchDevelop was created. I’m hoping to upgrade to a Windows Phone 8 soon so I will probably use the web version for demos with students. 

Microsoft Touch Develop is looking for adventurous Windows Phone 8 mobile app creators for a beta of the WP 8 app of TouchDevelop. Yep, this is one more reason I want to upgrade my phone.

Ray Chambers in the UK has developed a Touch Develop - Scheme Of Work for teaching. I’m taking a good look at it for my own use.

Doug Peterson wrote a very thoughtful response to one of my posts at Life in a Browser. It was in response to my little rant Why Web Apps? 

Washington State passed a bill that gives students graduation credit for AP Computer Science. This is a great thing and now 10 states allow this sort of credit. Still a long way to go though. But there continues to be discussion of this sort of thing in the media.

Dear Learn to Code Startup is a great post with words of advice for all those companies what think they are going to “solve” the problem of not enough computer science students written by Laura Blankenship (@lblanken)

Do you remember the Incredible Machine? It was a great game all about problem solving/ Well it looks like The Incredible Machine Is Back, Spiritually at least. Read about it in Wired.

Why teachers do what we do is a recent post by Doug Berman  @dougbergmanUSA that you should read.

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?