Digital Rhymes with Brittle Which Rhymes with Travel?

Last week I was traveling on vacation with my family, and next week I’ll be traveling on vacation with my family. This week I’m recovering from / preparing for traveling on vacation with my family, plus I spent some time eagerly preparing some new material for my Fall teaching. So, this post will be short; but it will also involve the traveling. The point I want to raise here regarding traveling and computer programming is that one little glitch can make everything really wrong; and novices need to manage this.

At the beginning of my trip last week, I drove my family from Grand Rapids (MI) to Chicago, visited the American Girl store and the LEGO store, went to long-term parking at a hotel near the airport, took a shuttle to the airport, checked two booster seats, gate-checked a couple of carry-on pieces of luggage, took a sequence of two planes to San Francisco, arrived around 1 a.m., took a taxi to the hotel near the airport where we had ahead of time managed to get a not-too-expensive reservation, in the morning returned to the airport for our rental car, did a 357-mile drive (stopping at the Golden Gate Bridge and Real Goods) to Klamath for a dinner starting at 7:00 featuring locally-caught salmon and locally-grown vegetables, and then checked into our reserved room at Motel Trees (across the street from Trees of Mystery
Trees of Mystery

before their office closed at 10 p.m. Now, think about all the details that could have stopped that progression. Entering the long-term parking required scanning a bar code; what if it hadn’t worked? The shuttle went every half hour, and the traffic around Chicago was heavy; if we were delayed enough, we might have been late for our first plane. And it would have been illegal for my two youngest children to ride in our rental car — or the taxi! — if the booster seats hadn’t made it; if that detail had gone wrong, we would have been stuck in the San Francisco airport at 1 a.m. ff.(!) hoping our seats would magically show up, or trying to find replacements for them.

And my point here is that there are some similarities between that situation and computer programming. What happens when one semi-colon is missing from a Java program? And what happens if you try to store a floating-point value in an integer variable? And what if someone uses “index <= array.length” as the condition in an old-fashioned for instruction? Or for a more subtle example, what if one bit is wrong in a compiled program?

When students start to learn computer programming, they need to understand that having one little detail wrong can completely derail the progress of a computer program. Traveling is one example of an analogous situation; what other ones can you think of? It might even be appropriate to mention chaos theory. (Doesn’t it seem counterintuitive that deterministic ‘robotic’ machines may be described as ‘chaotic’? ;-) )


Posted in Uncategorized | Leave a comment

I Also Prefer to Keep My Distance from Grading

Considering my previous posting of July 3, “Consider Using [Albeit Silly] Pop Culture to Illustrate Computer Science”, you might expect I’d like Yoav Yair’s Distance Learning column, “Did You Let a Robot Check My Homework?” in the June 2014 issue of ACM Inroads (pages 33-35), considering the following material in it: “… something completely different (to borrow the Monty Python phrase).”

What I like more substantively about that article is its indication that robots (OK, software) could do grading instead of instructors really needing to do it. Hear, hear! I really dislike grading. After graduating from college, I hung around my alma mater working as a computer technician and a course assistant, and once when some professors interviewed me for a position as a teaching assistant, one of those typical interview questions they tossed at me was what I most disliked about such a job; without any hesitation, I declared, “Grading!” It’s tedious and mind-numbing and pretty much a downer, ‘sniffing’ through people’s hard work to try to find things they may have done wrong. Since I became an instructor rather than a course assistant, I’ve been happy to offload the task of grading onto (advanced) students who work as my course assistants, so I don’t have to do that onerous task of grading myself!

Though one bit of skepticism I have about the idea of automated systems doing grading (instead of instructors) is whether that scheme may scale down: the scenario that the article discusses involves thousands or millions of assignments; if you have only thirty or so students, then could the overhead required to arrange to automate the grading make the scheme actually not worthwhile? (Rem. there’s an analogous situation regarding whether ‘good’ sorting algorithms such as mergesort scale down.)

