Computational Thinkers in Scotland

I'm way behind on my Communications of the ACM. I generally only read them when I use my trainer in the mornings and with summer running and outside riding, I'm still on the December 2015 issue.

This morning, I read a viewpoint by Jeremy Scott and Alan Bundy on a program in Scotland. If you're an ACM member, and if you're a CS practitioner, student, academic, or teacher you should be, you can read the piece for details.

Me? I noticed a number of similarities between what Bundy and Scott described and efforts here in the USA including some of the red flags.

I'm not here to talk about the program described in detail or their successes and failures. I don't have enough information to fairly comment on that. I'm here in my usual role of curmudgeon to highlight common red flags that if unheeded could cost all of us the opportunity to get really great CS Ed to all of our students.

One red flag right away were a number of references to the program being curriculum and materials driven, not teacher driven. The viewpoint states that materials "were designed to be used by even non-specialist teachers." We see the same thing here in the USA and not just in CS Ed. Teaching overall is being devalued with the elite pushing programs that handcuff good teachers to a script (which leads students towards "success" in passing a nonsense standardized exam) all the while sending their own kids to elite private schools with knowledgeable teachers.

I know i didn't want my kids to be taught chemistry history or any other subject by a teacher that hasn't studied the content yet here we go saying it's okay for CS.

The counter argument is that we have to do something now and we'll do better later. We all go in with the best of intentions but more often than not, once a politician has their sound bite and once a cheap apparent solution is in place, it's good enough and we're done. I ranted about that a while back both here and here. To their credit, Bundy and Scott talk a bit about this concern in the piece.

The piece also said "It is also necessary to employ a pedagogy that is informed by the latest research into the most effective ways to teach computing." This sounds good but the truth is, education research doesn't have the best reputation among educators. Last month, I asked one of the best math teachers around what was being bandied about as best practices in math education according to "the research?" He basically said "the research says do fad du jour but that doesn't work for me so I just do actually good technique."

Over the years, I've spoken to many teachers and by and large the best ones discredit "the research." Of course, my comment will be discredited by ed researchers saying that "you're just giving anecdotes" but then, if I did the same thing while employed as a researcher, did a couple of surveys and submitted it for publication, then it would be "research." So much of teaching is a craft and the truth is, practitioners know best.

Related to this is authentication by citing authority. Particularly dangerous in our field because many people with little to no real background in teaching CS are anointed as experts and thought leaders (see this post: here). In this case, the viewpoint cites Cameron Fadjo. I've only met Cameron once or twice and he seems like a sharp guy but when he was given the post of Director of Software Engineering for NYC, according to his linked in profile, he had neither taught k12 nor had any real CS background. This is of course the profile of many CS Education thought leaders.

My overall take. It sounds like just like here, Scotland has people trying to make a difference and trying to do good. It also sounds like they're falling into the same traps and pitfalls as we are on this side of the Atlantic.

User friendly - I do not think that means what you think it means

Saw this post the other day: Emacs is hurting Clojure and this response: Is Emacs Really HJard to Learn / Use.

This called to mind those countless discussions about tools being user friendly. I'm frequently on the unpopular side of these discussions. Linux vs Windows vs Mac, Shell vs GUI, Emacs vs fill-in-the-blank-editor-or-IDE and on and on.

Don't use Emacs, it isn't user friendly. Don't use Linux, it isn't user friendly.

The thing is, I don't think that word means what they think it does.

I tell my kids that Linux and the shell is amazingly user friendly and Windows and Macs aren't user friendly at all. Windows, rather, is "Learner Friendly." For years, it's been easy to learn what you can do on Windows or Mac (as used via the GUI, not dropping to a shell) but the truth is you can't do that much. They're designed as program loaders not tool kits.

You can learn how to get around and load programs and files very quickly - much more quickly at first than using a command line interface. The problem is, at that point, you hit a wall. No doubt those operating systems are more learner friendly than Linux and the shell but once you learn the command line, it can be leveraged for all sorts of things and pretty easily at that - user friendly (see these posts for some examples: Shell posts).

