Presentation Mode

Presentation Mode
=================

2016-12-07

by Richard White

It’s Computer Science Education Week, and for the fourth year in a row I’ve conducted presentations at our Lower and Middle Schools for an Hour of Code with 5th and 7th graders.

I’ve got a bit more on my plate than usual this year, so I tried to minimize time spent emailing/calling/coordinating with various administrators, tech coordinators, and teachers. I work with a great group of people who helped make some of that happen—our Middle School Tech Coordinator was instrumental in navigating some of that, and my Upper School director committed early to giving me time off from my classes to go conduct those sessions. Also, our Lower School Technology Integration Specialist took on some of the heavy lifting for the first time this year, identifying activities that might be well-suited for the 5th graders.

I’d been a little smart about things too: the Hour of Code webpages that I’d set up previously were still live, and a handy reference for those who wishe it. The presentation materials that I’ve developed over the years were pretty much ready to go as well, with some minor modification and editing. I’ve been switching from PowerPoint to LibreOffice, and my software on the laptop was good to go.

Now, how about that hardware?

Every presenter has their list of hardware that they need to be sure to bring along to a presentation, particularly if you’re going to be away from your home base for the day/week. What to bring with?

  • Laptop
  • Camera/cellphone for documenting event
  • Charger and charger adapter
  • Logitech wireless presenter (R400)
  • Lightning port-to-HDMI cable (spare)
  • Lightning port-to-VGA dongle (backup)
  • USB key with presentation materials (backup)

I’d been to one of the rooms I would be presenting in, and knew that it was probably already stocked with the various power supplies and cables that I’d need, but you never know. Most of the items on that list there are simply backups or replacements for items that I expect will already be there.

img_9764

I got to the room, got things set up, checked out the projector to make sure it was working, double-checked the video that I’d be running in the presentation for sound… I was good to go!

I went to grab a marker to write my name on the whiteboard… no markers? Oh, there’s one. An old low-odor marker for which someone has left the cap off. I tried to write my name, and it left a half-visible mark on the board. I went to erase it and… no eraser.

Who has whiteboards with no working pens or erasers?

I scrambled around a bit and managed to scare some up just in time for the presentation.

It just goes to show you…

Looks like I have a couple of additional items for my hardware list. :)

Keep it civil

Keep It Civil
=============

2016-11-22

by Richard White

Anyone who uses any kind of modern, social-media-related technology is aware of the kind of derision and scorn that can occur on the Internet. The awful GamerGate debacle is perhaps one of the worst and most serious examples, although trolling and flamewars can easily erupt from the most innocuous of situations.

As a professional, a teacher, and someone who likes to think of the Internet as being used mostly for good, and less for evil, I try to behave well, and part of that includes having a thick skin and/or erring on the side of forgiveness when it comes to things like comments on my YouTube channel.

Case in point: I recorded a brief video introduction to Free and Open-Source Software (FOSS) that I put up on YouTube a few months ago. In that video I discuss the FOSS operating system Linux, and mentioned in particular one particular distribution of Linux called “Ubuntu.”

Amidst the other nice comments people made on the video, there was this one:

Actually Ubuntu is not entirely a “free software”

“Is this guy kidding?” was my immediate response. “I spent a lot of time putting this video together, and he’s got the nerve to nit-pick about this? Ubuntu does bundle some proprietary software together with their distribution, so technically, he’s right. But, geez! That’s the thanks I get for all my work? Snarky comments picking it apart for minor points that practically nobody cares about anyway? Why, I ought to…”

I admit, that thought passed through my mind for a moment. But when I had the chance to think about it for two seconds, I realized that it might be me that was over-reacting. Certainly a more level-headed response was called for, and this is what I ended up replying to him in a follow-up:

