Friday, May 27, 2016

You’re the Variable

One of my big goals this year has been to make my classes more interactive. I want to get kids involved and not be just passive listeners. Surprisingly students seem resistant to participate. They like sitting back and pretending to pay attention. That's not very good for learning though. Yesterday I tried something different. I’d like to say it was well planned and laid out in advance but it wasn’t. It sort of just happened. But it worked out well so I thought I would share it. Maybe someone can help me make it better for next year.

So hear is the set up. We have about two weeks left to the school year and I’ve been introducing my freshmen to coding. Lately we have been discussing loops.  My idea was some code that simulated a horse race multiple times while counting which horse won the most times. I decide to talk about coin flipping first.

I assigned four roles for students:

  • A student to flip coins and report heads or tails.
  • A student to count how many flips happened and call stop after the 10th flip
  • A student to keep track of heads
  • A student to keep track of tails

We ran through several iterations of students flipping coins and having my “variables” report results.

Next we wrote some code together during which I made frequent references to the initial people based “code.” We translated the various student roles into variables, actions (like flipping and counting the for loop), and let’s not forget displaying results. It seemed to work well as the level of involvement in creating the code was up from usual. We’ll see about retention today but I am hopeful. I want to find more ways to do similar things. Suggestions anyone?

Wednesday, May 25, 2016

You’re Having Fun Wrong #CSforAll

In several episodes of the comedy TV show “The Big Bang Theory”, Sheldon, the main character, complains that people are “having fun wrong.” What he means of course is that they are not doing what he thinks of as fun. We see that sort of thing a lot these days. “You’re not using Twitter right” or “You’re not using Facebook right” or today I read “American schools are teaching our kids how to code all wrong” The author of that article suggests strongly that the courses and curriculum their company sell are doing it right of course. It’s everyone else who is doing it wrong.

The article above takes particular aim at drag and drop programming in general and materials in specific. I don’t think either criticism is really fair. Drag and drop programming languages are being very effectively used to teach real computer science concepts as well as programming. Even Harvard’s famous CS50 course starts with Scratch! The author of that article makes it seem as though short exercises like those for Hour of Code are all that is producing. That is far from the case. They are producing a wide range of curriculum for a wide range of age groups. Much of this is very extensive and goes into a lot of detail and complexity.

I think that what bothers me the most about that article is the implication that it is addressing US computer science education in total or at least in large part. That is also not the case. Just the two Advanced Placement courses have multiple popular curricula many of which don’t use any drag and drop tools at all. Certainly the APCS A course is Java all the way. We teach three text based programming languages at my school and last I checked we were an American school.

This is typical of the naysaying I have been reading about the CS for All movement that is getting so much attention. People keep saying “but they’ll do it wrong!” as if that is a reason to keep computer science for some small subset of people where it can be done “right” for their specific definition of “right.”

There seems to be a fear that CS for All means we will wind up with a lot of people just doing some simple stuff like a short experience with block or tile programming and call it computer science. I don’t think anyone pushing CS for All wants that. I’ve talked to enough people at to know they don’t want that. No one I know involved with CSTA wants that. In fact I don’t know anyone at all who wants that.

People don’t really trust government to do the right thing with regards to CS education. I get that. But that doesn’t mean we don’t try to develop programs of CS education for everyone. There are lots of ways to teach CS. No one way is best for every student, every school, or every teacher.

We are fortunate that there are a lot of different ways to teach CS these days. From CS Unplugged (no computers necessary) to block and tile languages to fun little devices like the BBC Micro:Bit and Ozobots to easy to use Integrated development environments to old fashioned text editors and command line compilers. We can teach CS to everyone. We may not bring everyone up to a professional level but we don’t do that in any other subject we teach in school either. Differences in depth, breath, and mastery are fine. But everyone should have a chance to learn computer science. Even if they don’t have fun with it the way you have fun with it.

Tuesday, May 24, 2016

Practices and Concepts in Computer Science Education

Work on a framework for computer science education in grades Kindergarten through grade 12 continues with many of the writers and advisors meeting over the past few days in New Orleans. It is somewhat humbling to be involved as some of the smartest most involved people I know of in CS education are working on this project. It’s also forced me to think a lot about my own teaching.

The framework includes concepts that every student should learn as well as practices they should develop. My role is focused on writing about practices so that has taken up a lot of my thinking time. One of the things I think about is how do or perhaps can what we teach in CS can contribute to learning and development more generally. We know that, much as we’d like to believe that teaching CS transfers automatically to problem solving generally that is not the case.

Can we do things that make some transfer happen though? I’d like to think so. As I look through the practices we have been describing in the framework I see a lot of what I think of as problem solving techniques and practices.