This is important because we have our students use all sorts of tools and we should be thinking about things like usability but we really should be thinking about them a little differently.

First, is it learner friendly. Part of this is cost of entry. Linux has a high cost of entry. On the other hand, while Emacs might look uglier than other modern editors, the cost of entry is pretty much the same as any other editor - click or type a command and then you can use the mouse and drop down menus to get started. Vim, in my opinion, on the other hand has a higher cost of entry due to its modal nature.

So, there's no reason not to use Emacs (vs another editor) but you might pause before using Linux. My approach is to start as if it were Windows - use the gui, icons and menus, and then slowly introduce the command line.

Once your past the cost of entry, the we can think about being learner friendly. As I mentioned, Linux, not so much. Emacs, sure - just like any other editor with drop downs that then give you keyboard equivalents.

The keyboard equivalents lead us to another part of learner friendly – discoverability - can you easily discover new things about the tool. Here Emacs shines. Linux, maybe not so much.

Once past learner friendly we get to user friendly. The core question is "can I do what I need to and want to do easily." For most people, it comes down to - the tool I know is user friendly and the one I don't know and don't want to take the time to know isn't. There are some things that are cumbersome no matter what, but really, when we say user friendly, most people mean "what I like." To me, it's a little more - is the tool expressive and powerful as well.

So, why is this important? First, we shouldn't allow our biases to color the way we expose our kids to tools but at the same time, we should pay attention to learnability, cost of entry, discoverability, and indeed, true user friendliness.

  Low Power High Power
Low Learnability CP/M Linux Shell, Mac Terminal
High Learnability Windows / Mac OS GUI Most editors, including Emacs

So, let's stop with this "your tool isn't easy to use" nonsense. Any tool we don't know isn't easy to use until we learn it. Let's focus on the path to learning the useful ones.

Can NYCIST become in leader in CS Education?

I only learned about NYCIST last spring. They're the "New York Consortium for Independent School Technologists." They had something of an open house that I attended. I heard about them from friend and fellow CS educator Saber Khan.

Last Thursday I spent an afternoon and evening with NYCIST members for a discussion of the state of K12 Computer Science Education in the City.

Most of my work has been with public schools and most of the teachers I know, public school teachers so it was great to make new friends in the Independent school community.

One thing I realized during the evening was that NYCIST has a real opportunity to do something special.

In some ways, the public schools are leading the way in computer science education as a result of this administrations CS4All initiative but at the same time, public schools face some real challenges. While some "early adopters" have developed their own take on computer science education, by and large, CS4All is being defined and driven by few for all and, at least right now, the model seems to be the "a little PD and you're a CS teacher" model.

At the same time, standardized testing and teacher evaluations are pressuring schools, particularly schools of our most vulnerable students to push resources towards test prep in tested subjects rather than real education, including CS.

In this particular instance, NYCIST and independent schools can be what charter schools were supposed to be before they were corrupted.

Laboratories of innovation.

NYCIST has already gathered together interested parties and the independent schools aren't burdened by the weight of politically driven testing and teacher evaluation. At the same time, small class sizes and flexible models allow for innovation.

If they wanted to, they could probably create curricular and instructional frameworks for CS education and. dare I say it, share it back to the public schools.

I know I'm ignoring independent school politics and other issues that would prevent this from happening, but I just feel that if there's a desire to do so from a group like NYCIST, it could happen.

I'm looking forward to continuing to work with my new friends and if any of you are interested in finding out more about NYCIST, just tweet to Saber.

I don't know if my idea here will take root but if it does, I'd love to work with NYCIST to make something happen.

Impostor Syndrome - I'm not good enough

I've been meaning to comment on these tweets for a while:

Stan, of course, is one of the most talented people I know.

It reminded me of a conversation I had with my colleague and friend Jim last year. I had just recieved an email from a former student turned friend. We were trying to find some time to catch up. I told Jim I had just heard from this young lady and Jim replied "I remember her, she's awesome. Really smart." I mention this because the individual we were talking about, while to us, extremely talented in addition to being just a terrific person spent much of her career living in self doubt.

