Monday, January 30, 2017

The Complex Question of Complexity in Programming

I spent most of last week grading semester projects written by my students. Reading through the code of beginners is really interesting. It’s interesting in part because of the solutions they come up with. You see in my first course we really only have a few weeks to cover programming. It is part of a full semester course and we do a lot of other things. So the tools that students have are quite limited. We don’t get to arrays for example. And the event handlers we deal with are pretty basic as are the objects they learn about.

One of the programs my beginners often select to program is the game “lights out.” This is how we describe it for students. When a student asks “is this hard?” I am tempted to answer “for you or for me?”

Lights Out – The game starts with 25 red buttons arranged in 5x5 grid. Each button pressed toggles itself and the four buttons around it (above, below, to the right, and to the left) between green and red. The object of the game is to get all 25 buttons green.

imageA typical board would look something like the image to the right. Most students wind up writing one event handler for each square on the board. Each event handler has between three (corners) and five if statements to determine color changes. I typically see something like a 14 page print out.

Creating this is at once simple and complicated. Simple because all of the language tools are very basic. Complicated because tracking all the squares that need to be checked is tedious and error prone.

My solution involves invisible boarder boxes and a single event handler that handles all cases simply and easily. Keeping track of what boxes to check is trivial. The print out is about 2 pages long and includes more features than the typical student project. This is also in some ways both simple and complicated. Simple for me because I have done this sort of thing many times before. Complicated because of the use of a two dimensional array (which my students haven't learned yet)  and because some students have trouble grasping why the invisible boarder makes the code easier and not harder.

Complexity seems to depend on a number of things. One is of course the “tools in the toolbox.” The more tools one has the more options one has. That’s pretty obvious. It seems like one of the biggest developments in programming in my time is the arrival of extensive libraries and functionality that is built into to programming languages. Anyone ever have to write code to subtract, multiply or divide? I remember doing that for a PDP-8 program I wrote in college. Everything was built on adding. I’m really class I don’t have to do that anymore.  Of course there is a lot more to learn as well.

The other thing is experience. The more code one has written and read (especially read) the more design options on knows and understands. After a while one naturally sees patterns that are not always obvious to beginners.

Teaching the basic syntax still seems like the easy part of learning to program. Understanding how those building blocks can be assembled is the hard part. There is still a lot of “reinventing the wheel” on the part of students as they “solve” well understood problems. That is part of the learning experience in many disciplines but I often wish we could move that part along faster. And less painfully.

Wednesday, January 25, 2017

Computer Science Education at SxSWEdu 2017

sxswedu logoSxSWedu is one big conference I have never been to. Seeing how it is tied to the big South By SouthWest Interactive and Music conferences it has always fascinated me though. Attending doesn’t easily fit with my travel budget these days and in the past I haven’t seen specific CS Ed content  to justify spending other people’s money either. This year looks very different. Pat Yongpradit of code.org has put together a Google Doc with all of the computer science education related sessions at SxSWEdu. It’s an impressive list. Note that this list has been updated since my original post.
There are some 15 or 16 sessions on Pat’s list. While in some quarters SxSWEdu has a reputation about being all about companies trying to sell educational technology to schools these CS sessions are different. Almost all of the presenters are faculty or researchers at some level. Plus many of my favorite CS education activists are involved. People I’d go out of my way to listen to!
There is one industry panel that looks particularly interesting though – “Why Tech is Investing in Teaching Tech Early” People from Google, Microsoft and Tynker are part of the panel. With a lot of concern about the influence of tech companies on education I think it will be interesting to see how these people talk about their companies’ motivations.
If you are thinking about attending SxSWEdu this year and definitely if you are planning on attending check out Pat’s list of CS education related SxSWedu sessions.

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.

Sunday, November 27, 2016

How Fast Can You Sort a Deck of Cards?

OK I admit it – sorting fascinates me. No, really it does. OF course it is also an important topic for computer science classes. CS Unplugged has a lot of resources for teaching/learning sorting algorithms. Hadi Partovi of Code.Org shared a link for a very cool Sorting Algorithms Animations web page. They're all pretty cool. It’s nice to have multiple tools in your toolbox for something like this. Recently I tried something new with my freshmen.

I asked my students who thought they could sort a deck of cards the fastest. Could they do it faster as an individual or as part of a team? Freshmen being freshmen there were several who thought they could do it faster as an individual. Others liked the team idea. So tried it. I took out a deck of cards and shuffled it. Then I timed a student as they sorted it. BTW the first discussion was “what does sorting a deck of cards mean?” Is it all Aces followed by all twos or is it Ace to King of one suit followed by Ace to King of the next suit? Does the order of the suits matter? All important questions that open the door to conversation about sorting.

Setting teams of students to the task is interesting in different ways. Using a team allows for some parallelism in the process. Most teams start with one person separating the cards by suit with the other team members sorting each individual suit. A really good team might split up the deck for the initial sorting by suit.  A good conversation can be had about those different techniques. One of the best discussions I have had involve asking why using four people is not four times as fast as only one person.

Everyone softs things from time to time but no one seems to think about it much. It is one of those things people just do. Thinking and talking about it is the first step towards doing to better. Using something common place like a deck of cards while looking closely about what is going on seems to be a good learning tool. Anyone else doing something like that? I’d love to hear other ideas.

(As an aside: the deck I used was the Notable Women in Tech Cards. I have the poster version on my lab wall as well. Good conversation starter.)

Saturday, November 26, 2016

Programming vs. Computer Science

Programming is not the same thing as computer science. But of course they are related. For example, knowing how to use the following arrays is programming. Knowing which one is more efficient and why is computer science. Especially if you know that the answer starts with “it depends.”

int[,] myNumbers = new int[50, 3];
int[,] yourNumbers = new int[3, 50];

Just a thought for the day.

Friday, November 18, 2016

Truth and Fiction in Programming Memes

I ran into a couple of images with messages about programming today. One I think is useful. The other I think is the opposite of useful. The first one is cute.

safe_imageI see this all of the time with my students. Either they write some code without understanding it of the IDE creates some very important code for them. Either way they don’t quite understand what it does. They find it confusing. So they delete it. What could go wrong? Quite a bit it turns out.

This happens to more experienced programmers as well. Hopefully not as often. The lesson is that you really do want to understand code before you modify or delete it. Hint: Comments can help here. If other people are ever remotely likely to look at the code (or if you are remotely likely to ever look at the code again) having good comments can help prevent the deletion of important code by contributing to its understanding.

The other one I found annoying. sleepyFor one thing it perpetuates the stereotype that programming requires long hours, little sleep, and not much of a life. Not helpful. But it gets worse. Programming with insufficient sleep can result in serious mistakes, bad code, and problems for a lot of people.

I’ll never forget a developer I worked with many years ago. He insisted that he could (and had to) work very long hours on very little sleep. When asked about “diminishing returns” he replied that was not a problem for him. Then one morning we came in to work to find out that he had accidently erased our main development store. The backup was also not as current as it should have been. We lost a week’s worth of work for several people. Ouch!

No, if you are sleepy it means someone has messed up. Someone has not planned the work properly, done work properly, or set unreasonable deadlines. Or something else but still something is going wrong not right if the programmers are tired. Proper planning can avoid a lot of missed sleep. So many people seem to skip that step though. Go figure.

Wednesday, November 16, 2016

Hello Cloud 2017

I’m telling my students  about this. Looks like it will be educational even if money is not enough of an incentive.

hello cloud

Online Contest

The Power of Azure

Master cloud computing with Microsoft Azure and you could win $1,000!

Cloud computing is changing the technology industry. When you start looking for your first job, will you have the cloud on your résumé? You will if you compete in our Hello Cloud Challenge!

Every month, one student will win our $1,000 sweepstakes. To compete, all you need to do is sign up for Azure (free, no credit card required) through Microsoft Imagine and then complete one or more of our Hello Cloud activities. Each activity you complete gives you another chance to win. And you only have to do each activity once – your name will still be in the sweepstakes month after month!

Register for our Hello Cloud contest today and you can get started!

The Hello Cloud activities are hands-on real world scenarios that will help you learn how to manage and deploy projects in the cloud!

Thursday, November 10, 2016

Too Many CS Teaching Resources

The Bring IT, Together conference is taking place this week in Niagara Falls, Canada. I’m not there but I have been seeing some social media updates today.  It looks like a great conference and on some level I really wish I were there. At the same time I have been thinking back on a conversation I had last Saturday with Pat Yongpradit (Chief Education officer at Code.Org and a wonderful teacher).

We talked about how many tools are available for teaching computer science these days. There are an awesome number of them. There are robots for teaching programming. There are block based languages for teaching. And then there is an increasing number of Internet of Things objects for teaching programming. Last weekend I attended a workshop on using microprocessors and electronics for teaching programming (and more). There is the BBC Micro:Bit, Arduino, Raspberry Pi, and many more micro processor based items all the time. (I should make another list but maybe someone is doing that already?) 

Do we need all of this stuff? How do we pick from all the stuff out there? Every time I go to a conference is see a “shiny new object” for teaching computer science. My first inclination is to get one (or more) and think about how to fit it into my curriculum. And then someone reminds me that I have limited teaching time and limited resources and there is that whole only 24 hours in a day restriction.

Much of what we are seeing is brand new and while it looks great there is seldom research or experience to back up its usefulness. Usually we see it demonstrated by either the people who created it or by early adopters. I would expect it to work for the people who created it. Generally people create tools closely aligned to how they teach. I know my first textbook was based completely around the way I taught and what works for me. Does something that works great for the creator work for everyone? Much as we’d all like to think so it is far from a sure thing.

The same, to some extent, is true of people who are early adopters of new resources. How much of what it working for them is related to the ways they would teach with any other resource and how much because of the tool itself? It’s really hard to tell. Some tools are adopted enough over time (think Alice and Scratch) that it becomes clear that they can work for a lot of people. Though a close look shows that Alice works better for some teachers than Scratch does and some times Scratch works better than Alice for other teachers. Which one are you and how do you find out?

OK this is coming out a little more negative than I really intended. I do like new tools. And I do try to bring them into class. On the other hand a lot of stuff I have used for some years seems to work really well. There is nothing wrong with using things that work even though they are not the latest and greatest thing being show at tech conferences. Right?

Saturday, November 05, 2016

Thinking Deeper About Programming Contests

I have this set of mixed feelings about student programming contests. On one level they just feel very artificial and inauthentic. You have a tight time schedule, some problems that are as much about the algorithm and they are programming and its all a narrow view of computer science. But lately I have been thinking beyond the façade in a way.

I took a group of students to a competition hosted by the Internet company Dyn the other day. The day started with tours of their offices. Like most Internet companies these days the offices at Dyn are cool. They are in a renovated mill building so the modern interior and the old exterior and “bones” of the building make for an interesting contrast. The tour impressed the students. (and me as well.) So that was a start. Then there were some brief (they must understand HS student attention spans) talks about Internet topics. Dyn was recently in the news for a Distributed Denial of Service attack so hearing from people involved about that was pretty impressive.  The “please study CS so you can come to work for us later” that students heard from professionals was huge as well. Having that experience is probably worth the trip by itself. It helps to see where they could be one day.

I’ve been to a lot of high school programming competitions in the past. Usually I spent my time there with faculty. I did some of that at this one as well. There is a lot of value in getting a bunch of CS teachers together to share ideas and experiences. While that is not a goal of these events (always) it is a valuable side benefit.

Being at an event with students was pretty new for me though. It changes how you look at things. I watched the students (MY students) work. I could not help them of course nor could I really listen in on their process. I could observe it. What I saw was unmistakable teamwork. The process was dynamic. It was not always the same student at the keyboard (teams were only allowed one computer) for example. All three students were involved no matter who was at the keyboard.  Developing that teamwork is a critical “soft” skill that seems to be reinforced by an event like this.

After the competition the students talked a little about how things went. Clearly there was give and take, strategy, and planning during the competition. Having that time crunch seems to force some organization on students. Sure we have deadlines in the classroom but they are not as close or as tight as in a programming competition. This is probably a good thing.

tl;dr I’m thinking that taking students to more programming competitions may be a good ide. And not just so they can win prizes.

Thursday, October 27, 2016

Why is learning Binary hard?

Why is learning Binary (and various number bases) so hard for students? I don't remember how exactly there were taught to me except that it was in either the 5th or 6th grade and that I took to it like a duck takes to water. It was just such a cool thing and so obvious to me. For weeks I played around with changing decimal numbers into numbers in other number bases.

Maybe it was because I learned it early. For example, my HS students seem to have trouble wrapping their head around "5 divided by 2 is 2 with a remainder of 1." It takes about 15 minutes for everyone to stop answering "2.5"

At the end of a period they seem to have gotten most of it down. At least they can convert Binary to decimal. Going the other way is still a bit iffy.

I'm always looking for new tools for the purpose of teaching Binary. Any suggestions for teaching the topic?

Wednesday, October 26, 2016

Robots for Teaching are everywhere–Which should I use and how?

Do a search for “robots for teaching programming” using your favorite search engine sometime. You’ll find a lot of news about the latest and greatest robot for educational use. They are all “new” and “innovative” and designed to get students excited. This week it is Root – a robot that climbs walls or white boards. It even has a brush for erasing the white board. Looks pretty cool and I know at least one of the people on the team and they are awesome. This adds to a long list of educational robots. And I do have a list of robots for teaching programming.

root

So should you be using them to teach programming? And if so, which robot? Or several robots? How are you to know? My wife and I have purchased a number of robots over the years. My wife uses them with her students but honestly I haven’t been driven to use them with mine. I can’t explain why other than I’m just not sold on the idea for me. Although perhaps there is some analysis paralysis involved.

I’ve got some friends who just jump right in and try things out. My friend Doug Bergman has a number of robots he uses with his students. (Doug if you are reading we need a blog post or two about this.) I admire him greatly for his innovation. He has more time with his CS students than I do though that is a factor as well. When you have one semester total to teach programming as I do there is a tendency to play it safe. That may or may not be the best thing but …

I was thinking about this on my drive into school this morning. What I’d really love to see is a whole track at CSTA on robots. We’ve had the occasional talk about using robots in the past. And we had some robots exhibiting at the last CSTA conference. (Thanks for coming Wonder Workshop.) Wouldn't it be cool to have lost of educational robots in the exhibit hall and a bunch of teachers talking about their use of robots in actual classrooms?

I’m not on the program committee and I don’t know what the plans are or who is exhibiting but I can dream.  And I can suggest that if you are teaching with robots you submit a proposal. :-) If not that PLEASE leave a comment about the robot(s) you are using and how it is working for you.