I think we can teach problem solving and that it can be a part of teaching computer science. Too often I think we get hung up on teaching how to program by which I mean things like syntax and basic concepts of programming languages. Of course we need to teach those things but that is really the easy part. The hard part is teaching students how to apply these concepts. We can give students step by step instructions and they can create working programs. Do they learn from this? Probably. A lot of textbooks take this approach. But at the same time too much and too detailed instructions also remove the need for creative thought or problem solving.

Done right computing is a creative endeavor. And of course we often want to use computing to solve real work problems. Are creating thinking and problem solving unique to computing? Obviously not. I don’t think we can expect transfer to occur automatically because we have research that shows that it doesn’t. But perhaps we can teach things in a way to help some transfer along. Helping students learn good practices along with good concepts should be a step in the right direction. Right?

BTW the next formal review period for the K12 CS Framework starts on June 8th and you can sign up for updates. We really need full community involvement to make sure this work is as good as it can be.

Monday, May 23, 2016

Interesting Links 23 June 2016

It’s getting to be the end of the school year. I know teachers who are finished already and others who finish up this week. I have about three weeks to go. Trying to keep up the energy level at this time of year can be tough but I think most teachers are managing ok. Thinking ahead to the summer helps. Lots of professional development in my summer plans. How about for you?

The nation’s largest school districts are rushing to fill the coding gap via @NewsHour Seems like a lot of stories like this one are appearing all the time. It makes one wonder about the small school districts though.

Montana is full of small districts and at least some people are talking about CS for All there - Candidates push computer science training in Montana

mlbgame is a Python API to retrieve and read MLB GameDay XML data.  If you are teaching with Python and looking for projects this might be something you can use.

“‘Eat, sleep, code, repeat’ is such bullshit” by @dankim We need students to realize that having a life is a good thing for software developers and computer scientists. Because it is!

Shark Tank is back! This time we'll focus on coding with featured sharks @alfredtwo, @ed_saber & @kburtonr This will be a webcast focusing on some educational apps that teach computer science. Should be fun to be a part of.

  Girls Explain How Boobs, Menstruation and More Keep Them From Coding in Satirical Campaign Women I know are sharing these videos like crazy. They make me a little uncomfortable. Because I am a man of a certain age? Probably.

Starting out with the BBC Micro:Bit. @mashable shows how to build a metronome with one

Nine amazing BBC micro:bit projects. From rocket cars to score predictors. Just in case you were wondering what else these little devices could be used for.

Speaking of the Micro:Bit, Is anyone else looking at the MI:power board for the BBC micro:bit? It uses a coin type battery to power the Micro:Bit. It looks like it might make some Maker projects easier. I bought one but it came just before I went out of town so I haven't tried it yet. Note: It cost a lot more to have it sent to the US from the UK than to buy it.

They actually have a bunch of other accessories that I just noticed while getting this post ready. This may cost me some money.

Computer Science Education Blog Roll – I added @MrAColley to the list

Microsoft Research is seeking interns to help them reveal how Minecraft can be used as a testing ground for AI This is based in the United Kingdom. Not everything at MSR is in the US.

Tuesday, May 17, 2016

Cyber Teacher Certificate Program Available for CSTA Members

Cybersecurity is an area of computing that is getting a lot of attention these days. I am regularly asked about it by prospective parents and students which is a big indication of interest lately. Not many teachers are really ready to teach it well though. I include myself in that mix. So this announcement from the Computer Science Teachers Association is timely and valuable.

The Computer Science Teachers Association, in partnership with LifeJourney, the leader in cybersecurity and STEM online career exploration, recently announced the launch of a strategic professional development program to better equip educators for teaching cybersecurity in the classroom and thus positively impact the nation's cyber skills gap. The CSTA program is called the Cyber Teacher Certificate professional development program.

"I strongly encourage all educators in our membership to register for and complete the Cyber Teacher Certificate program," said Dr. Mark Nelson, Executive Director of CSTA. "CSTA suggests that all members should make it a priority for professional development in 2016."

Register for the Cyber Teacher Program Now

Demand for cybersecurity professionals is growing twelve times faster than the overall job market, while at the same time, with student interest in cybersecurity surging, more than 64% of Millennials say their educational institution does not have courses that would allow them to explore their interest in cyber.  

The Cyber Teacher PD Certificate Program includes:

  • An online cybersecurity mentorship platform (the NSA Day of Cyber) that teachers run in the classroom, featuring NSA cybersecurity leaders as role models to the the nation's students. 
  • Eight (8) hours of documented Continuing Education Units (CEUs) endorsed by the Computer Science Teachers Association, the recognized leader in offering current and relevant professional development content for computer science teachers.
  • Training and mastery of "Fundamentals of Cyber", an online course utilizing revolutionary adaptive learning techniques.
  • Ability to easily extend your cybersecurity syllabus beyond the NSA Day Of Cyber classroom experience. Each mentor in the NSA Day Of Cyber is matched with corresponding lesson plans exemplifying the skills necessary for students to pursue the spotlighted careers.
  • Ability to take the instructional Cyber Teacher Journey and see how others are using NSA Day Of Cyber and training materials in the classroom.
  • Membership in the Cyber Teacher Association, the most important new association for educators united in creating the next Cyber Generation. Enjoy membership and collaboration in a community of your cyber educator peers.

The Cyber Teacher Certificate Program is NOW Available for CSTA Members

Members can register for the Cyber Teacher Certificate program here where they can review the program and learn more about it. The fee can be submitted by teachers as a reimbursable expense for professional development per the policies of individual school districts. 

The Cyber Teacher Certificate Program is a helpful proof-of-concept for our CPD Pipeline model.  With this type of novel approach to teacher PD we can better support more teachers, further strengthening the overall K-12 CS ecosystem and ensuring better access to quality CS education for all kids.

Read press coverage of CSTA's launch of the Cyber Teacher Certificate program at this link.

*At this time, this program is only available in the US. An international version will be available later this year and we will advise you when it is available.

Cyber Teacher Logo

Monday, May 16, 2016

Interesting Links 16 May 2016

Well I’m late with this. Usually I write these us Sunday night but last night I was just exhausted. Not in a bad way - just tired. That happens when you have a good weekend sometimes. If you missed an expected morning read I apologize. But better late than never here are the links I collected over that last week.

.@MrAColley a Lead Practitioner of Computing, ICT and T&L  blogs about The BBC micro:bit and shares his resources. I’m starting to see more and more from teachers using this little device with students. Let me know if there is someone you know (you perhaps) with things to share.

Congratulations to Chris Stephenson founding Exec Director of the Computer Science Teachers Association and now Computer Science Education person at Google for winning the ACM President’s Award for service to CS education.

Scratch is the new PowerPoint subtitled (or 'why I am annoyed with free educational software') is an interesting look at educational software by a teacher and Chair of computing at a school in the UK.

Should We Teach HTML? This common question is taken on by Mike @zamansky As often happens there is some interesting discussion in the comments.

It's Official: 'Brogrammer' Culture Is Driving Women Out of STEM Jobs documentation for things most of us already knew.

Some interesting things from Microsoft this week as well.

Tuesday, May 10, 2016

Copying Code–Steal from the Best

Not every coding mistake makes it into the news but one did recently which carries a cautionary message for students (and others who code.) Nissan app developer busted for copying code from Stack Overflow  It’s funny in a way. It’s not so gunny in other ways.

Long story short, a developer copied some code from the website Stack Overflow where many developers help out with code samples, hints, tricks and other information. It’s likely no one would have noticed if they hadn’t included that revealed the source of the code. That’s the funny part. The not funny part is that this was not caught in the review process for code entering the product.


Now it’s been a long time since I wrote code that shipped in a commercial product but back then code did not make it into the official build without being reviewed by two other developers. One would like to think that this sort of process still exists and that people actually read the code. I know I always read code I was asked to review very closely.

Reusing code is a perfectly acceptable practice in professional development. We even used to joke that one should “steal from the best.” But of course one is always expected to fully understand the code one is reusing.  Students share code all the time as well. This can be a problem for teachers since projects are assigned (at least in part) to determine what students have learned. So a student who uses code they don’t understand is really cheating. They are cheating themselves but they are also devaluing the grades. Both are sad really.

Students have been copying from classmates for years. Well probably for as long as we’ve had grades. Copying from the Internet is newer but seems to be growing in frequency. Often times this is easier to spot as code shows up that is very different and even beyond what has been covered in class. Other times it is not as easy. I don’t always have a problem with this. If the student really understands what they are using getting code from the Internet can be a good thing. When they use code without understanding it problems ensue.

Often I see students using code from the Internet because they don’t understand it well enough to incorporate it in with the code that they have written themselves. This can be a good learning experience.

Generally I think reading the code written by other people can be a very good thing. I know I learn a lot from that process. The only time it really is a problem is when students don’t actually learn from it.

Monday, May 09, 2016

Interesting Links 9 May 2016

A lot of variety this week. Robots, professional development, news, curriculum. and some controversy around the AP CS A exam. None of it my fault.

Interested in teaching computer science?  @LetsTeachCS has 3K fellowships for Professional Development with  multiple providers. …

HullPixelBot: A robot pixel from Hull may have to add this to my blog of robots for teaching programming and computer science.

Well Mike Zamansky has really been on a kick about (or kicking) the Advanced Placement Computer Science exam. He is not a fan. He's written several blog post on the topic and there has been a lot of discussion in the comments. Agree or disagree there is a lot going on.

K 12 Computer Science Initiatives Are Exciting, but Are They Enough? #edtech via @EdSurge  How do we do computer science and still make sure students are getting everything else they need in school?

 Creative Coding Academy - a 20 hour Computer Science curriculum using TouchDevelop is available. Something for summer programs or after school programs perhaps.

  Meet The Girls Who Code In A Roxbury Basement via @WBUR  A club that is teaching homeless girls programming and computer science.

Will I see you at the CSTA Conference this summer? I hope so.

Oh and by the way save the date for 2017 as well.

Wednesday, May 04, 2016

Computer Science Making Numbers More Interesting

Last night I lay awake thinking about numbers and programming languages. Yes I know – weird.  One of the first programming languages I was paid to write code in was called DIBOL – Digital’s Business Oriented Language. It was sort of a cross between FORTRAN and COBOL which probably doesn’t mean much to a lot of people these days but said a lot back in the late 1970s. One of the interesting things about DIBOL was that it didn’t use floating point numbers. It did have 18 digits (if I remember correctly) of accuracy in integer arithmetic though. That was highly useful even if it did force one to think a bit differently.

So why was I thinking about this? Well I have been playing with various ways of programming the BBC Micro:Bit and one way doesn’t seem to support real numbers.  I found out that the Micro:Bit can return an approximation of the temperature. Now the Micro:Bit is designed for the United Kingdom where they use Celsius temperatures. I live in the US where we use Fahrenheit so I decided to write some conversion code. It looked something like this:


And the answer it returned was wrong. A little experimentation and I realized that 1.8 was being treated as 1. Well that’s no good. I came up with a couple of different solutions. This one works pretty well. Multiplying the temperature by 9 and dividing the result by 5. That takes care of the problem of 9/5 being treated as 1 rather than 1.8.BTW I love the way nesting of things work in this block language.


Last night I remembered DIBOL and came up with this. Multiplying by 18 and dividing by 10.

image Pretty much the same as my previous solution but I think it opens the door for better results if I want to play with it some more. Plus it suggests a lot more possibilities for when I know the real number values I want to use.

There is a bigger issue for Computer Science teachers here though and probably for teachers of mathematics and that is limited understanding on the part of students about how numbers work.

I see this in several places in my teaching. One is talking about number base systems such as Binary. To me, at my advanced age and long experience using Binary, Hexadecimal, and Octal along with Decimal and it all seems pretty intuitive. For my students that is not so much the case. We spend a lot of time working on this topic.

The other place I see it is teaching the Modulus operator. Ask a student for the result of 5 divided by 2 and the answer you get will depend on their age. A young child first learning division will reply 2 with a remainder of 1. A secondary school student will reply 2.5.  Both answers are of course correct but when dealing with the modulus operator programmers deal with a remainder rather than a fractional part. It amazes me sometimes how hard it can be to get students to revert back to that “and a remainder of” thinking that was so natural several years earlier in their schooling. It’s as if they forget the value of whole numbers or integers.

In computing we have to understand a bit about how numbers work. Learning computer science taught me a lot about numbers and mathematics. In fact I think that my experience with computer science turned me from someone who hated math to someone who developed some real appreciation for mathematics and for numbers themselves. It makes me wonder if more CS at younger ages might lead to more students enjoying mathematics earlier in their school careers. I’m pretty certain it would help their understanding of mathematics.  

Monday, May 02, 2016

Interesting Links 2 May 2016

Back to school today after a week of vacation. I’m rested and ready for the final stretch of the school year. About seven weeks left. I spent a lot less time on the Internet last week than usual but still managed to collect some great links to share.

Did you see and sign the petition calling for Computer Science in all public schools? Some 82,000 signatures have joined the initial ones by an impressive list of CEOs, Governors, and education leaders. Check it out! Oh and take a look at Pat Yongpradit’s post on the Huffington Post - Dear Congress, Give Leila the Opportunity to Learn Computer Science

CS certification In Montana: ain’t going to happen soon by Garth Flint is a look at the problems caused by standards for teachers that are written by people who don’t understand what CS education is all about. I hope the K12 CS Framework under development will lead to some changes. But it will take time.

CS Fundamentals Unplugged from @codeorg unplugged lessons for your classroom to teach the fundamentals of Computer Science even without computers.

Introduction To Data Science “Imagine teaching your students how to predict, and then reduce injuries that happen in football games. Or help them learn how their favorite online retailer creates recommendations based on purchase and browsing history. This is the magic of data science, and it's one of the hottest subjects in schools across the US1.” Some new curriculum resources from Microsoft.

A rich problem - a Canadian coding/computing problem. A great project for Canadian CS teachers. For the rest of you, did you know that Canada was phasing out the penny? It makes for some interesting rounding off questions. Doug Peterson explores those and suggests some interesting related exercises around the issue. This may happen in the US one day not too far away.

Beyond Blocks: Syntax and Semantics – a valuable article on the issues around block based programming languages and the move from there to text based programming languages.