Tuesday, March 28, 2017

Math vs Programming

MathTake a look at these two equations. I found the first one on Facebook. The second is my first attempt at rewriting it for the computer. What is the answer?

Well the first answer is 1. The second answer is 9. How is that possible? If you think about it there is a sort of implied parenthesis around 1/3. It’s pretty clear in the more traditional mathematical expression that one is to divide by one third and not 1 divided by three. imageA more accurate expression for the computer would have some parenthesis to make things obvious. That would give one the answer 1 that the traditional expression provides.

We see this sort of thing a lot – students assuming that equations in programming are exactly the same as the mathematical expressions their are used to using.  The most common issue is students thinking that the = sign allows copies from left to right as well as right to left. After all in mathematics the = sign means that both sides of the equation have the same value. That is not the same think as the = sign meaning copy the value on the right into the location on the left.

Some functional languages do things differently. The WeScheme IDE and DrRacket used by Bootstrap for example. That curriculum takes a much more algebra focused look at computer science. Or is that a more computer science focus approach to algebra? Either way it seems to be very effective. (Note that Bootstrap training is available though CSPdWeek and other venues.)

Those of us using other platforms though have a lot to contend with as we teach students how to build expressions that mean what students think they mean. Is it worth the effort? I tend to think so. But it is confusing at times.  Days like to today make me rethink things.

Computer Science Teachers Association T-shirt Campaign

Are you a computer science education super hero? You know you are so now you need the t-shirt. Get yours here and also support the computer science teachers association. cs hero

Just the thing to wear to the CSTA conference or really any education event. I would love to see lots of them at ISTE to let people know that CS educators are there

Saturday, March 25, 2017

CSPdWeek: Free Professional Development for many K-12 Teachers

The people I talk to who went to last year;s event rave about it. If you are looking for some good professional development this is well worth looking into.


Thanks to funding from Infosys Foundation, NSF, NCWIT, and CSTA, CSPdWeek is *on* again for next year: July 17-21st, 2017

. CSPdWeek is a distinctive cross-curricular event that offers high-quality professional development for teachers planning to teach any of the following: 

  •       AP CS Principles
  •       AP CS A (Java)
  •       Exploring Computer Science
  •       Bootstrap

Each of these week-long workshops will be led by leaders in the field. In addition, counselors are invited to attend half the week (2.5 days) for professional development. 

Please share this email with anyone planning to teach computer science in K-12 during the 2017-18 academic year, as well as counselors at high schools. Extended details on each of the CSPdWeek tracks are below. Information and application materials are available at: http://www.cspdweek.org

Colorado School of Mines is excited to host this exceptional event.

Thursday, March 23, 2017

ACM and CSTA Announce Cutler-Bell Prize Student Winners

Make no mistake I think the Cutler-Bell Prize is an outstanding award. I love that it recognizes early computer scientists (high school students!) for outstanding achievement.

This year's winners appear (based on the names) to be computational focused magnet schools. On one hand that such schools exist is great and even exciting. On the other hand I worry about the kids who have great interest in computer science but who don't get the opportunity to spend several high school years learning the cool stuff and working on great projects. Will the publicity for this award motivate more school districts to set up more similar magnet programs? Or perhaps at least look at expanding the CS offerings they offer? I hope so.

In the mean time I congratulate these students. It looks like they have done some serious work and I wish them great success in the future.


ACM and the Computer Science Teachers Association (CSTA) have announced the 2016-2017 winners of the Cutler-Bell Prize in High School Computing. Three high school students were selected from among a pool of graduating high school seniors throughout the US. Eligible students applied for the award by submitting a project/artifact that engages modern technology and computer science. A panel of judges selected the recipients based on the ingenuity, complexity, relevancy and originality of their projects.

The Cutler-Bell Prize promotes the field of computer science and empowers students to pursue computing challenges beyond the traditional classroom environment. In 2015, David Cutler and Gordon Bell established the award. Cutler is a software engineer, designer, and developer of several operating systems at Digital Equipment Corporation. Bell, an electrical engineer, is researcher emeritus at Microsoft Research.

The winners are Elizabeth Hu, Thomas Jefferson High School for Science and Technology (Virginia); Avi Swartz, Cherry Creek High School for Computational Biology (Colorado); and Aaron Walter, Yorkville High School for Computer Science (Illinois). Their submissions ranged from using data to study refugee migration models; determining type and quantity of protein components in biological samples; and a software program that evaluates students’ understanding of curriculum components.

Each Cutler-Bell Prize winner receives a $10,000 cash prize. This year’s recipients will be formally recognized at the Computer Science Teachers Association’s annual conference, July 8-11.

Tuesday, March 21, 2017

Datasets For Use in Teaching Computer Science

I found this thanks to the APCS A mailing list. 

CORGIS Datasets Project

The Collection of Really Great, Interesting, Situated Datasets

“The CORGIS Datasets Project seeks to make highly-motivating introductory computing experiences through simple, easy-to-pick-up datasets for beginners. We offer a wide range of libraries for many different programming languages and contexts. “