Meantime, I was having a conversation with another friend and the topic turned to impostor syndrome and the desire to make it a thing of the past.

Problem is, I don't know if that will ever be the case. I'm approaching 50 and have a career of good work behind me but I still find myself questioning my credentials, work, and ability. Then I realized I wasn't alone when I read Robert Talbert's recent blog post about his going through the tenure process for a second time and "learning through this process that I have not outrun impostor syndrome and probably never will."

Stan's tweets tell part of the story. When we surround ourselves with smart, accomplished people, we sometimes feel we don't measure up. I've found that for the most part, the extremely accomplished people I've worked with are very unassuming and low key. They seem to operate assuming that everyone else is at least as capable and quick as they. I recall Paul Graham talking about this in an essay but I don't remember which one. The problem is, if you don't understand their sincerity, you end up feeling even more inadequate.

It gets worse when we start comparing ourselves to some unreal composite. I remember feeling pretty stupid back when I was younger comparing myself with others. The problem was that I clearly didn't measure up to the best math kid, or the best computer kid, the best fencer, the best violinist, etc. Now, the best math kid might have been a lousy athlete and the best fencer, a so so mathematician, but to me, I was comparing myself with this composite super human. No wonder I never measured up. Eventually, though, I realized three things. First, there's always someone better at something and always someone worse. Second, that's not the true value of ones worth as a person, and three, I bring some good stuff to the table and I should be (and am) content with that

So, I still struggle with impostor syndrome but at the end of the day, it just serves as a reminder to look back on what I've done and what I've learned in the process. I start out in question but in the end, leave confident. Maybe the trick isn't to eliminate impostor syndrome but rather to understand and contain it. We don't want to live in fear and anxiety but both are useful emotions when we control them and not the reverse.

It's probably good when we question ourselves and re-evaluate our positions - we just have to make sure as we're bringing new people into the tech fold that we foster acceptance and confidence and when impostor syndrome sets in that it can be channeled into a positive and not scare people away.

First day back, or not

The day after Labor Day. The day NYC teachers traditionally return to work. For the first time in a quarter century, I'm not one of them.

It's weird.

Instead, I'm in the second week of Hunter College's fall semester. So far so good on that front. I'm getting to know my students, planning activities and overall having a good time.

But, I do have to reflect on some of the things I'm not going to get to do this week:

I'm not going to have the opportunity to be blindsided by a CS schedule made without consulting me or any other CS teacher and having to work frantically to fix it so that the CS teachers have the programs and rooms they want.

I'm not going to be able to have that panic attack when the NFS/NIS server isn't working and no one can log in.

I'm not going to sit through a mindless faculty meeting where nothing is really ever accomplished.

More seriously, I am going to miss seing my friends and colleagues after the summer and Thursday - the day the kids get back is always a thrill and I'm going to miss that.

In a way, I'm experiencing a version of what retired teachers go through. Many teachers retire in June but it's not until after Labor Day when the change really sinks in.

Soon, I'll start posting CS teaching content again but for today, I want to tip my cap to all the public school teachers in NY that are going back to work today and who will shortly be teaching their five classes of thirty four kids each 1.


also tipping my cap to my favorite TJ teacher who's students are back today. I got called to task for failing to mention her on my facebook shoutout.

Using Emacs - 15 - Macros

I originally planned on do some videos on C++ development but I'm just not feeling it. Probably because I'm excited to be working with my new class and we're working in Python. We're not going to be using C+++ for a few months so I'll get to those videos a little later.

Today, I want to cover what I consider a leatherman or multi-tool for Emacs. Something that isn't perfect for any particular job but can get almost any job done: Macros.

In their simplest form, macros let you record and play back keystrokes.

The video goes over the specifics.

Here are the main functions / keystrokes.

Command Key
kmacro-start-macro-or-insert-counter F3
kmacro-end-and-call-macro F4

