Friday, September 28, 2012

Find The Bug

The big problem I have with using professional quality sample code in class is that it is too professional. By that what I mean is that it is too complete and often too complicated for beginners to use. Oh it is great as an example to read and study for sure. On the other hand the complexity can be overwhelming to the point where beginners find it difficult to use or to extrapolate from the specific example to more general usage. This is not a problem for experienced programmers (usually) but can make it difficult to use with students who are just starting out.
For those reasons a lot of sample code for beginners is over simplified. This can mean problems as well. One problem is that if beginners see enough code without error handling they tend not to include it in their own projects.
What I like for sample code is very simple code that is easy to understand but that lends itself to easy expansion and improvement. I want it to be the start for experimentation. Recently I found such a sample on Code Project.
Create Pie Chart Using Graphics in C# .NET - hari19113
This article shows how to create a Pie chart using the Graphics class in C#.
It’s a simple C# project and even though it is not commented it should be easy for most beginners to understand. In fact I think it is easy to expand and the routines in it could be fairly easily moved to other projects. But it is far from perfect. There are some coding practices that are less than ideal. Specifically a) some variables that should not have as large a scope as they do and b) a bug that is not unrelated to that variable scope.
Here is what happens. If you add a number of numbers to the sample program and press the View button you get a nice little pie chart like this:
PieChart1
Then you realize that you want a fourth number in the chart so you add it and press View again. You will get something like this:
PieChart2
Something is clearly wrong here. What could it be? I gave you a hint earlier. The example code can be obtained on Code Project or from my own website at www.acthompson.net/PieChart.zip  I found two slightly different ways to fix this bug. One way involved adding a line while the other involved moving a line. I tend to prefer the second but I’ll leave it to the reader to find what works best for them. [Insert evil laugh here]
BTW I used Visual C# Express 2010 which is a free download. Students of Java should have little trouble trying this “exercise.”

Thursday, September 27, 2012

Creativity In Computer Science

I was reading a blog post titled Creating creative portfolios by Deepa Muralidhar the other day that really got me thinking of this whole notion of creativity in computer science. I think it is a problem in a lot of subjects these days but it can be particularly troublesome in disciplines that call from some real creativity like art and Computer Science. OK maybe not everyone puts those two together but the same day I read Deepa’s post I cam across this quite:

“Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire world, and all there ever will be to know and understand.” Albert Einstein

We are still in the very early stages of computer science in my opinion. We can’t afford not to see computer science as requiring creativity and imagination. Computer science needs to embrace the entire world. We need students to go beyond the rubric and get creative. We need students to see game as being more than just “games using missiles and guns or sports based games.” as Deepa’s students seemed to see as the only projects for creation.

We need that so that they exercise their creative side; that they go beyond the obvious that everyone else is doing. We need projects that force students to go beyond their knowledge and discover new knowledge. Or at least new ways of using old knowledge.

This can be hard for students for a number of reasons. One is that too often in schools we teach the creativity out of students by asking a class of 30 students to hand in 30 identical papers/projects/texts. or we assign recipes and expect students to follow then exactly for full credit. We make them color inside the lines! There are no lines in real art but we forget that.

So what can we do when students get to high school and want to stay inside the lines? We have to encourage them to stretch themselves. We have to say “here is the box. do what you want as long as you stay outside the box.” We have to ask them what problems do they have and want to solve. We have to find ways to help them to be creativity and then when they are creative we have to reward them for it. As with almost anything one gets that behavior that is rewarded.

And you know what? Having creative students doing creative things and forcing their learning outside the textbook is a lot more fun for teachers too!

Wednesday, September 26, 2012

What About Small Data?

This is an other post along the lines of We Are Making Things Too Hard more than the more obvious Thinking About Databases. And there may perhaps be a bit of old man “get off of my yard” nonsense in it as well. Back in the day (I warned you) we had only very simple says of dealing with data. In fact on many systems all we had were “flat files” that could be addressed either sequentially or, if we were lucky, randomly. One had to more or less know where the data was. Sorting files so that one could do a binary search though the whole data set was not uncommon.
In my first job out of university I worked for a company that used a system with two files for each set of data. One file had the data in unsorted order while the second file had a key structure that had to be frequently reorganized as efficacy would fall apart rapidly as more data was added to the files. Oh is was a kludge. I don’t really want to go back to those days.
Later I worked with operating systems that had fairly simple but reliable ISAM (Indexed Sequential Access Method) file systems. Initially they only supported a single key for a file but they rapidly grew more sophisticated to support multiple keys, duplicate keys, transaction support such as journaling. These systems were then developed to support simple relational databases that while not true databases the way we think of today but faked it pretty well. Oh and they were easy to use.
Today it seems that most of our options involve real databases. Tools like Microsoft SQL Server and MySQL are full blown relational database management systems. MUCH power! With power comes complexity though. At times and for some applications I feel like my choice is between a chainsaw and a dull knife when what I really want is a scroll saw.
What I want is to be able to declare a record type with various data and a key or two, have the system create or open the associated file and let me place or get data with a simple write or read statement. That’s it. No high priced DBA to set up a complex database after long and careful study. No complex and powerful SQL statements to build. No daemon or server application to run and communicate with. Just simple straight forward indexed access to a simple file. The sort of thing that I could do 30 years ago using Record Management Services on various Digital Equipment operating systems.
It’s out there right? Someone please tell me its out there and where to find it. Thanks.