That’s true! Although it’s a bit beyond the scope of this introductory video, none of the common Linux distributions comply with the Free Software Foundation’s strict interpretation of FOSS. (If you’re interested in those details, you can read about them at https://www.gnu.org/distros/common-distros.html). For the majority of Linux users, however, we’re happy to support and use those GNU/Linux distributions anyway. :)

I wasn’t expecting a reply back. If this poster’s comments had been intended as trolling, I hadn’t taken the bait, and for a troll, where’s the fun in that? So imagine my surprise when a reply did come back:

Yep. Thanks for making this video :)

An acknowledgment of my point, a “thank you,” and a smiley face? That’s quite a turnaround from the original comment, consisting solely of a criticism.

I’ll never know what the original intention of the commenter was when he left that note for me. I do know that a non-reactionary reply from me—fair, factual, and cordial—evoked a response in kind.

And that’s the Internet world that I like to live in!

keep_it_civil

Teaching CS: Am I doing it right?

Teaching CS: Am I doing it right?
=================================

by Richard White

2016-11-10

I’ve been teaching Computer Science in one way or another for a decent part of my teaching career, from courses using BASIC and Pascal on standalone PCs (pre-Internet!) back in the 80s to courses using Python and Java currently. I’d like to think I mostly know what I’m doing by this point.

It’s interesting to note, however, that there is a wide variation on how teachers work with students in a computer science classroom. From the AP Computer Science teaching community, I’ve heard of teachers who:

* have their students use Linux workstations exclusively
* have their students learn Java exclusively through graphics programming (Processing language)
* have their student use web-based Java compilers/interpreters
* have their students learn how to interact with a server
* have their students turn in all assignments on paper only
* have their students retrieve lessons and submit assignments using GitHub
* teach Java by having their student write mobile apps

It’s a stunning variety of strategies given that we’re all teaching the exact same course with the exact same curriculum.

And maybe that’s a strength of computer science, that there are lots of ways to make it happen. Whether you use Linux or OS X or Windows, whether you program using a terminal or an IDE, whether your programs interfaces are text-based or graphical… we’re all teaching computer science.

If there’s a downside to this variety, it’s that we may be tempted to feel that some of the other strategies–old ones that we haven’t had time to consider, or new ones that have just been recommended to us–might be better (more interesting? more effective? more appealing to students?) than what we’re currently doing. And so we feel compelled to give these new strategies some consideration.

In the last few years there has been an explosion of interest in Coding (which is not quite the same thing as Computer Science, but we’ll take what we can get, eh?). Hadi Partovi’s Hour of Code, MIT’s block-based Scratch language, the Raspberry Pi, the Arduino, the College Board’s new AP Computer Science Principles curriculum… and these are just the most popular of the recent technology and CS-based innovations that might merit some consideration by me, with an eye toward possibly incorporating some of them into my teaching toolbox.

How much should I stay the course and stick with what I think works best? How much of my limited professional time should I invest in consider these other possibilities?

More than teachers in any other subject area, we teachers of Computer Science need to wrestle with these questions. It’s a de facto part of our job description.

What is your specialty in teaching CS/technology? What topics do you add to your courses, because those topics work, or they’re part of your pre-existing skill set? Do you feel pressure to always be looking at The Next Big Thing?

For related reading: http://blog.acthompson.net/2016/11/too-many-cs-teaching-resources.html

The Poor Person’s Guide to Differentiated Instruction

The Poor Person’s Guide to Differentiated Instruction
=====================================================

by Richard White

2016-10-28

I’m a classroom teacher, and I’m a busy man.

I prep lessons, I develop and coordinate assignments for my students, and post homework assignments on the school website. I collect work, set up labs, write, administer, and grade tests. I develop caring relationships with my students.

It’s the best job in the world… and I come home *exhausted* most days.

One of the many challenges we teachers face is providing learning opportunities that are appropriate for the level of our students. In classes with an especially wide range of abilities, these can become problematic, logistically speaking.

In my Computer Science classes I typically have at least three ability levels in the same class:

