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.