Monday, April 27, 2015

Interesting Links 27 April 2015

Here in New Hampshire we are on school vacation this week. Seems like a lot of places were on vacation last week. Like a lot of teachers I will be spending break time catching up both around the house and on school work. Grades mostly. I’m also going to sleep late. :-) It was a busy week last week though and I have collected a good group of links to share.

One thing I did last week was to update my blog post on Robots For Teaching Programming  with more robots thanks to the #CSK8 chat community. If you are interested in computer science education for grades K through 8 the #CSK8 chat is a great thing to take part in.

I saw this interesting weekend activity idea from #makewonder - robot fashion show: It’s designed for their Dash robot (I wrote about Dash and Dot previously) but I think this is an idea that would work for many other robot projects. Students like to make their robots personal.

Check out Professor Colleen Lewis’ online Scratch curriculum for ready-to-use CS classroom activities.

"Your password is too damn short"  is a useful article by Jeff Atwood on the topic of passwords. Most people don’t realize how vulnerable their passwords really are.

Thanks to @PennEngineers there is a 3-day Bootstrap workshop this Aug. 5-7; Open to the public; $150 registration  Bootstrap is a great curriculum merging math and computer science for middle schools.

Interesting new Facebook page patterned after the famous Humans of New York called Women of Silicon Valley   Yes there are women doing cool things in tech! Read about them on Facebook.

Embedded image permalink

Create TouchDevelop games and win $3000 with the Break Into Code contest! This is an easy contest to enter even for beginners. THink Hour of Code with cash prizes. If you have students who took an interest in Hour of Code and are interested in a follow up (or who missed Hour of Code) this many be of interest to them.

CodeVA is currently working with several school districts to develop a semester Middle School Computer Science Course  Check it out if you teach or want to teach middle school CS.

Soon the Senate will vote to change computer science to a "core academic subject." Here's why it's a big deal according to Code.Org 

15 Netiquette Rules for Students  by Mark Burns – All in one infographic.

I saw this last week. I have a principal once tell me that his teachers were “not good with computers.” I asked him if it were acceptable to say “I’m not good with math” as an excuse for not getting grades done.

Embedded image permalink

Friday, April 24, 2015

More With TouchDevelop

The more I use TouchDevelop the more I learn about it. The more I learn about it the more I want to use it. For example, groups. I’ve known about groups for a while. I’ve played with them a bit on my own in the past.  Today I used them with students in a big way for the first time. I created a group for each of my two Explorations in Computer Science sections and had students join the appropriate group.

I was concerned about doing this in the past because they have to log in to use them. This year my school got Google Apps for Education (not my choice – I’m an Office 365 guy myself) so they could easily log in with an account already tied to the school. This meant I didn’t have to ask them to use personal and private information. Plus I knew they all had accounts they could use.

Once they were in the group I could have them share their current project with the group. This lets me easily look at all the projects in one place. That’s pretty useful. I can also subscribe to them easily which means I will get a message when ever they publish something. I’m not sure about that one as I don’t want to get all stalker on them. But if they share assignments with the group that covers most classroom situations I can think of off hand.

An other thing I discovered was status. That gives me the option of seeing how much progress students have made on various tutorials.

image

Right now I am using it just to see what tutorials they are trying and how they are doing with them. That may give me some insights into what sorts of projects students find interesting. It is probably also the incentive I need to create some tutorials of my own. (Like the TD team has been suggesting I do for a while.) I need to look into what other sorts of data I can get from people taking tutorials I create. Something for this weekend perhaps.

TouchDevelop scripts that are shared for editing with a group can be opened and edited by members of the group at the same time. That is also on my list to experiment with real soon. Soon being after next week’s April vacation. I think there are some interesting possibilities there.

Students love to experiment with TouchDevelop. They are trying things, asking me a lot of “how do I do such and such” questions, and having fun. All good things. I’m thinking a lot about how I can expand use of it next time.

Thursday, April 23, 2015

How To Tell Your 1:1 Program is Going to Fail

I saw this question on Facebook.

My schools going to all iPad next year for the students. Can we do the coding that we need to for AP Computer Science on an iPad?

laptopsMy first reaction, and second reaction, and third reaction was – why is that question even being asked AFTER the decision has been made? Shouldn’t questions like “is their software for my subject available for the device?” be answered BEFORE a decision is made on what devices to adopt? So that is one clue things are not likely to work well.