This covers most of my use of macros but there's more. You can adjust or set the counter, edit old macros and there's even a way to have a macro pause for input in the middle.

Here are some links with more information:

If you're interested in checking out, which I reference in the video, check out my blog post.

Relevant links:

New Term, New Tool -

We're now a week in to my first class at Hunter. It's a little early for me to really compare and contrast the high school to college experience but I thought I'd share some thoughts on a tool that I've recently started to play with.

My students were all supposed to be issued laptops at the beginning of the semester. The plan was to have them learn Linux, the command line, and a little DevOps along the way. I guess I shouldn't have been too surprised to learn that the laptops weren't going to come in until late September.

Scratch all that advance lesson planning. A brief scramble and I was able to relocate the class into a computer lab but now we can't customize the kids environments.

Time to look for an online solution.

We're starting the kids off in Python, a choice that I'll talk about in some future post and normally my online go to for Python is I'm a big fan of the codesters team and product. This time, though, I decided to try something else. Specifically Partly because, as with codesters, I like the people behind it. It's also pretty simple and it supports a lot of different languages:

APL, ES2015 ,Bloop, BrainF, C, CoffeeScript, C++, C++11, C#, Emoticon, Forth, F#, Go, Java, JavaScript, LOLCODE, Lua, Nodejs, PHP, Python, Python3, QBasic, Roy, Ruby, Rust, Scheme, Swift, Unlambda, and HTML, CSS, JS

It's still a pretty new product so there are occasional hiccups but I'm really liking things so far. Some of the things I like include:

  • a simple clean interface.
  • sharing and embedding code:
  • project mode which allows multi file projects
  • examples to get you started

But the thing I'm really liking are the teacher features they're working on. The teacher interface isn't fancy. I like that. Things are simple and clean and they let me get the job done.

I had two extra minutes in class yesterday and in that time, I was able to:

  1. Make a classroom
  2. Invite all my students by email
  3. Create 2 quick assignments.

The assignment page lets you give starter code as well as instructions and it also lets you put in tests that are run when a student submits their work for instant feedback.

I really like the tests feature on projects. So far, I've only played with Python unit tests. uses a really easy to follow interface and has a sample test to guide you. There's also an option for input/output matching which includes flexible matching and regular expressions but I haven't played with it yet.

Overall, I'm liking this tool. When the kids get their laptops we'll probably use it somewhat less as they start to learn to use their own systems but I'm glad to have in my teaching arsenal.

Federal Aid for Code Schools - is this a good thing?

I saw this headline earlier today: The U.S. Just Made a Bold Move to Improve Diversity in Tech.

The article talks about a program by which a number of code schools will be able to accept federal student aid. I don't know if we're talking student loans or grants but I'm not sure it matters.

The headline sounds great. I'm not so sure that this is a good thing.

My thinking's evolved over the years but right now, everything tells me that public funds and for profit education don't mix.

What we, more often than not, end up with is a cash cow for a private concern.

Example one: The edTPA - a required exam for teacher licensing, at least in NY. Prospective teachers pay hundreds of dollars to pass this gatekeeper. Pearson, a private company (and not even an American one) is essentially in charge of teacher licensing. They make the assessments, they grade them, they decide who passes. A foreign company is deciding who teaches our kids and at great expense to those prospective teachers.

We'd be much better off going back to the old days. To become a teacher, you had to pass through "The board of examiners." Basically, to get your permanent license you had to do an oral defense. Teachers would be placed in a room of principals, supervisors, and master teachers for an open grilling. It was cheaper and MUCH more effective.

Example two: The PSAT 8/9, PSAT, and SAT. These are exams that tell us one thing: how kids will do on future PSAT and SAT tests. They're not good predictors of college success but the college board (a non-profit in name only) has convinced us, or at least "convinced" our politicians of the exams importance. So, rather than having individuals make a choice as to whether or not to take these exams, NY forks over who knows how much money per year so that our kids can take a test with the belief that the exam will mystically make them college ready. To make matters worse, students lose a day of instruction and teachers have to proctor the exam instead of teaching.

