2017 in review - K12 CS Education

It's been a big year for K12 CS education. More and more states looking into CS as a K12 academic area and all that entails, the CS4All movement is well underway and the College Board launched a new exam. These are just three of many big things that happened in the past year.

I'm excited about the overall growth but concerned about a number of issues. I've written about all of them in the past so won't rehash here and in any event, the issues I'm concerned about are issues I have no influence on.

Instead I thought I'd look at some local CS Ed happenings. Things where I have been able to contribute.

Probably the biggest thing happening that I've been involved with is New York State's moving forward on CS teacher certification. I developed CS teacher preparation programs at Hunter and Hunter's been one of the voices talking to the state. I'd like to believe I had some small positive voice in this effort.

Related are the programs that are one piece of form and one committee short of being approved. Very soon Hunter will have CS teacher preparation programs - a full Masters program, a certificate program and an Alt Cert program. While no program is perfect, I'm very proud in what I designed and am confident that any teacher that completes a Hunter program will be amazingly well prepared to teach CS. Not just the popular curricula being offered today and not just the out of the box curricula being lauded by others. Our teachers will be empowered to create their own custom educational experiences appropriate for their kids.

I've said before that I believe in teacher over curriculum. A great teacher can save the worst course but the best curriculum can't save a weak teacher. No matter what happens with CS Ed as a whole, I know that the CS teachers we prepare at Hunter will be top flight. Kids in their classes will be alright regardless of what the education machine tries to impose on them.

The other thing I've been working on, albeit in a limited way is professional development. There's a lot of CS PD around but most of it seems to be either for the younger levels or the intro levels. Very little for APCS-A let alone beyond. This past November I was able to host teachers from a handful of schools on Election Day for what everyone felt was one of their more productive PD experiences. We're following this up with another one in the Spring but this time we're expanding. I've been talking to friends at TEALS so as to get more teachers and schools involved. There's a lot of value in connecting teachers with each other and I hope that I'm helping to do that.

I'm looking forward to 2018. I'm told that NYSED should vote on CS certification in March and my programs should also be on the books around then. The challenge will be building capacity since I can't do this as a one man show.

I'm very proud of what we've accomplished at Hunter on both the education side and the CS side. It's been a good year and I expect 2018 to be a better one.

2017 in review - Hunter Undergraduate CS

I usually don't do year in review posts. At Stuy, not much changed year after year so I never felt it worth summarizing the past and projecting the future. At Hunter, now that I'm a couple of years in, projects are really picking up steam so I think it's worth talking about them.

One of my two major missions at Hunter was to build a CS Honors program and raise the profile of Hunter's undergraduate CS program in general. Hunter had a strong CS program before I joined the team it's just that few people knew about it.

My goal is to see Hunter become the "go to" institution for undergraduate CS in New York City before my time is done.

This is an extremely important mission.

There are other strong CS options besides Hunter but compare the costs:

Institution           Annual Tuition
NYU           $50,464
NYY Tandon           $48,750
Columbia           $54,504
Hunter           $6,530

Hunter is about one tenth the cost.

True, if you're wealthy this isn't a problem and if you're at the bottom of the economic ladder you might get a full ride but if you fall into that category where you earn more than the financial aid people think is "poor" but are clearly not rich you're left in a bad place. This seems particularly true for New Yorkers as our income seems higher than that of people from other parts of the country but our cost of living is higher as well.

My wife and I are both career public educators. No one would confuse a family of two working teachers as upper class but we were granted no financial aid for our kids. The alternatives without a great public option are to have saved for our entire lives and now liquidate those savings or go into tremendous debt.

This alone makes the mission critical. Add to that the accessibility issue - elite private institutions only have to concern themselves with whatever slice of the population they choose to accept. We are charged with providing a top flight education to all - be they the high achievers, the late bloomers, the struggling students or anyone else.

So, what's happened in the past year?

First, the Daedalus honors program is developing nicely. In our first year we had a cohort of 12. This past year 27. I haven't seen the applicant pool yet - Hunter applications are open until the end of January, but I'm hoping to bring in an even larger cohort this year. I spent a good amount of time this fall visiting high schools to talk about Hunter CS and CS options in general. Not as many as I'd like but more than during year one.

We had classes, trips, and special events but more important was that the cohort is starting to form a community and the students want it to be a community that includes ALL of Hunter CS, not just the honors students.

They've started a once a week Dojo where students can work on projects and interact and we're starting an evening speaker series in the Spring.

Overall there's a vibe of excitement and an energy around Hunter CS that I've been told hasn't been there before.

In my class, I've been introducing a number of real world practices that are usually not covered in undergraduate CS and we're starting to talk about bringing those practices into the non-honors sections.