Tuesday, October 25, 2016

Teaching Computer Science and the Good Idea Fairy

The Good Idea Fairy struck again today. I have been taking about data checking and data safety with my freshmen lastly. One of the things we talk about is parity checking (I blogged about that three years ago at Making Magic With Software) Garth Flint offered the term “Good Idea Fairy” in a comment there.  In any case I started to think about other things we do in computing for data integrity. Things like cyclic redundancy check (CRC).

CRC is an important topic and I do talk about it. The math is not something I want to do with my freshmen though. Still I wanted something that would be quick and easy to have them do. That lead me to think about check digits.  They are used in all sorts of things and yet some of them are fairly easy to calculate. The check digits used for the machine readable numbers on passports for example.

The formula is simple. The first digit is multiplied by 7, the second digit by 3, and the third digit by 1. Then the cycle repeats so the fourth digit is multiplied by 7 and so on. The results are added together and the result divided by 10 with the integer remainder being the check digit.. imageCalculating the check digit for a birthday (in the format yymmdd) is pretty trivial but gives students an idea of what is involved.

So I did that with student in class. Step two of the Good Idea Fairy is now I have more ideas for programming projects.

The easy version is to calculate a check digit from a set of numbers entered. That’s ok. And maybe fun for a bit. But I was thinking – suppose I created a data set of numbers with check digits and had students write code to scan the file for invalid data. Or just build a new data set with the check digit added. Now those would be more interesting. That may happen soon.