Another clue is to ask what professional development is going to take place? And will it be subject specific or just tool specific? What do I mean by that? Well a session on “how to use Google Docs” is tool specific. “How to use Google Docs to teach {specific subject}” is more specific to pedagogy. One is generic and unlikely to have any impact on the way something is taught (in which case ask why are we doing it at all?) while the second is geared towards making a difference in how a teacher teaches and students learn.

I’ve been seeing this for 30 years now. When will it end?

Wednesday, April 22, 2015

#CSK8 has been nominated for a Bammy Award in Education

#CSK8 is the Twitter chat community and online discussion that is being run by the CSTA K8 task force. In a short period of time it has built a large community of educators helping each other with ideas and support for teaching computer science in the pre-high school grades. There is a chat taking place tonight (April 22 at 8:00 PM Eastern time BTW) I hope you will join us.

This effort and community has been nominated for a Bammy Education Award. What are the Bammy Awards?

From the About the Bammy page:

The Bammy Awards is a cross-discipline honor that identifies and acknowledges the extraordinary work being done across  the entire education field every day-- from teachers, principals and superintendents, to school nurses, support staff, advocates, researchers, school custodians, early childhood specialists, education journalists,  parents and students.  The Bammy Awards were created to help reverse the negative national narrative that dominates the education field.

To vote you do need to register and log in. No charge and I have not seen spam from this in the past. Just a few brief updates on the process. 

The voting starts at the category page - http://www.bammyawards.org/nominations/index.php?option=com_jreviews&Itemid=54&url=bammy-awards/general-academy-awards_s5/

Select a category (in this case - Twitter Chat Community  ) Find and click on the nominee you want to vote for.  The #CSK8 nomination may be on the second page depending on how you sort is set on the page.

When you click on the description of the entry you will be taken to a screen with a Vote Now hot link. That will open up a chance to give a rating and write a review to support your vote. Give a high rating (Please!) and write how the CSK8 chat community is a valuable resource for you. We thank you for your support!

Tuesday, April 21, 2015

Trust and Computing

No Cloud I’ve been thinking a lot about the issue of trust in computing lately. It’s actually something I started thinking about almost 40 years ago when I had my first job developing software. At one point in our design work a couple of us started talking about what we call “threat analysis” for the software we were developing. Specifically we talked about ways the software could be compromised or manipulated to steal. We wanted to make sure the software was safe but clearly we were aware of the great power and responsibility we had as software developers.
At the same time another group in the company was working with a clothing manufacturer. During testing when the older manual system and the new computerizes system were running in parallel it became obvious that something was going wrong. The police were called and an undercover operation was set up. Not long after a number of employees were arrested for running a major inside theft ring. The old system had been compromised and only the lack of ability to manipulate the computer system allowed the thefts to be discovered.
Any system can be compromised with the right access. People need to be able to trust other people or the system breaks down. As computers become increasingly integral to our lives the ability to trust our systems and the people who design, create and operate them becomes more important. Can we trust the people who have our data?
The image above is something of an eye opener for many people. The cloud is something of a myth. What we call the cloud is just putting data and/or applications on someone else’s computer. Can we trust the people who run those computers? And if we can how far can we trust them?
Constant news stories about people breaking into corporate data systems and stealing credit card data, login data, and other personally identifying information bring home to importance of those systems being secure. For most of our personal data, email and cloud storage of files and images, we are increasingly trusting third parties, Google, Microsoft, Amazon and others, to store our data for us. It’s easy. It’s cheap. It’s easy to assume they can do it better – what ever that means. We trust them to keep the data safe from malicious agents on the internet. And we trust them, the companies, not to misuse our data. We trust them not to share it with governments without permission or court order. We trust them to not sell the data to others. In short we do a lot of trusting. Should be be trusting them so much? That is a hard question to answer and I think many of us have companies that we trust more or less than others.
The Computer Science Curricula 2013 guidelines (PDF) include recommendations that Professional Ethics, Privacy and Civil Liberties as well as Security Policies, Laws and Computer crimes to be included in a computer science curriculum. In fact while the guidelines talk about teaching many of these issues in a standalone course the committee made a point that these issues must also be discussed in context of different courses. I think this is important. And I think it needs to start young.
Where I teach we talk about many of these issues in our Explorations in Computer Science course. We try to work it in during our other software courses as well. I’m thinking we could do it better though. I think we all want people developing software who have solid ethics and who understand and value the need to be trustworthy. I think we need to be careful when teach teach students to help them understand that not everything that can be done should be done. We need people to consider the consequences, intended and unintended, of the work they do. Our future depends on it.

Disclosure: I was privileged to be a member of the ACM/IEEE Joint Task Force that wrote the CS 2013 recommendations.

Monday, April 20, 2015

Interesting Links 20 April 2015

Daffodils are blooming, golf courses are opening, and buds are appearing on trees and bushes. Looks like we’re going to have spring in New Hampshire after all.  We’re well into the fourth and final quarter at my school. It’s a great time of year. And I have a nice harvest of interesting links to share. Hope you find something you can use here.

imageMicrosoft is usually good about making platforms that can be  developed for so I was pleased but not surprised to see this Developing for the Microsoft Band Link Round-up (Channel 9) If only I could think of an app I wanted to developing I might buy one.

Mark Guzdial on BBC [] giving away 1 million mini computers so kids can learn to code: Prediction — little impact on broadening participation. I put in my two cents at Is the BBC’s ‘Micro Bot’ the Silver Bullet

Code Kingdoms teaches kids JavaScript through a puzzle adventure game: I haven’t played with this yet because it seems to only be available in the United Kingdom. Any one out there have a review for me? 

Ways Men In Tech Are Unintentionally Sexist Some things we need to be aware of in the classroom. Not just we as teachers but also making sure we don’t allow this sort of thing on the part of our students.

I ran into this quote last week. "That's the thing about people who think they hate computers. What they really hate is lousy programmers" - Larry Niven It’s one of those things that makes you really think. What does one mean by a lousy programmer? Is this user interface design? That’s probably part of it. Bug in code? Part of it as well. It’s complicated but something we need to work on both as people who develop code and people who teach people to develop code.

5 Myths Busted About Hackathons and The Maker Community Interesting article. I’m still trying to decide if hackathons are that helpful or not. Opinions?

Great Free Resource to Learn Game Development (Channel 9) Seems like a lot of options are available these days.

As encryption spreads, U.S. grapples with clash between privacy, security This is a topic we have been discussing in some of my classes.

Sheena Vaidyanathan, CSTA Board Rep for K-8, blogs on the CSTA blog about How to prepare educators to teach coding/CS

Saturday, April 18, 2015

Learning From Tic Tac Toe

The other day I created some teams (3 to 4 students per team) and asked them to create a program to play tic tac toe – a human player against the computer.image I have asked students to create a human vs. human version of tic tac toe in the past. It’s a nice little project that requires they use a lot of concepts that they have learned. Adding an AI is a bit more though so that is why the teams. Since I have never coded a tic tac toe AI myself (how did that not happen?)  I decided that I had to write a version myself.

I had a version of human vs. human tic tac toe to use as a base so the first thing I did was modify that so that it would call a module for find a computer move and incorporate that into the game. First learning – this is not as trivial as it sounds. Oh it’s not hard but one really has to think it through or you wind up with weirdness like the computer taking two moves or missing moves. It might have been easier to rewrite some key code rather than munging it up. Next time.

To test the code that allows the computer to move I made a very simple algorithm. I just randomly picked squares until I found an empty one. It worked. It allowed me to test the rest of the program but of course it didn’t play very well. Step two was to check to see if there was a square I could move in to win. A short time later I had a group of 24 if statements that checked every possible winning opportunity.

Then I made a beginner mistake. I copied and pasted that code and changed checking for “O” into checking for “X” to find a place where the computer needed to move to block a win by the human player. It took me a day away from the code to realize that this doubled the chance for me to make an error on this sort of check. I know better than that! So I broke the code out and created a single method that took as a parameter either an “X” or “O”. Much simpler code and it opens the door for me to more easily modify the program so that the computer can play as either “X” or “O”.

Since them I have done a bunch of refactoring and breaking complicated code out into individual, more simple, methods. It should make for good discussion when we talk about these programs as a class.

My students all want to try their hand against my AI.They helped me refine my program by finding things that I missed by not thinking things out enough. Students liked that of course. Now they don’t win anymore. In fact they frequently lose to the AI. That surprised me at first. I watched how they played and it became clear. They were so totally focused on what they could do to win that they missed seeing what the computer could do to win. That’s something else we’ll talk about in class. The computer doesn’t miss those opportunities.

BTW if you want to see a graphical solution of tic tac toe, the cartoon xkcd has a useful diagram.