Finally, we've started to partner with the New York Tech community. We're bringing together the Hunter students and the tech professionals to raise awareness outside of Hunter of what our students can do and to best prepare our students for their next steps. These partnerships, in addition to internship possibilities have led to us planning some great things this coming semester incuding:

  • workshops such as how to work on an open source project or how to do a code review.
  • Having industry mentors at our local Dojo sessions.
  • Mixer events to educate our students as to the variety of pathways they can follow when they graduate.
  • and more.

This past year set the stage but there will be some challenges moving forward.

The biggest one is continued outreach to high schools. Getting to the students and their parents to let them know that we have a great program. It's also about convincing them to come to Hunter. Back in the day CUNY was "the poor man's Harvard" but open enrollment in the 1970s killed that reputation. CUNY has been making it's way back and Hunter has many excellent programs but reputations are decades in the making and at Hunter CS we're just starting to get the word out.

The other big challenge will be with time. Right now, for the most part, I'm a team of one. I have tremendous support from my colleagues but they all have their own full time obligations and the overall growth in Hunter CS has already put a strain on personnel and resources.

In spite of the challenges, I'm not complaining. This has been an exciting year for Hunter CS and an exciting year for me to be a part of it.

Using Emacs 39 - mu4e

I generally use three email accounts. My personal one, work one, and one for my non-profit. For a couple of years, I've been using mu4e under Emacs for both my work and non-profit email accounts and gmail for my personal account.

I've had lots of requests for a video on what I do but I've been hesitant for two reasons:

  1. There are parts of my configuration that are copied from others and I really don't understand.
  2. I wasn't happy with the complexity and some of the tooling.

While there are still parts of my configuration that I'm not 100% clear on I've cleaned up the tooling and complexity by using mu4e only for my work email for the time being and by switching to mbsync.

Here's a writeup on configuring things with video at the end.

Unless you run an email server on your local machine using mu4e can be thought of as three parts.

  1. Get the email from the server to the local machine using IMAP.
  2. Setting up mu.
  3. Access the email locally from Emacs.

Part 1 Getting the email to your local machine using mbsync

I found his terrific blog post by Rob Stewart on setting up mbsync and mu4e. Read it over. I basically followed his directions for setting up mbsync. To build from source under Linux, I used the sequence:

sudo make install

I followed Rob's instructions basically verbatim for the password and authentication stuff so I suggest you do the same.

You'll also have to make sure to make the necessary email directories manually. I describe all of this in the video.

Part 2 - setting up mu.

To set up mu, clone it from git://github.com/djcb/mu.git and build it. You can find dependencies here and then follow the same sequence used to build mbsync listed above.

Since I store my local email under a folder Maildir which is what mu defaults to I can start using it by indexing my emails:

mu index

The video shows some examples of using mu from the command line and you can look at the mu cheatsheet here.

Setting up mu4e in emacs

Finally, you can set up mu4e in emacs. Take a look at Rob's configuration in his post or my sample config. You'll have to take a few minutes to go through either and make the appropriate changes but the required changes should be cleared.

The video goes through all of this and then a brief demo of how I use mu4e.

I'm very happy with it and plan to integrate my non-profit email and maybe even personal email into it soon.


Fixing the Absent Teacher Reserve (ATR) situation

In the New York City department of education a recurring hot topic is the Absent Teacher Reserve or ATR pool.

A teacher or administrator in the ATR pool is a licensed, most likely tenured teacher not assigned permanently to a school. Each year these educators get shuttled from school to school and denied a chance to actually settle in a position.

The ATR pool was created under the Bloomberg administration. Prior to that, when there was an opening school transfers were basically seniority based and when school had too many teachers the least senior was excessed or basically out of a job until a school with an opening could be found. The Bloomberg plan allowed teachers to use criteria other than seniority for transfers but so as not to violate the contract agreed to by both parties, teachers who were excessed, as they might not be least senior, were kept on as employees and put in the pool.

ATR's would rotate from school to school. Sometimes for a couple of week but more recently for a year at a time. When at a school for only a couple of weeks they could only be used as subs or for grunt work but even when there for a year they're treated like second class citizens.

The ATR pool grew in size when the Bloomberg/Klein DOE went on the war path, set schools up to fail and closed them left and right. If you had the bad luck being at a close out school when it closed then, hello ATR pool.