1. students who have already had some experience with programming, possibly in a different language, and who are able to accomplish most assignments very quickly.
2. students who may be new to programming, but who are making reasonable progress. They quickly learn that programming requires attention to detail, and they typically pick up patterns—syntactical, logistical, procedural—after one or two exposures.
3. students who struggle to recognize the patterns, or who find themselves more easily frustrated by the puzzles posed by programming assignments.

I’ve experimented with a few different strategies over the years. Here are three that I’ve tried that have met with some success.

1. Below the Fold Progression
In this type of differentiation, students are provided with a text file (usually online) that contains a statement of the problem at the very top of the file. The file itself is actually a working copy of the problem, with the initial problem statement written as a multi-line comment near the beginning of the file. Much farther down on the page, where students can’t easily see it without scrolling, is another multi-line comment containing a pseudocode analysis of the problem. And finally, much farther down again, is the solution code itself. Students who want to work out the program without any hints are free to do so, while students who need a bit of help from the pseudocode can look at that as needed. Students who need much more support may find themselves looking at the actual program for assistance, and that’s okay if that’s where they are in their own learning process.

Example: ch06ex03.py (Right-click or Ctrl-click to download)

2. Page 2 Solution
In this strategy, something similar to the “Below the Fold” method is used, but now, the problem statement and its solution are printed on paper to be distributed to the students. The front side of the paper has the problem statement, and a complete working version of the code is on the back side (page 2) of the same piece of paper. This has the advantage of giving the students a concrete document to scribble on, and giving the teacher some ability to see which side of the paper students are looking at as they work on the program.

Example: four_functions.py (PDF format, Right-click or Ctrl-click to download)

3. Progressive Lecture
The final strategy is much more interactive. Students are assigned a problem in class and instructed to begin developing a solution. At the front of the room, after some reasonable amount of time has passed, the teacher begins writing out a rough outline of the program, perhaps with comments highlighting significant sections of code. Students who have developed their own solutions to the program will continue working on their own, while those who may be struggling to organize a solution will get some hints from what is written on the board.After a few more minutes have passed, the instructor may continue fleshing out the solution to the problem using the framework already developed. Students who still aren’t sure about some aspects of the program are free to ask questions as actual code is presented on the board.

Example: Differentiated Instruction (YouTube video)

Strategy 3 requires the most from me in the classroom. I’m moving around the room, actively monitoring students’ progress, and trying to determine the *decisive moment* (thank you, Henri Cartier-Bresson) when I should begin reaching out to assist students who need some additional guidance. Strategies 1 and 2 have the benefit of being delivered by computer or paper, with assistance immediately available to students when they decided they want to take advantage of it. The downside of those two strategies, of course, is that students do have access to solutions, and may be tempted to avail themselves of those materials before they’ve had a chance to wrestle with the material… and it’s in that wrestling that they really get to learn things.

As I say, I’ve used all three of these strategies on one occasion or another, and they work pretty well in Computer Science courses. I’ve adapted similar strategies to some of the science courses I teach.

As a teacher, do you use any of these strategies, or something similar? How do you reach out to the students of varying ability levels in your classroom?

Getting SaaSy: Software as a Service

Getting SaaSy: Software as a Service
====================================

2016-10-28

by Richard White

Ah, remember the glory years of installing software on a computer? Buying cardboard packages with floppy disks or CD-ROMs inside them, and spending an afternoon installing a new game or Microsoft Office on your desktop machine.

If you’re a bit younger, installing software got more convenient: later, you might gone to the Mac App Store, or iTunes, and downloaded software directly off the Internet.

Even those halcyon days of software installation are on their way to becoming a memory, though, at least for some of us. That software you previously installed and ran on your computer is increasingly being replaced by “Software as a Service“, and if you aren’t familiar with “SaaS,” you almost certainly use it. SaaS provides you with the cloud-based equivalent of an installed program, often via an interface running in a web browser.