Example three: Common core tests. Made in secret, graded in secret with cut off scores designed after the fact. Absolutely no educational value but once again, public funds flow freely into testing companies.

The problem is that these private concerns never really have to show results and they're never held accountable and since the money we pay them is hidden in city and state budgets, the taxpayer is none the wiser.

So, what about code schools?

In a similar vein, money will flow from the government to the code schools. The question is, do they really have the secret sauce.

I have lots of friends who run and work in code schools and have met many more. Some code schools are trying to really educate and some not so much. In any case, let's take a look.

You frequently hear about the success stories but for every one of those, you can also find a manager talking about the fact that the code school graduate can't do anything other than ape the narrow tool that they were exposed to in the three or so months at the code school. So, the truth is that results are probably a mixed bag.

Is this good? Well, when you consider the typical code school MO it really isn't.

To attend a for profit code school you have to not only afford the tuition but also be able to sustain yourself for the duration of the program. That makes most code schools options for the well to do - those already well positioned for success.

Then they make the candidates go through pre-work – frequently online course work. So, before you even step into a code school, they know you're likely going to succeed.

Once in, they train the candidates in a narrow slice of tech. I've talked to a number of code school leaders about that. I've asked how well the kids would be able to adapt given the constraints of their 3 month or so training. The typical answer was that the candidate could just re-up and pay again to learn the next limited time only skill.

Should taxpayer dollars go to this? Probably not. There's no indication that code schools can provide meaningful long lasting education to even those who are best prepared to learn on their own. Whats' more, we haven't seen evidence that they have the answers for the under-served. Combine that with government's history of not keeping an eye on and not holding accountable private education providers, I think we're just setting up a new line of corporate welfare that will, on the surface help some but it is in no way the answer.

Too often public/private means that the private entity gets the money and the public gets stuck holding the bag. Better would be to have tech companies foot the bill. Some coding schools already do this. Tech companies that are happy with coding school graduates can finance the program.

What we should be doing is focusing on things like community colleges. Organizations that are supposed to be real, long term, community centers. With moderate tweaking, there's no reason why a community college, not to mention 4 year schools, couldn't provide far superior preparation than even the best code school.

Using Emacs - 14 - Thoughts

Sorry for the incosistancy of the posts. I hope to get to that one video a week soon but I've still got a hectic couple of weeks ahead.

No new material this week, or at least very little. This week, I talk about some thoughts on the "Using Emacs" series.

In the video I talk about Sacha Chua and her work as a leader in the Emacs community. Check out her stuff here:

Here's the video - I hope you enjoy it.

As always, please leave feedback here or on the video.

Relevant links:

Using Emacs - 13 - Yasnippet

It turns out that Elpy, a popular emacs package for python development is much easier to set up than I remember. It turns out all you need is:

(use-package elpy
:ensure t

The video shows how to install and a bit of use. I don't think it's a package I'm going to use much since I use other tools to do similar things but it's worth checking out.

The main event this week is yasnippet, a package that lets you expand text aliases. Let's say you want to put the fairly standard:

if __name__ == '__main__':

in my file. I can just type ifm and then hit the TAB key and it would expand to the above code. Yasnippet also lets you leave placeholders for variables, function names and more. It's a pretty neat package.

I use it for boilerplate code. The example in the video shows how I set up a snippet for the boilerplate code used when creating an application with the Flask python microframework.

Setting up yasnippet is as easy as:

(use-package yasnippet
  :ensure t
    (yas-global-mode 1))

and it has built in support for tons of langauges. You can also easily create your own snippets. See the documentation for details on the file format. Just create a text file for the snippet and place it in a subidectory under the snippets subdirectory of .emacs.d. The name of the subdirectory should be the name of the emacs mode for which the snippet is defined. I put up the snippet I use for flask so feel free to check that out.

Relevant links:

Enter your email address:

Delivered by FeedBurner

Google Analytics Alternative