Over the years, the press, ed reformers and politicians have unfairly bashed this group of educators. They've falsely claimed that these are criminal teachers or unsatisfactory teachers. That's a blatant lie. Teachers up on charges are removed from schools and await a hearing in another draconian process set up to violate teacher's rights. If a teacher is ultimately found guilty, they are disciplined or fired. If exonerated, they're returned to their schools. In any case they're not ATRs. Teachers that are repeatedly found to be unsatisfactory are likewise removed (although the process here is ridiculous and unfair as well).

ATRs like any pool of teachers run the gamut. Some are great, some are poor, many will fall in between. All are stigmatized and treated like damaged goods.

People ask, how can a good teacher get into the ATR pool? As I said, be at a closeout school. In the year before I was able to bring my friend and former colleague JonAlf over to Stuy, he was at Brandeis High School - a closeout school. I tried to bring him over that year but his principal wouldn't release him. Had I not been successful in bringing him over the following year he might very well have ended up in the ATR pool and he's one of the best teachers I know. What about the teacher that doesn't want to abandon those kids that the DOE abandoned when they decided to close the school. That martyr teacher surely ends up in the ATR pool but that's the type of dedicated teacher every principal should want.

So now we have a bunch of stigmatized teachers looking for work in a system that won't give them a chance. Not only due to them being considered "damaged goods" but also because they're expensive to hire.

When a school gets an ATR to them, it's free - the cost isn't added to their budget - they keep them as extra manpower for the year and then throw them out with the trash. At times, they get some credit for keeping them a second year and even beyond they can get rid of them whenever they want. Great way to bust the contract.

A clear example of this is Stuy's current math chair. He's an ATR Assistant Principal. They got him for free for the first year and I believe at a 50% discount for the second and even now they can dump him whenever they want. This is rubbish – he's either good enough for the position or he's not. If he is, he should be given the job for real and if he isn't then what is he still doing there. I'm not making any value judgment on him or the department but it's either one or the other.

So, a big reason for this ATR mess is about budgets and money. The problem is that it's a big lie.

The DOE pretends the we have a situation like this:


The DOE has money and schools have money. The schools pay for their teachers, supplies, and everything else but the ATRS are paid for by the DOE. Of course this isn't the case. The truth is that the DOE pays for everything:


ALL the money comes from the DOE.

In the past the DOE has come up with poorly conceived and poorly received plans on how to deal with the ATR situation but it's really quite simple.

Start by recognizing that ALL the money comes from the DOE. Once you do that you can address the problem:

  1. Assign the ATR to a school
  2. If the school likes the ATR and the ATR likes the school, they keep them and the DOE picks up the tab or rather adjusts the schools budget to compensate. The DOE will continue to do so until a real opening occurs at the school in the ATR's area at which point the ATR fills the position officially and the budget is readjusted.
  3. If the school or ATR don't like each other the ATR gets rotated, however you create a 3 strikes (or maybe 2 or 4 or some number) rule.
    • If the school keeps sending away ATRs semester after semester hit them with a penalty or force an ATR placement when they have an opening (assuming the ATR is amenable).
    • If the ATR keeps declining positions after a set number of schools force the placement.

That's it. Simple and solves the problem.

Breaking down problems and writing

This question appeared on Facebook a few days ago:

Does anyone have an effective way to teach students how to break down a problem into steps and then solve each step one by one? I think my students are struggling with a large question and breaking it in subsequent parts.

There were some good suggestions. I wanted to add something but didn't have time then so I thought I'd write it up now.

As an aside, it took me forever to find the post again over on Facebook. If there's a way to mark posts or save a direct link I'd love to hear it. I had to look through all the CS Ed groups I belong to manually until I found it again.

When I read the program I was reminded of a PD session we had to attend back at Stuyvesant. Back then the fad was Writing Across the Curriculum. Every teacher in every class was to give some significant writing assignment, evaluate it and provide feedback. Let's forget the fact that most of us never had any training or preparation to do so.

On that PD day the guest speaker was William Zinsser. The first thing he said was that what we were being asked to do by our principal was bunk. He then proceeded to give advice on simple good writing.

The procedure he recommended following was to ask yourself (or have the student ask themselves) "what does my audience need to know next?" That's your next sentence. Then ask the question again. Rinse and repeat until done.

It was simple and it made sense. It also applied to introductory CS problems. When starting out, students have a limited CS / programming tool box so a good question for them to ask when trying to solve a problem is not only "what do I need to do next? but also "what can I do next?"

When students have a limited CS vocabulary and set of idioms - loops, conditionals, functions, whatever, there will only be so many things they can do to move a problem along. If they go through the things the can do they will likely fall on to what they should do.

It's similar to doing a proof in geometry. Students have a set of givens. Given that set, what can they do? They only know so many theorems at the beginning.

Over time, they'll recognize patterns and develop as problem solvers.