Google’s Docs, for example, provide you with the ability to create and edit word-processing or spreadsheet documents. When you use Google Docs, you’re not running the equivalent of Microsoft Word on your computer. Your browser is interacting with documents that have been made available to you over a network. Google is providing you with “Software as a Service.”

Google’s Docs are an example of a “free” service (in quotes because you do pay a price in terms of your privacy), but it’s more likely that a company will charge you for their SaaS. Spotify, for example, provides you with the ability to stream music onto your computer or mobile phone. There is a small app that you download to use their service, and it is this app that allows you to interact with their music delivery service in either free or paid form. The music doesn’t reside on your computer; the music is streamed to your computer as a service.

I’m a bit old school when it comes to these things, so I’m not that big a fan of SaaS. Sure, I’ve got a Netflix subscription, and I watch Game of Thrones via HBONow. But I don’t have 24×7 access to the Internet, and I don’t like the idea of my hardware having to lie dormant when I’m not connected.

This is a little more than just a philosophical debate. I’m a teacher, and as part of my job, I record and calculate students’ grades on assignments. I used to do this in a paper gradebook, and then quickly graduated to a spreadsheet system. Spreadsheets were practically made for teachers to record and calculate grades with. Some of my colleagues who weren’t so good with managing a spreadsheet bought specialized grade tracking software and installed it on their home computers. That works too.

In the interest of providing students with ongoing access to their grades, I switched a few years ago to using a free service called Engrade, formerly at https://www.engrade.com. And with that move I entered the SaaS realm, using someone else’s software running in my browser, with access to my students’ grades via the Internet… assuming I have a connection. Which I usually do.

One of the downsides to SaaS is that you no longer have a copy of the software that is yours to use. When McGraw Hill purchased Engrade for $50 million, there was a new sheriff in town… and the service was no longer free.

And maybe that’s okay. Maybe McGraw Hill deserves to see some return on their investment in this company. Enough of my colleagues at my school site used Engrade that our school decided to pony up for a site license, so I’m still using Engrade. And that’s mostly good news…

…until their site goes down.

engradepro-outage

So, yeah. Software as a Service. Advantages and disadvantages. Pick your poison. Just be aware of the benefits and pitfalls of your options.

Next weekend I’ll be on a cross-country flight, writing up grades and comments for my students to be turned in the following week. I won’t have Internet. I won’t have Engrade. I won’t have Microsoft 360. I won’t have Spotify.

I’ll just have my laptop, with iTunes playing my old CDs that I ripped, and I’ll be writing comments in a text editor while consulting student grades in a spreadsheet, the way you do.

Like a Boss.

Losing the Functional High Ground

Losing the Functional High Ground

by Richard White

2016-10-26

The title of this post is a direct reference to Marco Arment’s excellent online essay from January 4, 2015, Apple has lost the functional high ground. If you haven’t read that post, in which Marco points out that Apple’s software quality has fallen off in the past few years, you should check it out.

Since that post was written, Apple’s success as a computer company has suffered other slings and arrows at the hands of former admirers, and most recently, on the hardware front. For a variety of reasons, Apple’s once formidable line of “best in class” computers has been reduced to a rag-tag selection of pretty, well-made, computers that run pretty nicely considering you’ve just paid top dollar for a new machine built from four-year-old hardware.

In 2013, Apple’s Phil Schiller unveiled the sleek, new, Mac Pro at the World Wide Developer’s Conference, with a defiant “Can’t innovate any more my ass!” for the benefit of observers who felt even then that Apple might have started to lose its way. Now, over three years later, that Mac Pro hasn’t seen a single upgrade, and Schiller’s sneer has become a sadly ironic comment on the ongoing state of affairs.

MacRumors, a fan-site so faithful they’ve got “Mac” in their name, maintains a Buying Guide for its readers, with listings on the current state of Apple’s hardware, and recommendation on whether now might be a good time to buy or not. Here are their recommendations as of a few weeks ago.

2016-10-15-macrumors_buyers_guide