And then, I want to note some positive aspects of one particular occasion when I worked as a grader. Are you familiar with the name Jeffrey Ullman? He’s been doing various things recently, but I’d classify him with Donald Knuth and others as one of the people responsible for a fair amount of classic (or fundamental?) Computer Science, e.g. ‘the dragon book’, Compilers: Principles, Techniques, and Tools (2nd edition, 2007). I once worked for him as a teaching assistant, and while all the classic work he did of course appeared impressive to me, the way he actually impressed me the most was that he assigned students work to do which definitely required them to demonstrate knowledge of the course material, yet the work was also easy to grade! For example, the correct order of a graph’s nodes for some shortest-path algorithm or something needed to be say 1,3,4,2,5, and students really had to know the material to get that correct answer, and it was also extremely easy for me to check whether they had that correct answer or not. Ever since that experience, I’ve aspired to design assignments like that.

Then, recently, I’ve been involved in another situation where the way students’ work is assessed is notable: The ACM International Collegiate Programming Contest. I was rather ignorant about it until 2003, and then I started taking my university’s students to it each year, and since 2010 I’ve been serving as a Site Director. In my region (East Central North America), the way assessment goes is as follows: if a program submitted by a team of students successfully compiles and runs on some test data, producing correct output — kind of like with “1,3,4,2,5″ above — then they get credit for it; otherwise, they don’t. And to avoid the possibility that students might ‘can’ the desired output, not all the test data is revealed to them during the contest. Thinking about it, this is another situation like my work with Jeffrey Ullman where grading has been made relatively easy.

Now as I’ve said, because of my experiences I aspire to arrange effective but also efficient assessments. Though like Blaise Pascal (though some think it was Mark Twain) said about writing a letter shorter, I don’t always have time to make assignments that way: it’s easier to just assign anything, e.g. textbook exercises. One thing I do is very similar to the programming contest and/or unit testing: I ask students to run their programs on some specific inputs and submit records of these demonstrations; then when I grade, I look at these demonstrations actually before the programs, checking for what I know to be the correct results — e.g. maybe like above, “1,3,4,2,5″.

With that, I can cover two of the “three key conditions that enable students to benefit from feedback on their academic tasks” which Yair discusses: [1] understanding what ‘good performance’ is (the demonstrations need to work), and [2] understanding what their own current performance is (the demonstrations did or didn’t work). Then, much of grading may reduce to verification. Except, there’s the third condition for grading to be beneficial: [3] “identify means to close the gap between [...] good performance [and] their own current performance”. This is hard. In fact, this condition may actually be fundamental teaching.

I’m going to leave this commentary at that, for now. But what do you think? How do you feel about grading, and would you say that you use any ‘tricks’ to manage it?


P.S. While writing this I actually did a Web search on Jeffrey Ullman, and one document said, “He is currently the CEO of Gradiance.” This Fall I’m teaching “Compiler Design and Construction”, and I’m using the dragon book, and the back of it says, “Gradiance is a Web-based homework and lab assessment resource for students and instructors. For Compilers it offers a collection of homework sets…. For more information about Gradiance, please visit” Hmm, I think I should check this out! But doing so takes time…. (;-)

Posted in Uncategorized | Leave a comment

Consider Using Pop Culture to Illustrate Computer Science

At a small Computer Science education conference I attended a few years ago, the dinner speaker showed how the lectures we give could be enlivened by music such as songs he played on his guitar. But what if you’re not so talented? What can normal people use to ‘jazz up’ their lectures?

Answer: YouTube, AFV, movies, and other elements of popular culture! (;-)

Of course, some television programs, movies, etc. naturally illustrate Computer Science by explicitly featuring computers, robots, programs, discrete mathematics (as in Numb3rs), etc. Using such material is obvious. My point here is for you to consider further pop-culture material that you could use to illustrate Computer Science even though it actually does not explicitly feature computers.