I haven’t looked at the libraries yet as they are for languages (Java, Python, and Racket) that I am not currently using but I would be if I were using them. There are also raw data sets in sql, JSON, and CSV formats. I use CSV files a lot and was very please with the look of the 43 data sets in that format. I can see some interesting projects ahead for my programming classes, data analysis in Advanced Placement Computer Science Principles, and even my freshmen course where we use EXCEL.

If you are interested in good data for real learning I recommend you take a look at https://think.cs.vt.edu/corgis/

Friday, March 17, 2017

Hip Hip Array

My programming courses are a semester long. That’s it. After that someone else gets to teach them more programming and computer science. A semester is not a lot of time  so we can only cover so much material. There are days when I really envy my friends who have students for years as in 2, 3, or even 4 year long courses. On the other hand I am finding that I am appreciating the basics more and more all the time.

Take arrays for example. I’ve been around long enough and coded enough that I understand arrays pretty well. I’ve done the who pointer arithmetic thing in C. And the use of offsets in assembly language programming. So I understand what is behind arrays in ways I don’t have near enough time to explain to my students. I think this understanding gives me a greater appreciation for this tool in my toolbox. I literally spent an hour or so last night just contemplating the beauty and power of a simple array. Add to that the power of arrays of objects and mind blown.

OK maybe I get excited easily. On the other hand in many ways writing code seems as new and cool to me as it did when I tool my first programming course over 40 years ago. If anything I am developing new appreciation for the simple less complicated elements of programming languages.  One doesn’t need all the latest and greatest bells and whistles of languages and libraries to have fun writing code.

Though that doesn’t mean I am giving up features like Array.Sort. I’m not totally crazy.

Monday, March 13, 2017

March Madness and Programming Projects

Yesterday was selection Sunday and the NCAA announced the teams entering the 2017 basketball championships. So of course I thought about programming projects. I mean there is data and something a lot of my students are interested in so it is a natural. Now there are already all sorts of automated bracket generating tools on the Internet. LOTS of them. But being me I needed my own.

The first thing I did was build a data file. (NCAA 2017 seeding information) That link gets the comma separated data file. It looks in part like this:

image

It’s pretty basic with the seeding number, the university name and for most of them their record. Once I had that I could write a program to read in the data and display it. My next step was to write code to semi randomly (its weighted by seeding) pick which team went to each next step of the competition. I get graphic so I generated the following:

image