Ruth Hartsook’s CS Teaching Resources

Ruth Hartsook posted links to some interactive web based teaching resources on the Advanced Placement Computer Science discussion forums that I think are just wonderful. These can be used by a teacher in class or by students looking for review or even getting a jump start using a flipped classroom model. She has four five of them covering some very key concepts:
  1. For Loops - watch a for loop run
  2. Boolean Logic - learn and practice
  3. All about methods - learn and practice
  4. Recursion - learn and practice
  5. Encapsulation - review the concept
You don’t have to be an AP CS teacher to use these. And even though they are written for Java I can see them easily being used with other languages.

[Note: updated with new URLs and a fifth item on 23 August 2013 ]

Tuesday, September 25, 2012

Can We Afford To Wait For a CS Sputnik Moment

I was having a talk with a teacher online recently and he reminded me of the Sputnik scare that started a lot of renewed interest in science and math in education. All of a sudden politicians and business people were concerned that American students were losing ground in those fields. This started a rash of interest that eventually lead to landing people on the moon. Along the way many wonderful and unexpected scientific discoveries were developed and I mean a lot more than just Tang! There was a defining moment that sparked a call to action. Where is that moment for computer science?
I first publically asked that question in a blog post several years ago called Finding the Titanic which I have copied below. I haven’t found that moment or that discovery. I wonder if such a thing can be manufactured or is it something that just has to happen? But if we wait for something to happen will it happen too late? That is if it is not already too late. Other nations are waking up to the essential nature of computer science. Estonia is teaching computer science to all students in all grades! Who knows where that will lead them in the long run!
How do we get this conversation out beyond the choir who is already interested in CS education? That is the multi-billion dollar question!
The closing keynote of TCEA 2009 was given by Dr. Robert Ballard of oceanographic explorer fame. It was a talk that was both interesting and inspiring. One thing he said was particularly thought provoking to me. I think it is highly relevant to the current and worsening recruitment problems we are having in computer science – especially with non-traditional CS students. Dr. Ballard explained that for many years he was making important discoveries in science. Uncovering secrets of the earth and of life that caused people to throw away the old textbooks. Revolutionary discoveries. And yet all his graduate students were from over seas. Children had never heard of him. There was no excitement in the field outside of the field. Then he found the Titanic!
Within weeks he’d received 16,000 letters from young people with two questions on their mind – "What do I have to do to do what you do for a living?" and "The next time you go, can I go with you?" From relative obscurity he and his field had grabbed the imagination of young people in a way that was unprecedented. These days all of his graduate students are Americans and many young people grow up wanting to be like him and make the sorts of discoveries that he and his teams are making.
It makes me wonder – what is the computer science equivalent of finding the Titanic? What is that one thing that will grab the imagination and inspire a generation to enter the field?
It may not even be central to the field. In fact I suspect that it will not be. Perhaps it is some tour de force that proves a controversial concept or theory. After all finding the Titanic was a great demonstration of equipment that was really designed to do other more centrally scientific things. I don’t know what it will be but I am pretty sure that we need to find it. Slow and steady is losing us ground. So … any ideas?

Monday, September 24, 2012

Interesting Links 24 September 2012

Happy Monday. Well try to start the day with a big smile until you actually feel like smiling. It works. Trust me on that. Last week a lot of things crossed my screen but I think I have the best of them to share with you today. First a couple of important reminders though.

First for the young geeky women you know the applications are open for the NCWIT Award for Aspirations in Computing. This program recognizes women who are interested in technology. I hear all sorts of inspiring stories about the winners and their potential. So please look into it.

Also if you are a K-12 computer science professional development (PD) provider or know of one, it is of vital importance that your efforts are recognized in this national landscape study of computer science PD. By completing the survey (link below) you will ensure that your PD opportunity will count. PD Survey Link: https://uchicagocenter.us2.qualtrics.com/SE/?SID=SV_3ehqq2eWXOhlzvf

A couple of good links from my old manager at Microsoft Bob Familiar ‏@bobfamiliar signing Retro Looking Games for Windows 8 and long list of tools for creating games for Windows 8 at Windows 8 Game Development For The Win.

I really like this post What Does “Big Data” Mean?  at the blog@CACM | Communications of the ACM. I can’t help but see it as a great, more in depth follow on to my recent post Thinking About Databases.

Some people are just born to teach. I love this story of a Harvard grad who leaves Microsoft to teach at Issaquah High School.

I continue to be impressed with the way Kinect is finding uses with special needs students. See how teacher Shannon Putman uses Kinect to empower students with autism. Can you see more applications like this?

My friend Vicki Davis (aka Cool Cat Teacher) was highlighted in the Boundless Educator Spotlight: Vicki Davis

Also last week I discovered the  Crypto Museum website which is an online museum on cryptography. You should see the things they have for sale too! If you or students you know are interested in cryptography you really should check it out.

Over on the  Coding 4 Fun web site they now have Kinect Magic Cursor version 1.2, now with source code.

Kinect Magic Cursor allows you to use Kinect connected to a Windows 7 pc to control the windows mouse pointer and perform left clicks.

My good friend Doug Peterson had a very thought provoking post called How do you foster technological innovation? I’ll have more to say on this general topic later in the week So keep coming by.

Friday, September 21, 2012

What period is it? Let me check my phone

The Center for Advanced Technology is a great program at Lakewood Senior High School in Florida. Students in this program learn and use technology in interesting ways. These students help develop applications that help the school function better. Earlier this week Lou Zulli, the award winning teacher who teaches Applied Computer Technologies and Emergent Computer Technologies at CAT, let me know about his student’s latest project. Smart Phone apps that help students keep track of their school assignments, time in a way that is relevant to students (i.e.. what period is it) and more. Available for use by students and parents it is tied into the school’s SharePoint system.

CATNIP Mobile is an application for the students enrolled at the Center for Advanced Technologies Program at Lakewood High School and their parents. This app allows the user to see the current bell schedule and how many minutes are left in class. It also displays any assignments that teachers have added to their CATNIP2013 MySite calendars. Just tap on an assignment to view its details. These assignments are filtered by teacher.

I know that a lot of schools forbid phones of any sort in school but these apps make the phones a serious resource for students. Let’s face it a list of assignments on a student’s smart phone are a lot less likely to be lost than those written on a notebook buried in the bottom of a book bag.

If you want to get an idea what these applications are like you can see some previews of the various versions.

The links are:

WP7:   http://www.windowsphone.com/en-us/store/app/catnip-mobile/55723bfc-94b3-4247-b52e-35a58ed1ef25

iOS:    http://itunes.apple.com/us/app/catnip-mobile/id560540569?mt=8

Android:   https://play.google.com/store/apps/details?id=com.cat.catnip.mobile

More about CAT

The Center for Advanced Technologies is a public school magnet program housed at Lakewood Senior High School, located in the southernmost part of Pinellas County, on the west coast of Florida. Curricular offerings within the Center include mathematics, science, computer education, multimedia applications and research; other coursework is completed within Lakewood Senior High School. The Center opened its doors in August, 1990 to a class of eighty-five freshmen; each year an additional class of approximately one hundred fifty students is added. The enrollment for the 2009-2010 school year is approximately four-hundred fifty, grades nine through twelve, with 100% of the students planning to attend college. Funding for the program came from a variety of sources: Pinellas County Public Schools, local corporations and partnerships. Last year, Newsweek magazine ranked the CAT Program 24th in the nation!

Thursday, September 20, 2012

Thinking About Databases

Some years ago I had students write a program that involved managing a checkbook and balancing it. I was so proud of it. Later a student told be she liked the programs that were “relevant.” I replied “like the checkbook program?” She shook her head and said “no, like tic tac toe.” I was devastated but I think I hid it well. I realized that relevant to her was not the same as relevant to me. She didn’t have a checkbook or write checks. This was meaningless to her. I might have been better off with some sort of credit case program but I’m not sure that would have worked either. Fortunately today there are database applications that our students use and that are relevant to them. Instant message programs for one and Facebook for another.
These are big databases. Huge! Most people don’t even think about how they work behind the scenes. For a computer science student though they make great thought exercises. Take your average instant message software.
Obviously there is a database that tracks who ones contacts are. What happens when you log into the software. Probably some thing like this:
  1. Verifies username and password. Is the date encrypted? How is it passes safely?
  2. Changes your status to online.
  3. Checks the database for a list of your contacts and looks at the status of each of their records.
  4. Builds your initial display of contacts
Simple enough. What happens when someone has a status change? Several possibilities exist. One is that perhaps the software merely changes the status on the user’s record. Then perhaps each user’s program periodically checks they status of all their contacts and changes the display. Another is that besides setting the status the software also checks the status of all of the users contacts, finds which ones are online and notifies each user.
These options (and there are probably others that people can think of) have pros and cons. What are they? How is performance different with each option? Which way scales best (works best for larger numbers of contacts?) There is a lot to discuss. I don’t know the answers but I’ll bet a discussion among several people would be instructive. Can you write a simulation? How would that work and how would you use it to test your theories?
What about Facebook? How might that database work? There you also have the fact that each item also has information about who can see it. How is friends of friends handled differently from just friends or from public? If you have 500 friends and each of them have 500 friends who many people can see an item? What about duplicates? Do duplicated play into things and if so how?
At the university level most computer science majors will take formal course work in databases. One, two or more courses. Most often we don’t have time for that in high school. In fact many times there isn’t time for more than a discussion of databases. It’s a reality. But I think that students can learn a lot from discussions of databases around data applications that they know and love. The technical issues are fascinating (well they are to me) but I also think that students can get value from discussion the ethical and social impact of database applications. Topics like encryption of data (passwords if nothing else) and how all this data is used are natural discussion points.
Privacy and the use of data for marketing purposes on Facebook is a huge topic among those people concerned with data privacy. Our students even aware of the issue? I think that a well educated CS student should at least be exposed to the issues. What do you think?

Wednesday, September 19, 2012

We Are Making Things Too Hard

I once had a conversation with Bill Gates. Yes, in person, face to face. And while I will not go into the whole meeting he said a couple of things that I continue to think about on a regular basis. One of them is that he suggested that development tools have gotten more and more powerful but at the same time that has made it harder and harder for students and other beginners to use them. I think that anyone teaching programming using tools like Visual Studio and Eclipse and the various markup languages that seem to be growing in power and complexity daily would agree with this. This has spurred the growth on simpler tools such as Alice, Kodu, Scratch and IDEs for beginners like Small Basic, BlueJ and Greenfoot. These are great learning tools but I wonder if they keep beginners, and by that I mean hobby programmers as well as students, away for the main stream of programming. Away from the really cool stuff.

Today when you think about programming apps for phones you have three options: iPhone using Objective-C, Android using Java and Eclipse with add-ons (Or App Inventor about which I will say more later) or Windows Phone using Visual Studio (C#, C++ or Visual Basic). Your user interface is likely to be drawn using some sort of markup language that is probably going to have its own learning curve. In my humble opinion it shouldn’t be this way!

Many years ago I worked with an operating system  called TRAX. It’s so obscure not that I can’t even find it in Wikipedia. Why bring it up now? Because back 30 years ago this operating system used a mark up language for describing a user interface that was much like the ones we are using today. Where is the progress? Oh sure today we have some drag and drop capability and I love getting started that way using Visual Studio for Windows Phone and Windows 8 apps. But a lot of modifications seem to have to be made in the code. Sure I can do it. I have almost 40 years of experience writing code and messing around in mark-up languages.

As long as I have been programming which is about 40 years now people have been talking about programming getting easier and easier to the point where one day everyone would be able to program. It seems as though we went so far with that (remember Visual Basic 6.0 and earlier?) and then started backtracking. Now Visual Basic .NET was a huge step forward in power but we lost something in ease of use. Control arrays which I thought was one of the most powerful features in VB 6.0 were still doable in VB .NET but it took a lot more work that had to be coded by hand.

Moving from Windows Forms in earlier versions of Visual Studio to Silverlight and HTML5 today again seems like a bigger step backwards in ease of development than it is step forward in power. I’m not sure I understand the motivation behind it either. Who is pushing for this sort of thing?

Now a word or two about App Inventor for Android. I did a throw down event where we demonstrated development of apps for iPhone, Windows Phone (my part) and Android. I have no doubt that the App Inventor demo “won” for many definitions of won. I like to think I was second – Objective-C is weird looking to me. But with App Inventor one has a domain specific (phone in this case) version of a drag and drop block programming language (it builds on work at MIT that went into Scratch) that makes it easy to do very powerful things very easily. The demo made ME want to start developing for Android! Why can’t we have more of that sort of thing?

Why can’t we have domain specific blocks for more types of apps and applications? Why can’t we have more work in developing block languages that make it easy to avoid syntax and create more WYSIWYG user interfaces? Oh sure the professional programmers will sneer at it and stick with their powerful tools that make them feel like the elite – or is that l33t? But why not open development to the rest of the world?

Tuesday, September 18, 2012

Decorate For Inspiration

Last week Mike Zamansky (blog at C'est la Z Twitter @Zamansky), who is the head computer science teacher at Stuyvesant High School in New York City, tweeted about asking his alumni to send in SWAG to decorate his classroom He asked for logo goodies from companies the alums work at, started, or have a major stake in. And they delivered. He’s used these goodies to decorate his classroom What a great idea.

I know a lot of schools like to do things like display banners and the like from colleges and universities that their graduates attend. Guidance departments are prime locations for this sort of display. I wonder how many students actually notice such things though. And university is still fairly short term. What I like about this idea is that the display is in a classroom that is directly related to the careers that are highlighted.  There is a more closer connection between the students in the room and the alumni who are sending the stuff back for the display.

I think this idea has applicability for a lot of classrooms. Showing students a tangible sign of success in the field they are studying in the classroom can be very inspiring. What do you think? How do you decorate your classroom or lab to inspire students?

Monday, September 17, 2012

NCWIT Award for Aspirations in Computing 2012

asperations

One of the ways that one can help young women with an interest in computing and related fields is to provide recognition for the world they have already been doing. One of the great programs in this regard is the NCWIT Award for Aspirations in Computing. Along with the NCWIT awards listed below, a number of universities offer scholarships to winners and runners up of the Award for Aspirations in Computing. Applications open officially next month but you will want to look into the awards and application process now so you can encourage young women to apply.

The NCWIT Award for Aspirations in Computing honors young women at the high-school level for their computing-related achievements and interests. Awardees are selected for their computing and IT aptitude, leadership ability, academic history, and plans for post-secondary education. The NCWIT Award for Aspirations in Computing offers both a national and local "affiliate" competitions to generate support and visibility for women's participation in communities nationwide.

Applications are accepted from September 15-October 31.  Award recipients are notified in early December and award events take place around the country December through May. To apply, girls must register online.  Click here to begin registration. You can register anytime and will be notified when applications open.

The Award for Aspirations in Computing is open to all high school girls residing in the US and you may re-apply each year.  You may only receive the National award once.

National Award-winners receive:

  • $500 in cash
  • a laptop computer, provided by Bank of America
  • a trip to attend the Bank of America Technology Showcase and Awards Ceremony in Charlotte, North Carolina
  • an engraved crystal award for both the student and the student's school

The Application period is now open!

    Interesting Links 17 September 2012

    From my point of view the first week of this blog at this location has good well. I realize that I’ve posted a number of longish posts about some of my own thoughts and ideas that were not technical. I hope that has been as good for readers to read as it has been for me to write. It felt good to express myself this way.

    Just one favor. If you have a blog, a web site or even just post links to a book marking site I hope you’ll post a link to this blog (http://alfredtwo.blogspot.com)  for me. It would really help make it show up on search engine results and also let more people know that “I’ve moved.”

    But don’t worry I’ve got a lot of links and short tidbits to share with you today.

    All Hands on Deck! Scaling K-12 Computer Science Education is a very important post on the Communications of the ACM by Cameron Wilson and Baker Franke. It includes a call for computer science teachers to take part in a survey.

    If you are a K-12 computer science professional development (PD) provider or know of one, it is of vital importance that your efforts are recognized in this national landscape study of computer science PD. By completing the survey (link below) you will ensure that your PD opportunity will count.

    PD Survey Link: https://uchicagocenter.us2.qualtrics.com/SE/?SID=SV_3ehqq2eWXOhlzvf

    I’ve been noticing a lot of wise notions in Twitter lately. I’d like to start with on from  @kdwashburn that resonated with me.

    "I believe every great—and by great I mean not just instructive, but inspiring—teacher is him or herself a determined learner."

    This week I discovered the Computer Science Student Network  the web at http://www.cs2n.org and on Twitter @CS2Network The mission of this site from Carnegie Mellon is to engage more students in Computer Science and STEM.

    http://TryComputing.org Is a web site from IEEE with resources to try to help students to consider a career in computing. Some good stuff there and well worth a look.

    My friend  Andrew Parsons wrote about FREE Windows Store Access for Students. This is a great opportunity for students though honestly is is a lot easier for college students. BTW follow Andy on twitter @MrAndyPuppy

    Don't forget to sign your US K-12 school up for the FREE Kinect Trial Program at http://msft.it/6018ToiA

    17-Year-Old Girl Invents Cellphone Heart Test For Patients In Developing Country. This is yet another reminder that technology that is available to students can be used by students to make a difference in the world.

     @TCEA tweeted a link to this infographic on protecting your online reputation that looks great for high school students and adults! I can see this hanging on classroom walls.

    Are you aware of these Microsoft Office Add-ins for Scientists I can see them being useful for teachers and students of science.

    CSTA website with CS events for kids is a site worth checking from time to time. Right now you can learn about:

    Great new post from Mark Guzdial @guzdial: A Question that Everyone should Ask their CS Professors: Why do we have to learn this?

    Video of the Week from Microsoft Research @MSFTResearch On how MSR continues to push boundaries to automate intelligence in your daily life.

    College student? Apply today for Google's Engineering Practicum Internship Program. Deadline to apply is October 15!

    Friday, September 14, 2012

    Think Outside The Textbook

    I was talking to a teacher, well chatting online via Facebook actually, and I described what he does as “thinking outside the textbook.” Speaking as someone who has written several textbooks I will easily admit that textbooks can be wonderful tools. They can make a teacher’s job a lot easier. They supply information, explanations, review questions and more. These days they often come with PowerPoint decks, test banks, and more. At the same time they can be limiting as well. It is easy to fall into the trap of teaching as if what is in the textbook are the only things that students need to know.

    Few good teachers limit themselves to the textbooks that  students are assigned though. Most teachers I know have a collection of textbooks that they use to help them widen their curriculum. They borrow information, projects, quiz questions and more. This lets them make their courses richer and more interesting.

    Computer science changes rapidly though. Textbooks change very slowly. Most districts can only buy new textbooks every five to seven years. This is hardly often enough to keep up with the latest developments in computer science.  Programming languages and integrated development environments (IDEs) seem to change annually if not more frequently. Sure you can stick with old versions and texts if you want. I know of teachers still using products that haven’t been supported let along sold in years and years. This works. Sort of.

    And then there are the latest developments in application types: Games, Kinect and other new user interfaces, phone app development (I talked about this at To App or Not To App) and soon Windows 8 apps. By the time a textbook comes out that covers it there are new versions that may have breaking changes. And yet students want to learn about these things. Students often have little patience with the line “it may not be the bleeding edge but the concepts are for ever.” It’s a true statement but students always want to be current.

    So what do you do? Well the easy way out is to stick with the textbooks. It’s the safe way to go. Going beyond the textbooks is scary. It’s hard work. It’s not required. So why bother and how to you do it?

    First off it is exciting for students to be on the leading edge. When students are excited and motivated to learn they work harder, longer and learn more.  This is just the sort of thing that attracts more students to computer science programs. Those are some good whys.  But it is still hard.

    There are resources available on the Internet to try the new things.  Lots of online documentation, sample code and even help forums. Few teachers have the time to learn this stuff before teaching it though. So what is a teacher to do? Ask their students to help them learn it!

    One of the things I heard recently at an education forum was that teachers should model lifelong learning. By setting an example of being someone who is always learning new things teachers help students adopt the same attitude. For a lot of people it’s a bit scary to “give up control” by admitting that they don’t know something. It takes some courage to admit ignorance in front of teachers. Generally though students respond well to the idea of learning along side their teacher. Making the learning of a new technology a cooperative experience benefits students and teachers alike. In the long run everyone learns more.

    There is more to learn than what is in the textbooks. Thinking beyond them and learning to learn with students opens new doors to learning. And best of all it helps students see lifelong learning modeled for them.

    Thursday, September 13, 2012

    To App Or Not To App

    I was at the industry advisory board meeting for one of the career/vocational schools I am involved with earlier this week and the topic of apps came up. Apps for phone and tablets are a big deal in industry these days. The advent of Windows 8 tablets and the continued growth in sales for smart phones means they will become more important rather than less. So on one hand it feels like teaching app development is something that high schools should be doing. Especially for people who are in industry. But what about the educational value?

    Universities have an easier time resisting the lure of “industry wants” than community colleges do. So true a “college prep” high school can ignore industry trends more easily than career technical schools. But ultimately it boils down to what concepts are you needing to teach and what are you preparing students for after they leave your school? Concepts are always more important than short term technical skills. Well for a lot of us they are. The questions for educators becomes “can we teach the concepts as well with apps as with traditional programs?” and “are there things we can teach better with apps?” This is were the discussion went in our meeting this week. I’m not sure we settled on a common agreement though.

    In some ways the issue also relates to the notions of attraction and distraction. I know educators who want to stick with DOS style applications so that students don’t get distracted by the “fun” of creating a graphical user interface. Other teachers find that students want to create “real” looking programs and are unimpressed with DOS applications. Creating apps, if any thing, compounds this problem.

    Students today love their phones. They love sharing apps. IF they could create and share their own apps with their friends that could be a great attraction. On the other hand there is some distraction involved. There is the whole GUI design piece of course. Then there is the distraction of using other features of phones – any one want to write an app that lets you shake the phone to roll your virtual device? It is easy to see students spending so much time figuring out how to respond to a shake that they ignore what the project is really supposed to teach them.

    I think these trade-offs are manageable though. They are with GUI and event driven programming and they can be with smart phone apps. And let’s not forget the attraction of using their own phones!

    But that is not enough. Being as good as is not enough to move most people. Rightly so. Especially when we all know hat some administrator is going to toss a fit about students using phones in class.

    I think there is extra value in app programming. I think that the constraints  placed by the smaller form factor makes students think about their user interface in valuable ways. And makes them appreciate what goes into the professional apps they think should be free. The amount and types of storage forces them to think about efficiency of storage and look into cloud storage (and processing) which are keys to the future of computing.  I also think that the sooner students start developing using new user interfaces (touch, voice, motion, etc.) the sooner we get really creative ways to use our devices.

    The question in my mind is not should students write apps but for what devices and using what tools. I’ll have some thoughts on that (and maybe a surprise of two) in the  very near future. In the mean time what do you think? Are apps a positive learning tool or just the latest thing to distract students from the core concepts they need to learn?

    Wednesday, September 12, 2012

    What Have I Gotten Myself Into?

    One of the things I hear from university computer science faculty on a regular basis is that they have trouble retaining students. What happens is that students sign up to be computer science majors but after a course or two they give up. Computer science isn’t what they expected it to be. Professors hear things like “I didn’t know there would be programming involved.” Seriously! Or it is harder than they expected. Some students expect it to be all fun and games. But basically students didn’t understand what they were signing up for. And why would they if they never had any real computer science in school before university?

    This is sad and it is a real waste. It is a waste of time and energy on the professor’s part. It is a real waste of time and energy and money on a student’s part. Students who have had computer science in high school are much more likely to finish a computer science major than students without HS CS in their background. It’s not just that they know more computer science. In fact often students, even AP CS students, aren’t ready to skip courses in college. Oh some may skip a course or two but many find it better to still start with the first course for majors. The big difference is that they know what they are getting into.

    This is not universal by any means. Some people do take their first computer course in college and fall in love with the subject. I did. And some who took a CS course in HS find out that the university level is not for them. This happens in all majors from time to time. But the odds are improved the more a student knows what they have gotten themselves into.

    Now some people say “computer science is hard and that scares some away.” If hard work were enough to scare people away how do we wind up with so many students in pre-med that many American students have to go to medical school outside the US? A motivated student is not afraid of hard work but challenged by it.

    If we had more high school CS programs a) more students would get a chance to be exposed to the subject in a somewhat less stressful environment at a lower cost. And b) more students would get to university knowing what they are getting into. We might not have more students going into the major (though we might) but we’d have a lot better chance of retaining those students. Now that would be a good thing.

    Tuesday, September 11, 2012

    Are You The Best Part Of A Student’s Day/

    Yesterday is used a quote from an educator friend of mine that “I may be the best thing that happens in my students and my staff's lives that day. I can handle the other stuff. They come first.” I’ve been thinking about that a lot since Paul first tweeted it. Most computer science courses are electives which gives those teachers an edge. Their students selected to be there. But honestly I‘ve seen students turned off by that first computer science course as well. Done wrong any course can be painful. I’m of the opinion that learning should be fun. Not that a teacher’s job is to be an entertainer of course. They shouldn’t be torturers either!

    Obviously you never want to sacrifice rigor (what ever that means) but you can create an environment in a classroom where students want to be there. I start with the smile. Yes I know the adage that “teachers shouldn't smile until after Christmas” but that is ridiculous. How can a student be happy to be in your class or even your presence if they don’t sense that you are happy to be in their presence?

    I used to occasionally arrive at school in the morning grumpy. I am so not a morning person. This is an attitude that dooms one to failure so I worked to get out of it. What I liked to do was walk through the building saying “hi” to as many students as possible with as big a smile as possible. I do think some of the students thought (may still think) I was crazy. A lot of them started smiling back though. Simples are reinforcing. If someone smiles at you it is hard not to smile back. And when people smile back at you it lifts your spirits. Think of it as a positive feedback loop.

    And yes I smiled in class too. I cared about my students. I still do and it gives me great joy to hear from my former students. I worked for a head of school who talk his teachers that they should all look for students they could relate to, that they could be more than a teacher to. He believed, and I agree, that every student in every school needs at least one teacher who they believe honestly cares for them.

    A computer teacher runs into a lot of students who don’t fit the typical school model. Oh sure there are some jocks in computer science classes and some really good looking people in them as well. You don’t have to be a geek or a nerd to take computer science. Those students who are a bit geeky and who don’t quite fit in who are in computer science often look for a mentor/friend/person they can relate to in the computer science teacher.

    Now sometimes the CS teacher teaches other things and maybe sees themselves as a math teacher roped into teaching a section of CS. They may already have their math geeks. And that is fine. But I hope they also keep an eye out for the CS geeks who aren’t math geeks. I for one was a computer geek without being a math geek. The two are most decidedly not equivalent!

    The other thing that can make a course and a teacher the best part of a student’s day is freedom. Not license to do what ever they want. Make no mistake about it students want, need and even respect boundaries that are expressed clearly and maintained fairly. But some freedom to learn the things that interest them beyond the limits of the course. The freedom to make their projects truly their own. The freedom to go beyond what the teacher knows themselves.

    In a class where the teacher respects their students students will usually respect the teacher in return. Mutual respect and a spirit of “let’s do this together” can support a lot of individual initiative and learning. A project that a student feels ownership of is a project that a student is more likely to want to work on.

    I can remember students asking me “Mr. T do I really have to leave and go to my next class?” Of course they knew the answer was “Yes!” but you know that was an expression of the class being a highlight of their day. And why shouldn’t it be?

    Are you or your class the best part of some student’s day? Not for every student – that’s an unattainable goal – but for at least one student? How does that happen for you?

    Monday, September 10, 2012

    Yes I’m Still Excited about Computer Science

    It’s the start of a new school year and a new chapter in my life. I thought I would report this from about a year ago.

    The short version is that 38 years after the life changing experience that writing my first computer program was I am more excited about computer science than I was then. And that is saying something. This is my first experience trying to do a video cast but since a lot of students don’t read this seemed like a good time and a good topic to try it out. I hope you like it.

    Some links that I talk about for reference:

    Interesting Links 10 September 2012

    Happy Monday! I actually want to start this post with something my friend Paul R Wood @paulrwood said on Twitter last week. Paul is a technology director at a private high school in Texas and a great person who really cares about his work.

    I may be the best thing that happens in my students and my staff's lives that day. I can handle the other stuff. They come first

    Something to remember. Are you the best thing that happens to your students? For a student interested in computer science you could easily be that.

    Doug Peterson @dougpete pointed me to this cool article. Hacker Uses A Kinect To Help His Mom Email After A Stroke Now this is out of the box thinking used for good. This is the sort of thing that hacking used to mean and should/could again.

    Vicki Davis@coolcatteacher Talked about the Natural User Interface - which Kinect is a part of – in her lesson on Evolution of the Interface Do you talk about various ways of interacting with the computer with your students?

    "What do you think you can do with Computer Science?" Best answer ever

    Come Celebrate International Dot Day with Us - September 15, 2012  via Angela Maiers @angelamaiers

    Patrick Godwin @ximplosionx shows how to deploy a cloud app in 6 days; yes only 6 days! Patrick is a college student who really knows his stuff.

    Seems like everyone I know sent me a link to Why Estonia Has Started Teaching Its First-Graders To Code on Forbes. Interesting idea. A wonder how it will play out in the long run.

    The Computer Science Teachers Association announced that the "We are the Faces of Computing" Poster Contest Launches! You may have students interested in helping improve the image of computing. Pass this along.

    From Microsoft Research@MSFTResearch Microsoft Research's Kodu gets kids coding with new Mars Rover game.

    New book out from Rob Miles  @robmiles: Back to School with Kinect Start Here!

    Programming for girls – Post by @lblanken Are special programs for girls working? How do we know?

    Sunday, September 09, 2012

    Welcome to My New Blog Home

    This blog has actually existed for a while but had not been my real blog home. Recent changes (Leaving Microsoft) mean that I can no longer blog about computer science education and related issues at my previous blog. That’s unfortunate although I am happy that the content there will remain. Some of you are visiting this transparently as you have been subscribed to my blog via feedburner and some RSS reader. Glad you came by and I hope you’ll stay. Others have arrived though a pointer someone shared. If any of you have pointers to my blog that point to the old location I hope you will update them to point to http://alfredtwo.blogspot.com I’d appreciate the help.

    Other than location what’s changed? Not a lot really. I still love Microsoft products but I’ll probably be writing more about products and tools from other places now. My wife says I have to stop thinking of “iPad” as a “dirty word” and I’m working on it. Smile

    I’m hoping that my friends and anyone else interested in computer science education will continue to forward links and references for me to share. I look around a lot but miss things without other to help. My new email address is act2 @ ACThompson.net Just pull out the spaces.

    I’m going to continue my Monday morning round up of links and references. Most of those were and will continue to come from (and be tweeted about by me) on Twitter. You can follow my on Twitter @AlfredTwo and if are a Twitter user I hope you will.

    Monday, September 03, 2012

    Don’t Panic

    The other day I was looking through the analytics for this blog to see what sort of searches people were doing that let them here. Mostly I was seeing things I expected to see but one stuck out. Someone had searched for the string “i am scared of programming.” I suspect that the searcher was not afraid of the act of programing but that they were afraid that it would be too hard. Or perhaps that the course they were taking or thinking about taking was too hard. Although it is possible that the act of programming was scaring them. Some people are afraid that they will “break something” through their programming activities. In any case there sees to be a lot of fear around when it comes to programming. It may be one of the things that keeps people away from the field.

    A bunch of years ago I wrote a textbook for learning Visual Basic 6.0. When talking with my publisher I joked that I would like the words “Don’t Panic” in large letters on the cover. The more geeky in the audience will remember that being on the cover of “The Hitchhiker’s Guide to the Galaxy.” One of the big goals of that first book was to be a friendly, gentle  introduction to programming. Scaring people was the last thing on my mind. I don’t want to scare people away from programming and computer science. I want to attract them TO programming and computer science.

    So what is scary about programming? For many it is the syntax of programming languages. The semi colons, the curly braces, the simple words in strange configurations, and the fussy way that programming languages what instructions to be specified. Recent years have seen the development of several languages, or environments perhaps, that have tried to avoid as much of the syntax problems as possible. Environments like Scratch, Alice and Kodu have gained a lot of usage particularly among teachers teaching younger students but even among teachers of older students. These tools allow the introduction of programming without the “scary” syntax of most major programming languages. Students using these environments learn that they can program and that it need not be something to be afraid of.

    These tools are great and I love them but they have some limitations. One of these limitations is that they are essentially “walled gardens” and the programmer can only operate within these environments. At some point one has to move on to more traditional programming languages. One hopes that most students have more confidence about the idea of programming when they make this jump and that the syntax will no longer seems as frightening because the concepts will be familiar.

    One of the other things that seems to scare some people is the literalness and the pickiness of “computers.” One really has to be pretty particular about how one gives instruction to a computer. It seems like the slightest little error – a typo, a missing semi colon, a letter in the wrong case – can make everything fall apart. For someone who is not used to being a detail oriented person or someone who just wants the computer to “do what I mean” programming can be frustrating. And yet bugs are not a time for panic but a time for patience.

    I think some people are also fearful that they will not be able to combine the problem solving with the syntax and fussiness of programming to get something that does what they want the computer to do. When taking a course the fear is that this will lead to poor grades. I’ve seen more than a few students avoid taking a computer science course because of the fear of getting a poor grade. It is unfortunate that the focus on grades gets so high that it overshadows the value of actually learning. That does happen though.

    What ever the source of fear I think that often that is the biggest barrier to entering computer science for many people who have the opportunity. Far too many people don’t have the opportunity for formal education in computer science and programming in K-12 of course. And that is a large problem. But in schools that do offer computer science and/or programming I think fear keeps many from even trying. And that is unfortunate.

    How do we get the word out that there is no need to panic? Friendly tools like Scratch, Alice and Kodu can help a little. I think that themes that really gather students interest (gaming, phone development, etc.) can help motivate students to move past their fear. I think that introducing computer science (which is more than programming) at an earlier age can help prevent fear from developing. I think we can create more early courses in middle school (or earlier) that introduce the concepts more gently can be helpful. I know that a lot of people are concerned about reducing the rigor of CS education. This make sense of course. We all want an AP CS course that is really a college/university set of rigor. But we don’t teach AP Calculus to students who haven’t learned arithmetic first. In fact we usually expect students to have many years of math courses before they get to AP Calculus. And still no one says “you’re not giving enough rigor in math” because we realize that you have to work up to some things. We need that sort of attitude about computer science as well

    Here we run into the old problem of no time in the curriculum. This is a tough one. The answer is probably something involving incorporating computer science into other parts of the curriculum. We’re a bit short of properly trained teachers for that which is an issue. Like so many problems though panic is not the solution. Neither is just giving up. We need to sit back, analyze the problem, develop a plan and execute it. Sounds a lot like programming doesn’t it?