Here are some examples:

  • My favorite material from popular culture usable for teaching Computer Science is the following scene in the 2001 animated movie Shrek:

    Ogres... are like onions.

    Shrek: “For your information, there’s a lot more to ogres than people think.”
    Donkey: “Example?”
    Shrek: “Example? Okay. Uh… ogres… are like onions.”
    Donkey: “They stink?”
    Shrek: “Yes. No!”
    Donkey: “Oh, they make you cry?” [...]
    Shrek: “No! Layers! Onions have layers. Ogres have layers. Onions have layers. You get it? We both have layers.”
    Donkey: “Oh… you both have layers…  You know, not everybody likes onions.  Cake!  Everybody loves cakes!  Cakes have layers. [...]  You know what else everybody likes?  Parfait.” [...]

    Consider showing that clip to enliven an otherwise dry presentation about networking or “the interacting layers of a typical computing system” [ACM/IEEE, "Computer Science Curricula 2013"]. (One albeit low-quality copy of this scene is available on YouTube via

  • In an introductory course, when you present “||“, consider showing the video “It’s a pause” from America’s Funniest (Home) Videos / AFV
  • If you display the alphabet, e.g. demonstrating how a char variable can run through the values of the alphabet via a loop, consider showing Sesame Street’s Big Bird singing “AB-CDEF-GHI-JKL-MNOP-QR-STUV-WX-YZ” (
  • When you present recursion, consider showing some of Dr. Seuss’s The Cat in the Hat Comes Back; e.g.:
  • If you present coin-flipping, then consider showing the beginning of Rosencrantz & Guildenstern Are Dead (
  • If you teach your students both Java and C (or C++), then when you present how “.” means slightly different things in Java versus C/C++ (“->” is pertinent), consider saying that “.” in Java and “.” in C/C++ are “false cognates” a.k.a. “faux amis”, with illustrated examples in English and another human language you know.  Here’s such an image for French:
    cover of First 100 Words in French(The most pertinent example there is “biscuits”, which means something related but different in American English and French.)
  • If you give an assignment to solve a maze, then consider including a picture of a maze from a movie such as Labyrinth or Harry Potter and the Goblet of Fire.
  • If you give an assignment to write a program which would ask the user several questions, then consider illustrating it with some material featuring the Bridgekeeper of Monty Python and the Holy Grail.
  • If you want to illustrate how a binary search tree (BST) can become unbalanced, consider showing some material from Chicka Chicka A B C / Chicka Chicka Boom Boom; e.g.:

    (The tree is initially straight, then adding letters makes it lean — and then things collapse!)
  • Lastly here, if you present deletion of a value at a BST node which has two non-null children, involving obtaining a replacement value by traversing one step one way and then a longer jump (many steps) the other way, consider showing the Time Warp from The Rocky Horror Picture Show:

    Dr. Everett V. Scott: “It’s just a jump to the left.”
    All: “And then a step to the right.”
  • These are just a few examples of pop culture usable for teaching Computer Science; I’m sure you can find more. I think a yogurt commercial once illustrated inclusive disjunction; Jeopardy once illustrated the least-common-multiple function (which one could present in a course on Discrete Mathematics); and so on. This material certainly is silly. But remember: a common suggestion for doing a presentation is to start it with a joke!



P.S. There’s one such piece of material I’m actually trying to find: I vaguely recall seeing a movie starring someone like Jim Carrey or maybe John Cusack who keeps trying to win a radio contest involving choosing a sequence of about seven directions, left-left-right-left-…. I want to use this material to illustrate navigating a BST. If you could help me find this material, I’d appreciate it.

Posted in Uncategorized | Leave a comment

Beware the MOOC, my son! The jaws that bite, the claws that catch!

I was feeling rather masochistic this morning and decided to read the “Terms of Service” of Coursera and Udacity. Much of it reads like the usual EULA, but I was stunned by one issue:

[T]he following are types of uses that Udacity expressly defines as falling outside of the definition of “non-commercial”: … (e) the use of Educational Content by a college, university, school, or other educational institution for instruction where tuition is charged.

You may not take any Online Course offered by Coursera … as part of any tuition-based … program for any college, university, or other academic institution without the express written permission from Coursera.

This seems to forbid the use of a MOOC in a “flipped classroom,” where frontal lectures are replaced by listening to the recorded lectures, and class time is devoted to discussion and problem solving (perhaps of the homework problems posed within the MOOC). Many people consider the flipped classroom to be an effective use of MOOCs, so it is amazing that both companies are putting up obstacles.

At least with Coursera, all the students can write them a letter asking for permission :-).

Posted in MOOCs, Moti Ben-Ari, Uncategorized | Leave a comment

Wisconsin Now Counts Computer Science as a Mathematics Credit

On December 11, 2013, Governor Scott Walker signed into law Act 63 (aka SB 51), which among other things requires 3 years of math and science for high school graduation. This law also allows 1 year of computer science to count as math credit.

The first picture shows Governor Walker at the podium addressing the audience at Solomo Technology, a social media company and heavy user of computer science, where the signing was held. Behind him is Liz Eversoll, the Founder and CEO of Solomo Technology. The second photo has him signing the bill into law.

Gov Walker speaking-smallerGov Walker signing bill-2in

The final picture includes Lori Hunt and me with the Governor holding the Governor’s Proclamation for CS Education week in Wisconsin. Lori and I are founding members of the CSTA WI-Dairyland Chapter.

Gov Walker with  Hunt and Kmoch and CS Ed Week Proclamation-smaller

I’ve attached the Wisconsin 2013 CS Education Week Proclamation. With help about 5 years ago (from Stephanie Hoeppner in Ohio and Bob Hillestad in Wisconsin) , I was able to get the first Governor’s proclamation.  Since then I’ve been able to get the current governor to create this proclamation each year for us. In our case the person I contact is the Proclamation Director in the Governor’s Office, Constituent Services. I’m sure each state has a similar person. Perhaps next year we’ll see many more of these proclamations.

Posted in Uncategorized | Leave a comment

Fewer Female Software Engineers than thought?

Although there are some signs that the number of women involved in computing such as software engineers has been increasing, an engineer at Pinterest, Tracy Chou, has discovered that based on 107 companies, that number is about 12%,  roughly half that reported by the Bureau of Labor Statistics. Much more work is needed in this research , but Ms. Chou’s numbers “at least tell us which companies are doing a better job of hiring women to build their software”.

A short but worthy read.

Posted in Uncategorized | 1 Comment

Controversy in MOOC-land

While MOOCs may seem to be an unstoppable bandwagon, a recent article in reports on controversy, mainly driven by concern from institutions and faculty members that MOOC content will be used as an excuse to cut funding. The linked articles are quite interesting. See: “The Traditional University Lecture Is Dead” at

Posted in MOOCs, Moti Ben-Ari | Leave a comment

One reason we have so much engineering and so little computer science taught at US high schools.

Mark Guzdial wrote a great blog on October 28, 2013 on his excellent Computing Education Blog entitled “A Theory for why there’s so little CS Ed in the US”.

In the second section entitled “Why is there so little computing education in US High Schools”  he talks about Engineering Education Research as an example to support his hypothesis on reasons for the lack of Computer Science Education Researchers (CER).

At the end of that paragraph, he states

“Engineering has a significant presence in K-12 education today.”

While this is true, has the increase in engineering education research in the last twenty years led to the increase in the presence of engineering in K-12 education? Indeed most of us in K-12 hardly ever deal with educational researchers for any reason.

I think the reason is that groups like Project Lead the Way (PLTW) offer an “off the shelf” high quality program, vetted by engineers.  The attractiveness of this is that the school and students get access to a number of well-written up-to-date courses and they also get access to intensive professional development for teachers who want to teach a particular PLTW course.  Teachers must not only take but also pass the two-week intensive summer course before being allowed to teach a particular course.  There is regular monitoring of schools in terms of offering a minimal 3-course sequence of engineering courses and evaluating how well these courses are being taught.

In computer science we have really never had such a program available.  The AP is not such a program.  If a school wants to teach a computer science course, they have to find a teacher who is willing to put together a course syllabus, and then teach that course.  (For AP, the course must be audited for fidelity).  There really isn’t any professional development required to teach any kind of computer science course in most states.

So if a principal wants to expand his/her school’s  academic elective offerings and is shown the PLTW complete program versus creating a computer science program from the many resources out there, which one is that principal going to pick?

Even though there is a substantial cost for PLTW, in most cases this is paid for out of Carl Perkins funds, so in most cases, the principal will take the easy route and take complete program.  This happens again and again at schools in the Milwaukee area, some of which had pretty exciting computer science programs until most were cut for a variety of reasons.  PLTW fits well into CTE.  Computer science has most often chosen to avoid CTE, so the Perkins money goes with PLTW.

We have a start:  the Exploring Computer Science with it’s great, free curriculum and excellent PD.  However even this doesn’t go far enough – the curriculum doesn’t require that teachers get the PD, so there is no way to know if schools teaching Exploring CS are teaching it with fidelity.  This is exactly opposite the PLTW model where teachers are required to follow the curriculum.

Some years ago I mentioned the PLTW model to “higher powers” dealing with CS education and was ignored.  Now that PLTW is piloting their complete curriculum for the APCS Principles course with their required PD and their regular evaluation, perhaps more will take notice of this model.

I’m sure PLTW is already considering additional computer science courses at the high school level and computer science experiences at the middle school level.  All will have high quality curriculum, PD and monitoring as part of their model.  This may not be the total answer (it is expensive), but certainly moves toward a high quality computer science experience for high school students that we all crave.

(For the record, I am not associated with either PLTW or Exploring Computer Science).


Posted in Uncategorized | 1 Comment

A Broader View of STEM

STEM 2.0 – Transformational Thinking about STEM for Education and Career Practitioners. Jim Brazell, international speaker with two decades of experience leading innovative design projects in education, technology and business innovation, published this in July, 2013. He addressed the STEM shortage and problems in the current definitions of STEM, arguing that labor market requirements are for STEM-based skills across many jobs not typically classified as STEM. The net effect, he argues is transformation of social institutions.

“This paper points to problems in the theoretical underpinnings of dominant US Education and workforce definitions of STEM, while presenting a broader conceptual framework for practitioners to understand STEM in terms of innovation.  Today, exigent labor market requirements are for STEM-based skills across many jobs not typically classified as STEM.”

Posted in Uncategorized | Leave a comment

A Different View of the STEM “shortage”

The article by Robert N Charette, contributing editor of IEEE Spectrum, posted on their site on August 30, 2013 has certainly drawn much interest. I and colleagues of mine do look at this issue much differently. The “shortage”as defined in Mr. Charette’s article may or not really exist. The definition of STEM may be problematical. There is much to be said for his suggestion near the end that there is a STEM knowledge shortage.

The shortage in our minds is really in certain segments of the population. To be sure there is an undeniable and very real shortage in the number of females studying and in engineering and computer science careers. There is also an even more extreme shortage in the number of males and females of color in both of these fields. These are certainly shortages that need to be rectified for a number of reasons.

Just today in the Milwaukee Journal Sentinel there was a featured story of an all-girls high school engineering class being offered in Kewaskum, WI, about .40 miles north-northwest of Milwaukee, WI. An early paragraph in the article really “says it all” about the shortage in this case of females in engineering.

Women comprise more than 20% of engineering school graduates but only 11% of practicing engineers, according to the National Science Foundation. Only about 30% of the 14 million Americans who work in manufacturing are women, a study from the National Women’s Law Center noted.

This article which interviews the teachers and creators of this class as well as engineers and collegiate engineering faculty is definitely worth taking a look at. These shortages are very real.

Posted in Uncategorized | Leave a comment