Reading and Writing Recs

I've been on both sides of the recommendation game. I currently read all the recommendations for students who apply to my honors CS program at Hunter and some of the ones written for the Macaulay Honors program. I also read some for the CSTUY summer program. On the other side, I've written hundreds if not thousands of recs for seniors when I was teaching at Stuy.

I've been meaning to write about recs and when I saw yesterday's post on I thought now would be a good time. While the situation is not quite the same, much of what Fred wrote resonated strongly with me.

I wrote a lot of recs at Stuy. In a year after I taught juniors I'd typically end up writing for anywhere between 40 and 75 kids and each kid would apply to between 5 and 15 schools. Some were accepted early and in many cases you use the same rec without tweaking for all the kid's applications but it's still an enormous load.

I also don't think I'm particularly good at it. Writing doesn't come naturally to. That said, I try to do an honest job.

The first and most important thing I do is make sure each student understands that I'm not trying to get that kid into their percieved dream school. My job writing a rec is to contribute to a picture of who they are as both a student and as a person. The hope is that the college admissions people will be looking for best fit students and that the picture the application creates makes the fit clear 1.

Beyond that, I try to say something personal in each rec. Recount a particular project or event. It's hard. It might be easier for English teachers - English classes allow for much freer discussions and assignments where students can reveal more about themselves. It's harder in subjects like Math and Computer Science. I'd invariably be asked to write recs for a number of kids – good kids that were quiet, did there thing but to be honest, never did much to stand out. I don't necessity mean stand out in terms of grades, I mean in terms of making themselves known - revealing who they were. I also try to keep recs short. Readers have a lot of these to go through. I don't want to add to their load.

Many teachers, including myself try to address this problem. We interview the kids, have them write mini-essays and just plain struggle when it comes time to write.

To make it more challenging, the deadlines are all together so you have to get them all done in a short period of time and at the same time not fall into the rut of having them sound all the same.

On the reader side, similar to what Fred said about references, a lot of it is about what isn't written and about how it's written. The challenge is that my code as a reader might be different from the teacher writing the rec.

The key thing I look for when reading is a connection between the writer and the kid. Often I read a rec and could apply it equally well to every applicant in the stack. I also know that when I write recs I've been guilty of this and it really does nothing to help the student.

I also don't want to read about averages and test scores or anything that's already covered in the application. I already get the numbers and if a kid, let's say, volunteered at a community center, it's already on the application. I don't want a teacher to mention it unless they were involved or can otherwise add something that I wouldn't know just from reading the appkication.

If I come away feeling that there's a connection between the teacher and student that says a lot to me. It means the kid made an impression on the teacher.

For my Hunter Honors program I have an advantage (or possibly curse) over when I read for other programs and this is similar to what Fred wrote about following up on references. I know some of the teachers writing the recs and I usually know teachers in the schools. Since the number of applications I'm dealing with isn't huge, I can reach out to my people and find out what's what. Last year I was able to justify accepting a student based on additional information I was able to get and now half a year later it's clear that the student is a terrific fit.

This would all be simpler if we didn't have to play games with recommendations. When I was a teacher. rather than writing 50 - 70 recommendations, I'd rather have 20ish phone calls. One with each school. I could briefly talk about the kids relative to each other and to former students who went to any given institution and that's that. It would be faster, easier, and fairer.


Personally, I think the whole college application process is both unfair and arbitrary but that's a discussion for another time.

APCS-P - Bigger Intake Or Leaky Pipe

Advanced Placement Computer Science got top billing on Alfred Thompson's Things I'm Watching in 2017 post. Alfred talks about how APCS-P exploded onto the scene and wonders what will happen with APCS this year.

I have some questions as well but mine won't be answered for years to come, if ever.

Like it or not, the College Board has an out sized influence on K12 education. As long as people are convinced that AP=good there will be a push for more and more AP classes and APCS-P is a perfect class to push. CS is the hot topic in K12, the topic is getting a big push from both politicians and industry, the class has no pre-requisites and in spite of being called a college course is somehow appropriate for a typical tenth grader.

The concern here is that at the end of the day. APCS-P is an exam or rather an exam plus two other assessments. The quality can vary greatly. I've heard of APCS-P implementations that seem pretty rigorous and I've seen implementations that are, quite frankly, a joke. The question is this: is APCS-P both motivating kids to go on to the next level and just as importantly preparing them to succeed at that level?

We might never know.

A high school might only offer APCS-P. If APCS-A isn't offered, we might not know if the student went on to take more CS and we won't know if the student succeeded or not. I've seen this with some very high profile, popular, after school/summer non-profits. The kids have a great time and the non-profits rave about how much their kids learn but then the kids take a real CS class in school and drop like flies. Was it the teacher/professor or did the non-profit set the kids up to fail by convincing them they knew a whole lot more than they did and that CS was super easy all the time.

If credit is given for APCS-P, it looks like it will be blanket credit. CS majors and minors will still have to take all the same classes in college and CS so it will be very hard to tell if APCS-P is responsible for any uptick in CS.

At the end of the day, the College Board is going to make a lot of money but if APCS-P becomes the standard high school CS course will this leave us with true, quality CS4All? I have my doubts.

Using Emacs 2017 Recap

This past year I recorded 14 Using Emacs videos. This is on top of the 25 videos I made last year. The fall off in production is understandable. I got through my day to day configuration in the late 20s and since then the videos have just been on things I've rediscovered, things that became useful and things that I just found interesting. It was also a busier year.

Why did I start the series? Mostly for my students. There's the built in Emacs tutorial and other beginner resources but how do you go from the basics to a real working configuration? For years I would show my kids Emacs and use it in class but there was never a path for them to follow from beginner to craftsman. I hoped the videos would fill the void.

It probably didn't. I don't think I'm getting greater Emacs adoption from my students but on the other hand, I've found making the series rewarding for other reasons.

First and foremost, it's allowed me to be an active contributing member of the Emacs community. I haven't written any Emacs packages nor am I an active guy on any Emacs forums but this is a way I can do my part.

Second, although there hasn't been a great deal of comments on the videos or blog posts I've gotten to know a few people that I wouldn't have gotten to know otherwise.

It also shows that that if you put things out there people might find it useful. I don't know how many people saw my Emacs posts at the start but a year and half later I've got 1,700 YouTube subscribers. Sure, that's nothing compared to many YouTubers but for a guy making schlocky videos at his desk about an as much as I hate to admit it non-maintream editor, I think it's pretty cool.

The question is what to make videos on moving forward?

I thought I'd throw it out to the community. Here's an embedded poll. Feel free to suggest other topics either on the blog or as a Twitter reply.

I can't promise I'll get to all or any but I'll certainly check out the popular suggestions.

survey service

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:// 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