I’m thinking I could let students do something more simple in output. I did this with parallel arrays but I can see creating a class making some things easier. In any case I get to p[lay with reading and parsing data, building and processing arrays, and other data manipulation. There are many variations I could do here.

Students could create their own schemes for generating brackets. Or they could write code that lets the user select which teams would advance. I’m open to other suggestions as well. What sort of project would you assign with this data?

Sunday, March 12, 2017

Conferences for K-12 Computer Science Educators

If you are a K-12 teacher looking for conferences about using technology in education there are many conferences one can go to. If you are a post secondary school computer science educator there are a good number of conferences you can go to. If you are a K-12 computer science teacher you have fewer options. Sure you can go to the higher ed conferences and look for things applicable. And you can go to tech education conferences and hope for some good CS education content. But if you really want conferences with a lot of value for you in particular there are fewer options. I’m going to go over a few I like.

CSTA ConferenceThe CSTA Annual Conference is of course your number one event. Workshops, concurrent sessions, networking with CS educators from all over – this conference has it all for K-12 CS educators. It’s my all time favorite. And it is growing in sessions and attendees every year. And it is during the summer so you don’t have to miss school to attend. You should be there.

The Amazing SIGCSE 2017 Logo, in blueish and greenish.SIGCSE is my number two choice. Sure it looks like it is for higher education people but there is also a lot for K-12 people. The sessions on how to teach work for all levels. The chance to talk to great educators is a big plus as well. Friday has a lot of special sessions and events for K12 people My big problem is that it is during the school year. With snow days like we have here in New Hampshire I feel bad about skipping school to go.

isteISTE I really like ISTE. While it is really about using technology in education I have been seeing more and more computer science content in recent years. Plus it attracts a lot of people who see themselves as teachers of some other subject first and computer science second. So you get to meet some people who teach CS but who don’t go to CSTA or SIGCSE. A bunch of big computer companies exhibit here so I spend some time visiting with them. I get to ask some good questions and learn stuff which makes it worth while.

imageTCEA is also a big conference about using tech in education but Texas has a lot of computer science education and that makes TCEA stand out for me. Like ISTE, TCEA has a lot of teachers who are not full time CS teachers. There are also more CS sessions than a lot of other ed tech conferences and with its size there are a lot of networking opportunities.

HomeA year ago I would not have brought up SxSWEdu (South by Southwest EDU)  SxSWEdu has a reputation of being for and about tech companies and startups trying to sell tech to teachers. This year that was a lot of computer science education content. It may be too early to see if this continues but I hope it does.

Other than SXSWEdu I’m been to all of these multiple times. I’ve learned a lot from these conferences over the years. I’d love to hear other people’s opinions both about these conferences and others I might have missed. Where do you go for K-12 CS learning?

Friday, March 10, 2017

What’s New in C# 7.0 for Beginning Programmers

Well it looks like Visual Studio 2017 is out. I've installed the community edition on my Surface (not enough disk for everything I'd like :-( ) but enough to try some things out. I found this awesome blog post on what is new with C# 7. I wonder if there is one coming for Visual Basic?
As usual, many, perhaps most, of the improvements are exciting to professional developers or more advanced students. I teach raw beginners and I don’t have near enough time to cover as much as I would like. But there are a couple of new things in C# 7 that I think I will use with my students.
The improvements in out variables will be useful for example. I use TryParse with my students a lot and being able to declare the variable inside the TryParse will save a step and prevent some errors. Maybe create others but that is ok.
C# 7.0 allows _ to occur as a digit separator inside number literals now. This is cool. Especially with binary literals. This may let me do some additional cool stuff with Binary flag bits and maybe make parsing some numbers easier or more interesting.
Well that is a first look from me. I’m still playing with things and hope to have some insights into what is new with Visual Basic and Visual Studio the IDE soon. IN the mean time, what is everyone else finding interesting?

Tuesday, March 07, 2017

Infosys Foundation USA Asks Why Do You Make #WhyIMake

Thanks to a Facebook link I found a video interview created by Infosys Foundation USA. on why he “makes.” This lead to one with Adam Savage of mythbuster fame on the same topic.Infosys Foundation USA. is asking other people to share why they make using the #WhyIMake hashtag. So I’ve giving it a go.

I’ve always like making things. As a kid I made push carts and push cars using wheels of all sorts. Mostly stuff we found discarded along the streets. Later we found bamboo poles that carpet had been rolled around for delivery and made interesting things like pole vault pits. Amazing we didn’t kill ourselves.

As I got older making became somewhat more practical. Installing shelving in closets, building decks and docks, and other things we used to just call do it yourself work around the house. I think of it as making though. It’s one thing to install pre-fabricated materials and something more (better? Maybe. Different? for sure) to take and repurpose things in ways they were not originally created to use.

Much of the making I do though is around software. It’s a blast to make some new creative program to do something interesting. Sometimes even useful.  I’ve made games to play, demos to show and teach concepts, and just to solve small specific and perhaps just personal problems.  Sometimes there are existing tools to do the job. The other CS teacher at my school has written programs to randomly call on students for example. I wrote my own. Not because his was bad or inadequate but because I had my own vision that was slightly different. And because the exercise of creation was just plain fun.

That gets to the heart of it. Making someone of my onw design is not always the easiest thing to do. And it is not always the most cost effective. Pretty often though it is the most fun.  Making things is fun. And while making can be educational and sometimes it can save you time and money most of the time being fun is reason enough.

Monday, March 06, 2017

Bit Rot or How do I read this data?

Last night I had a very weird dream. In it I was trying to recover the programs I wrote in college. I have saved most of them. Well in a manner of speaking. Some of them are on punch cards. Yes, I have 40+ year old punch cards in the attic. I can read them as they have the letters typed along the top. And I could probably figure out the hole punches if it came to that. On the other hand, more of my programs were saved on a DECtape. That was the subject of my dream FWIW.

Image result for dectapeWhat? You don’t know about DECtape? It was a proprietary magnetic tape for storing data. A powerful and reliable tool in its day. These days machines that can read one exist for the most part in museums and the occasional Canadian Nuclear power plant. Since I have access to neither getting the data off of my old tape seems unlikely.

This is a problem most of us do not pay much attention to. We think short term as in now or a few years. And yet time after time we have seen storage types become obsolete leaving access to the information stored on them inaccessible. Even when devices are still available often the media deteriorates. I’ve read a lot about Disc Rot as older CDs and other optical media are starting to stored deteriorate.

This is not a new problem. There are many ancient documents (word used loosely) that are difficult if not impossible to read because the language has been lost. We don’t know how many things were done in ancient times because the information was lost. Just look at all the theories and questions about how the Egyptian pyramids would built for example.

Some people do worry about this. I have heard that Apple, for example, has a vault with older computer hardware stored in case it is some day needed. And smart CIOs have plans to move data to newer data storage devices as they become commonly used.  I suspect though that most regular people don’t give it a second thought. We just assume that all our data will always be there.

If we’re careful maybe it will be. I typically move all the data from an old machine to a new one when I get one. Or I store the important stuff in “the cloud” assuming that someone else is keeping it safe and current. Over the years I have moved data from tapes to disks to CDs to USB drives to the cloud. Have I kept it all? Probably not. Without a good plan losing things is inevitable. Somehow I lost those student written programs of the 1970s. But I like to think I have kept the most important things. I’m thinking though that I need to talk about this with my students. If I don’t make them think about it will they see the problem on their own? Will they see it in time to do things about it?

Now if only I could get to that DECtape and see how bad the code I wrote as a student is.