What is the latest project or teaching idea the Good Idea Fairy has hit you with?

Monday, October 24, 2016

Interesting Links 24 October 2016

The two big news event around computer science last week were the Distributed Denial of Service (DDoS) attack on Dyn and the release of the new K-12 Computer Science Curriculum framework. The DDoS attack was local news for me. Dyn is located not far from where I teach and where I will be taking students for a hackathon in a few days. While I’ll be talking about the DDoS attack with my students the longest lasting news for CS education is the framework so I’ll start with a few links about that.

 Introducing the K–12 Computer Science Framework, a milestone for CS education – this is the announcement as posted by Code.Org

One of the many gifts the K12 CS Framework provides -> a glossary of CS terms!

Educators, Organizations Develop K-12 Computer Science Framework This is one of many articles about the framework. I like this one because I was interviewed for it and quoted. Smile 

Cozmo looks like a fun robot. An interesting look into how Artificial Intelligence will help robots be companions perhaps. A good thing or a bad thing? Or just a thing?

How Your First Programming Language Warps Your Brain I’m not sure I buy the premise as given in the title. What do you think?

How I'd teach computer science by @davewiner Great idea. I think a lot of university courses do this already. It’s always interesting to hear/read the thoughts of how to teach CS from people who don’t actually teach CS themselves.