For anyone who has been a fan of Apple over the years, it’s painful to watch this decline. There may be some comfort in knowing that they’ve got the best selling mobile phone on the planet, and a good thing, too: that single product line, the iPhone, accounts for almost two-thirds of Apple’s revenue.

There’s a reason they removed the word “Computer” from their company name, “Apple Computer, Inc.” back in 2007.

John Gruber disagrees with Arment’s characterization of Apple: “…if they’ve ‘lost the functional high ground’, who did they lose it to? I say no one.”

It appears to me and to other observers that they’ve lost it to themselves. Their development of computer hardware and OS X software has effectively been abandoned in favor of their cash cow, the iPhone.

This is written on the eve of a much-awaited product release from Apple. I have every hope that the new products they announce tomorrow will restore our faith in the company.

And I have every fear that we will be disappointed.

Follow-up

I think I have my answer.

The Lone Wolf… Rides Alone

The Lone Wolf… Rides Alone

Richard White, 2016-10-15

Computer Science teachers at the 9-12 grade level are a lonely group of individuals in many cases. Some of us have colleagues nearby with whom we can converse with on a regular basis–there might even be a computer science program or department at our school–but many of us work alone, and represent the sole face of *Computer Science instructor* at our schools.

Some people enjoy the freedom that comes with being the “lone wolf” of the school’s Computer Science program. You have a bit more control of the curriculum you teach, perhaps, and conflict resolution with peers goes a whole lot easier when you don’t *have* any peers.

But there are challenges as well. Many of us are responsible for wearing multiple hats simultaneously, managing hardware, software, and curriculum, for example. Or we teach separate classes in widely varying topics: computer science, networking, web design, and mobile application development. In addition to our courses, we mentor robotics teams, we advise Girls Who Code clubs, and we organize “Hour of Code” events for the larger community. We promote Computer Science as a subject internally to our peers and administrators, and act as *de facto* Public Relations representatives to the wider community.

It’s no wonder we get a little tired sometimes.

With an increased interest in computer science, computer principles, and computer programming, there’s a call for more computer science teachers nationwide.

For me, it can’t happen to soon. As much as I’ve enjoyed developing and teaching computer science classes at my school, I could use a little company.

What’s your preference? Do you enjoy working alone, or is the idea of bringing in someone else to share ideas and share the labor appeal to you?

My Vision

MY VISION

by Richard White

2016-03-24

You almost certainly heard that a couple of months ago, President Obama called for “Computer Science for All” in a program of the same name. From the Fact Sheet for that initiative:

Providing access to CS is a critical step for ensuring that our nation remains competitive in the global economy and strengthens its cybersecurity.

We’ll set aside (for the moment) Obama’s more recent call to weaken that cybersecurity that he’s such a fan of. In the larger perspective, Obama is correct: we need to provide more opportunities for students to learn Computer Science.

I think he gets this just right. This statement doesn’t say students must take CS classes. This is not necessarily a requirement. But the vast majority of students probably should take one or two CS classes, and certainly everybody should have the opportunity to take CS classes.

When people ask me about it now—the Vision question—this is part of my thinking:

I don’t think every student should be required to take Computer Science. But every student should take Computer Science.

They should recognize that computers, technology, the internet, social networks, online advertising, and cybersecurity have an enormous influence on how they live their daily lives.

It’s certainly possible for a student to educate themselves, but we shouldn’t expect them to take that on alone any more than we expect students to teach themselves calculus or how to write a research paper. Schools offer instruction in these areas because well-educated citizens need to know about these things, or at least need to have been exposed to them in a structured setting.

What do you think? Should schools require students to take a CS course, or should they just offer the curriculum and see who shows up?

OS Agnostic

OS Agnostic

by Richard White

2016-03-19

I try to be OS agnostic. I really do. I started out programming DOS PCs back in the day, made the switch to Apple’s Mac in the early 90s, and Apple’s OS X—based on Unix—was my gateway to Linux in 2005. I now have a number of Macs, three machines that run Ubuntu Linux, and two machines with a Windows installation on them.