If you're part of the AP CS A teachers facebook group you probably saw the question. Many good answers were posted. I just wanted to add this thought to the collection.

New York State moving forward with CS Teacher Certification

Last April I woke up early and trekked up to Albany along with a few of my Hunter College colleagues to share our thoughts on K12 Computer Science teacher certification with the Board of Regents. We gave a presentation to the Regents Higher Education Committee and afterwards had a chance to talk with some of the Regents as well as other members of the New York State Department of Education.

I left feeling that our proposals were well received and I think everyone present - both the Hunter and NYSED contingents hoped that things would move forward on this important issue.

Fast forward to today, December 8, 2017. I was up at the crack of dawn. Driving in the dark in the snow from NYC to Albany to once again attend a Board of Regents Higher Education Committee meeting. This time, the agenda item was:

Proposed Amendments to Part 30 of the Regents Rules and Section 52.21 and Part 80 the Regulations of the Commissioner of Education Relating to a New Certification Area and Tenure Area for Computer Science

No discussion or debate this time around just the proposal. If I understand the process correctly, this should come up again at the March meeting at which point it will be voted on. If approved, it looks like we'll have a pathway towards certification for CS teachers.

I haven't had a chance to dive into the details but at the meeting a few key points came up:

  • As the proposal indicates this will be a subject area in which a teacher can be certified and be awarded tenure.
  • There will be a traditional pathway for new teachers - Bachelors / Masters degree
  • There will be an alternative pathway for people entering from the workforce
  • There will be an extension for teachers with another license so they won't have to give up tenure in their current license.
  • There will be an "individual evaluation" pathway which sounds to me like it could catch people who fall through the cracks.
  • There looks to be a sensible ramp up period - until September 2022
  • There's a grandfathering provision that looks to last 10 years.

This sounds like a smart sensible plan. Multiple pathways, shallow ramp up and provisions to protect existing teachers.

Of course, the devil is in the details. What's an approved program? Can a grandfathered teacher teach all CS classes or just intro ones? etc.

As I said, I haven't had a chance to dive into the details yet but this is very exciting.

Prior to the meeting I was chatting with a few other people attending. One, a UFT representative was very excited about the prospect. Another contingent, a group from NYSUT was very much against a new certification area. Their position was that this would create a teacher shortage because no one would have a CS license and no one would get one due to the difference in salary between teaching and the tech industry. I've already written on how I feel that this is a red herring. What shocked me though was their feeling that "we already have many non-CS teachers effectively teaching CS across the state. They're doing a great job and don't need any additional content or pedagogical knowledge." I think they're wrong and I also think that when we as a community talk about how our summer professional development is all that's needed, we undercut CS education and the teaching profession as a whole.

In any event this was a big step for New York. I tried to individually thank as many of the participants as I could for helping shepherd this along but could only speak to a few so I'll just give a blanket thank you here to the NY State Board of Regents, Board of Education and State Education department.

Making contest problems and writing tests

I'm now well behind in Advent of Code. Traveling up to Michigan to see my son and my brother and his family will do that.

I was planning on working to catch up but got distracted earlier by this thread on the Advent of Code subreddit. Specifically this comment by Eric Wastl, the contest creator. The thread is about the level of difficulty of the various problems and Eric's comment talks about some of the factors that go into creating a good collection of problems for a contest and the difficulties involved.

It made me think of a conversation I had twenty years ago with Rob Kolstad. We were chatting at a programming competition while the students were hacking away. We were discussing that there were only so many questions that a typical high school or college competition can ask:

  1. The Mathy question
  2. Recursion / divide and conquer etc.
  3. Graph stuff
  4. Dynamic Programming

and I think one or two more. The actual questions were just window dressing on these fundamental question types.

You can see this in many competitions including Advent of Code - particularly if you look over all three years. This is not a criticism. I love Advent of Code and think that Eric and the people he's working with are doing a great job . Read Eric's comment to get a deeper dive into what he thinks about as a contest designer.

I also got to thinking how similar creating a competition is to creating an exam. Maybe that's because I'm currently writing the final my students will take in a couple of days. In class tests are certainly not the best of assessments but they do have their place and in any event, they're frequently required by school or departmental policy.

There are many similarities between what teachers consider when making tests to what contest designers consider. What concepts and techniques must the students use? Are the problems too similar? Do they ramp up in difficulty? Are they all or nothing or can a student incrementally work their way to a solution? Does one problem lead into another?

There's no big reveal or surprise here today. Just something I've been thinking about.

A couple of busy days coming up but maybe over the weekend I can get back to Advent of Code.

Enter your email address:

Delivered by FeedBurner

Google Analytics Alternative