Don’t forget that the  2017 CSTA Conference Call for Proposals is now open!

Monday, October 17, 2016

K–12 Computer Science Framework Released

After over a year of hard work by a lot of people (I had a small role myself) the K–12 Computer Science Framework is now officially out.

Frankly I expect some criticism. This is computer science after all and we argue more than politicians or theologians. I think it is a good start for people to build on though.

The official announcement follows below. Check it out for yourself.


After over a year of hard work and countless writing workshops, stakeholder convenings, and lots of hotel food, I couldn’t be more pleased to announce today’s news.

The Association for Computing Machinery, Code.org, Computer Science Teachers Association, Cyber Innovation Center, and National Math and Science Initiative are incredibly excited to announce the launch of the K–12 Computer Science Framework. This is a big moment for the computer science education movement in the United States. Check out this video.

 

Thanks to the leadership of fourteen states and four districts, the hard work of twenty-seven writers and twenty-five advisors, and the support of leaders in the corporate, nonprofit, and education sectors, there is now a framework for implementing K–12 computer science. The framework promotes a vision in which all students critically engage in computer science issues; approach problems in innovative ways; and create computational artifacts with a personal, practical, or community purpose. To achieve this vision, the framework offers a set of guidelines to inform the development of standards, curriculum, and computer science pathways, and also help school systems build capacity for teaching computer science.


A number of corporations, nonprofits, institutions, technology professionals, and notable members of the computer science education community have announced their support of the framework, including Google, Apple, Amazon, Microsoft, International Society for Technology in Education, Project Lead the Way, Southern Regional Education Board, New York City Department of Education, and professors from universities such as Stanford, Harvard, and Duke. A full list of supporters is available at http://k12cs.org.


A webinar about the Framework will be held on Wednesday, October 19, at 12 PM Pacific / 3 PM Eastern. Visit https://www.youtube.com/watch?v=wmxyZ1DFBwk for more details and to watch the webinar on the 19th.

 
Personal note: To all my friends in the computer science education community, thank you for your support of the framework’s development—the unity shown has been the most encouraging part of the process. Now the work of implementing the framework begins!


For more information about the K–12 Computer Science Framework, including a list of practices and concepts, visit http://www.k12cs.org.
Sincerely,


Pat Yongpradit, on behalf of the K–12 Computer Science Framework