I try to keep in touch with Windows. I have a few students who run it on their computers, and I try to pretend I support their OS.

It’s getting increasingly difficult for me to do so, given how annoying that OS is.

You Windows people, you know what I”m talking about.

i_hate_windows

Privacy, Security, and Encryption

Privacy, Security, and Encryption

by Richard White

2016-03-12

There are a number of conversations going on right now related to the ideas of privacy, security, and encryption. Three contexts:

  • Do government representatives (NSA, FBI, local police, etc.) have the right to access your personal information–metadata, phone calls, emails, etc.–without a warrant?
  • Does the FBI have the right to compel Apple to create software that will provide government agencies with access to information stored on Apple-manufactured hardware?
  • Was Edward Snowden wrong to make copies of secret documents and share them with journalists, with the intent of exposing what he viewed as government corruption?

All of these conversations are fundamentally concerned with the question of whether or not people have a right to privacy, and how hard the government has to work to “invade” that privacy.

There’s much to be explored here, more certainly than can be covered in a brief blog post. My talking points regarding the subject–my “elevator talk” when the occasion arises–include these:

Just about everyone agrees that people need privacy, and have a right to privacy. This is a documented psychological need–people need time alone, and act differently when they are alone. The United States of America, in its Fourth Amendment to the Constitution, includes federal prohibitions against “unreasonable search,” which has been interpreted to include a wide variety of forms of surveillance.

This need for privacy is not just psychological. Most people feel that financial transactions, including the ones that we all conduct with our own banks, should be protected. Indeed, financial transactions on the Internet *must* be private; if not, the communication structure of the Internet allows for those transactions to be viewed by others, “good guys” and “bad guys” alike.

Our world is digital now, and the means of ensuring digital privacy is encryption. Encryption is simply “math applied to information,” in a way that ensures the information can be accessed only by the intended recipient. Encryption is a means of making sure that things–my bank information, my personal information, my business transactions, my diary–can be private.

Some government representatives, including the FBI and most recently President Obama, are calling for mandated “backdoors” in certain systems that will allow the “smallest number of people possible” access to anyone’s private information.

This point of view is flawed, for two simple reasons:

  1. Exchanging private information is possible, and has been done for years, without computers and/or phones. Requiring a company to place a backdoor in an operating system doesn’t change the fact that any of us can freely exchange messages via that phone that have been encrypted by another means. Encryption is math, and you can’t outlaw math. Ultimately, backdooring doesn’t “protect us from terrorists.” It just violates our rights to unreasonable surveillance.
  2. Providing backdoors in technology fundamentally means that one is building in a means by which normal security mechanisms can be avoided. This system, by its design, also allows untrusted agents to avoid the normal security mechanisms once they’ve obtained the means to do so. There is no way to allow only good guys to bypass security. Bad guys get to use the same bypass.

    (One easy example: The federal government Transportation Security Administration suggests locking your luggage with TSA-approved locks: Your luggage remains secure, but allows them to access your luggage for inspection without having to destroy the lock. Only the TSA has the keys that will open these locks… until they don’t. Now your baggage lock has a backdoor that the bad buys know how to defeat.)

If you’re concerned about the consequences of giving child pornographers, Chinese dissidents, and the Russian mafia access to this same encryption, there’s no way around that. (Or maybe you DO want to protect the Chinese dissidents? You’re going to have to make up your mind.) Those people will need to be dealt with the same way they always have been: legal warrants for wiretaps, legal warrants for reasonable search and seizure. At the end of the day, weakening encryption doesn’t stop the bad guys–it only makes it easier for them to victimize good guys like you and me.

Decipher this secret message and I’ll give you $100.

U2FsdGVkX1+Z8Wx61sOSQghi2ANM0QfXVXJzM7tP5eo=

Other interesting articles on this topic: