Wednesday, January 18, 2017

What I Learned in College

For various reasons my thoughts lately have been on my college experience. Now I graduated in 1975 which was a few years ago. A lot has changed in computing and computer science in that time. But those four years were quite foundational to my whole career. In fact without those four years I would probably never have gotten into computing in the first place. As I said it was a different time.

In the 1970s there were few computer science departments in universities. My college, Taylor University, had a computer science department of sorts but no computer science major. I took my first CS course to meet a general education credit. A professor who make it interesting, gave lots of projects, and was a really great person gave me the opportunity to get hooked. I patterned my own teaching in part after his. I like to think I have gotten a few others hooked over the years. So things started there.

Taylor was, and is, a smaller school. While my wife at a large public university saw her school’s computer at a distance I had hands on experience. My last couple of years I had my own key to the science building and computer lab. This was not the sort of thing that was common back when a university would have one computer lab to hold the one computer. At smaller schools though it was an option for serious students. I left with a lot of hands on experiences that my peers from big name schools did not have. Better than that I got to try a lot of things and learn a lot of things that we not taught in class. This was a big boost in my early career.

Two other, and related things, I learned in college were debugging and grading. Related? Oh yes. You can’t grade unless you can tell what is working and what isn’t. I some experience in these things in two ways.

Without graduate students, we undergraduate students worked in the computer labs as lab assistants. A lot of this time was spent helping students debug their programs. As a result of that experience I (and the other lab assistants) get to see a lot more errors and learn a lot more about finding and fixing bugs. Learning from other people’s mistakes is a true gift for which I am grateful.

We also spent some time making a first pass of student projects before the professor graded them. We learned to deal with rubrics, spot missing features and attributes, and basically learn to tell good code from bad. I review my students projects in many of the same ways today. Some things do not change.

But that debugging stuff. Wow! That is hard to teach in a class. In fact I doubt anyone teaches a dedicated course in debugging. People are left to figure that out themselves and yet for many people it is the most valuable thing they can learn.

The key thing I take from my reminiscing is that my learning combined classroom and practical out of class opportunities. Would I have had the later if I’d lived off campus or if I’d viewed learning as just something to do in class and partied a lot? Probably not.  University is a lot about what you make of it. If you view it as parties interrupted by classes you’ll probably not get a lot out of it. If you think you can max out on learning by just taking a lot of formal classes you’ll probably miss opportunities.  If on the other hand you view “school” as a holistic learning experience with classes as framework and out of class interactions and involvement as important and valuable you can get a lot out of it. I don’t think college is dead. I think it just needs to be down right. And that is still a possible thing.

Monday, January 09, 2017

How Important Are Number Bases for pre-University Computer Science?

Do high school or younger computer science students really need to understand number-base conversion and binary, decimal, and hexadecimal number systems? Obviously most students are comfortable using decimal numbers. How important though is them knowing Binary? Or hexadecimal ? Especially hexadecimal?

Now in my career there have been times when I used Binary, hexadecimal, and even octal (very useful in machines with 12 bit words.)  But do we need to teach these to secondary school CS students? If so why?

Do we have students reading hex dumps or looking at data in hexadecimal format? I can’t remember the last time I asked students to do something like that. So why hexadecimal?

Now ok Binary comes in handy for understanding things like why character variables are between –128 and +127 when expressed as integers. ASCII (and other formats) are available in decimal as often as Binary, Octal, or hexadecimal. So we really need students to know that a space is 20 in hexadecimal and 32 in decimal? Isn’t the decimal enough?

Binary is useful in other ways of course. Setting and reading flag bits for example can be very efficient and useful. And it is helpful in some cases to get a deeper understanding of data storage.

Now I do think understanding number systems is important. Just as learning a new natural language often helps people understand their native language, learning about number systems/bases can help students understand decimal better. But is the a math requirement or a computer science requirement?

OK let’s discuss.

Sunday, January 01, 2017

Computer Science Education Things I’m Watching in 2017

What is going to be big in 2017? It’s always hard to tell but there are several things I think I need to keep an eye on this year. (Note: Last year’s things to watch is here.) Some of the things are repeats from last year. They are still developing. Others are things I’ve seem more of last year with indications that they are moving forward. What will you be watching this year?

Computer Science for Everyone - This moved along very well in 2016 with huge support from the White House. Will the new president be supportive? I don’t think anyone knows. Fortunately there is a lot of movement in the states and Congress seems to see CS education as a bipartisan issue. I am hopeful that progress will continue but it is something those of how care about need to be active in making happen.

Advanced Placement Computer Science Principles – This really took off in 2016. What I am most interested in seeing is how well the various big name curricula do in terms of test results. The other thing I am watching for is teachers who get really innovative on their own in teaching this course. I’ll probably be teaching it for the first time in the fall of 2017 so I’m hard at work figuring out how I will teach it. Lots to watch.

Expanding CS Education Before High School – I’m seeing more and more interest in K-8 computer science. Code.org has been instrumental in promoting this with training and curriculum materials. Bootstrap has been growing in middle school (BTW if I were a middle school principal or math teacher I would really be looking at Bootstrap – seriously – math and computing is a way that works and is fun? ) The #CSk8 twitter chat is growing by leaps and bounds. All of the new state standards are looking at K-8 as well as high school.  We’re on a roll here. I can’t wait to see how it continues to develop in 2017.

Making and CS – I have been trying to figure out how to categorize this topic. Initially I was going to call it Internet of Things. IoT for short. That was a big surprise this year. Several professional development events I attended had session labeled Internet of Things. They were all over subscribed. What is IoT? That definition seems to be fuzzy. I tend to think of it as smart devices that are  internet connected. Things like the web enabled cameras I use to keep an eye on my family’s vacation home. They are smart enough to let me know when they see people rather than just motion. Or programmable thermostats like Nest sells.

What I am seeing at workshops makes me think more of what I associate with Makerspaces though. Smart devices but not necessarily internet connected.

How ever you see IoT I see a lot of interest in using or making smart devices. People are interested in programming things other than pixels on a screen. And they don’t just mean robots, though those are still popular.

So I think we’ll see people taking advantage of cheap computers, simple sensors, and basic communication tools to make and program interesting things. I’m not sure how much this will penetrate the school day though. So far a lot of the activity seems to be afternoon and weekend “extra” programs and special events. I can see this fitting into AP CS Principles for one thing. And it has the potential for cross curricula projects. I’d love to see CS classes build things for science classes for example.

All in all I see great potential for making computing more interesting to new groups of students.

So what are you expecting to see and learn in 2017?

Thursday, December 29, 2016

Looking Back on CS Education in 2016

I started 2016 with a post called Computer Science Education Things to Watch in 2016. It's time to look back and write about what I think I saw over the year. My next post will be about what I will be looking at over 2017.

Very Inexpensive Computers – I think I called this one right. I didn't expect to see a large uptake in these small, simple, and inexpensive computers. There is potential in them. I think maybe we'll see more of them in after school, weekend, and summer programs.

BBC:Micro:Bit – I blogged about a lot of resources for these devices over the last year. They are still not generally available in the US though. I'm a bit far away to really judge the impact they may have had in the UK. So I'm still watching.

MOOCs and other Online CS Teaching tools – Yep, still not a huge impact. I have seen some of the online AP Computer Science MOOCs have some impact though. These seem to work where students have some local support of some kind even is that is support though providing time, space, computers, and someone to track that they are working. As a completely independent learning tool they still seem to work best with heavily motivated students.

Advanced Placement Computer Science Principles – This really seems to have taken off. Lots of people attended summer workshops including me. According to what I hear this has been one of the best new AP course introductions ever. Lots and lots of interest around the country. There are still some open questions about which programming languages will be most popular or which of the highly promoted curricula will be a) most adopted and b) have the best results. This is something to look at over 2017.

Python vs Java vs drag vs drop programming – I haven't seen a determination on this. With the AP CS A exam still in Java I think that slows Python adoption at the high school level. At the middle school level, a fast growing level, I see a lot more Python than Java. But a lot of drag/drop programming as well. I don't think we'll see a single language being "the thing to use" in the near future. And that is ok.

Computer Science for Everyone - This went better than I expected. A lot happened. A comprehensive K–12 Computer Science Framework was developed and released. The Computer Science Teachers Association (CSTA) announced Revised Interim Standards. several states released state wide standards as well. Ruthe Farmer, Senior Policy Advisor for Tech Inclusion for the White House office of Science and Technology Policy, recently blogged about a lot of what the White House was involved in this year (A Year of Milestones for Computer Science for All). All in all a lot of progress. It remains to be seen what sort of support the new administration in the White House will bring but there is a lot of momentum in the states and that is a hopeful thing. In my home state of New Hampshire, CS4NHis a new public/private partnership that is starting to make some positive moves. Some work on a real certification for CS teachers is in the works for example. Many other states have similar things going on. I'm optimistic in a way I wasn't a few years ago.

So that is what I was watching over the last year. Some new and some old things to watch for 2017. More on that very soon. In the mean time, what were you watching last year? And how did it go?

Friday, December 16, 2016

Acting Out The Loop

One of my major goals this year has been to get more activity in class to help students understand concepts. Jumping right into code is awfully abstract for many students. So I have been adding activities to help students see the connection between concepts in programming and in real life. Looping is where I have been having some fun. Probably most of what I am doing is old news to experienced teachers. Maybe sharing some of them will spark people sharing other ideas I can steal adapt for my own use.

I’ve been having students walk for a while. Take 7 steps for example for a counting loop. Walk from place a to place b for a while loop. And the ever popular “walk that way” (choose a wise guy for this one so they keep pretending to walk when they get to the wall) for an infinite loop.

Lately I added some activities with a deck of cards. Count out 10 cards or count this batch of cards (always use a subset or include jokers so someone will be wrong if they shout out “52”) as a loop activity. Pull cards off of the deck until you get to a face card or some other specific card to demonstrate a while loop. It seems to go over well.

For the difference between a counter variable and an accumulator I have been using a small handful of coins. “What is the total value of the coins” and “how many coins are there” are very different activities. And I don’t know about your students but mine pay attention when money is involved even if they don’t get to keep it.

So far it seems like these examples help students grasp the concepts better and faster. It may help that students seem to pay more attention to what their peers are doing than what their teacher is doing.

Students don’t realize how much of what they do every day is really some form of looping. Walking for example or climbing stairs.  Or even writing essays (keep writing until you hit 500 words.) I hope that by making the reality of it all more solid it will help as we take on the coding involved. So far its going well. And it makes the class more interesting for me to teach as well. Win win! Smile

Wednesday, December 07, 2016

What’s Your Elf Name–A Programming Project

I love string manipulation projects. Maybe because I have always been more of a word person than a math person. Who knows why. I see them every where. For example this time of your one sees a lot of images like this one shared on social media.

bigelf

It’s a simple enough game.Pick one part of the name based on the first letter of your first name and the second from the month you were born. As a programming project it lets students use arrays and do some parsing work converting words selected into indexes into those arrays.

And of course is it seasonal so there is that. There are many variations of that sort of meme to be found. Recently I found the “what is your Sith Lord name?” meme.

 

whats-your-sith-name

I’m tempted to use this one before I have students test for palindromes next semester. A lot of thought goes into reversing strings for people new to programming. This one makes for a simpler project which can be a good thing.

But maybe you want to avoid the Sci Fi thing and it is not the Christmas season. How about spirit animals?

spirit animalSpiritAnimal

It turns out that a simple image search for “what is your name” (I used Bing for that link) turns up a plethora of examples. I was amazed at home many I found. There seems to be one for just about every season or holiday and many popular social interests. Something for everyone I think.

I’m still using the Shakespeare Insult Generator project though. That’s fun.

Thursday, December 01, 2016

CS Education Week School/District Pledge

Does your school believe in Computer Science for All? Take the @CSforAll #CSEdWeekpledge to show your support and be included in announcement!


Our economy is rapidly shifting, and families, educators and business leaders are increasingly recognizing that computer science (CS) is a “new basic” skill necessary for economic opportunity and social mobility in a world driven by software.

The CSforAll Consortium is preparing for Computer Science Education Week that takes place December 5-11, and the White House would like to include the name of your school or school district in the announcement celebrating the CSforAll initiative.

The Consortium is calling on every school principal and district superintendent in America to join in its commitment to support the goals of expanding access to CS by signing the CSforAll Pledge. To be included in the White House CS Ed Week announcement with the CSforAll Consortium, please complete the CSforAll Pledge by Friday December 2nd.