New Term New Tool - Thonny, a Python IDE

Last year I wrote about, an online IDE that supports multiple languages. At the time it had some rudimentary classroom support and since I started using it, has become better and better. I used it last year with my class because I had to start the year in a lab where I couldn't easily install my own software. I'll continue to use - mostly for it's ability to schedule publish and manage assignments but when possible, I like having my students work locally.

This year I'm excited about another tool - Thonny. Thonny's a simple Python IDE designed for beginners. I discovered it last year but at a time when it was impractical for me to use with my students. This year I can and I'm really liking it. I'm still an Emacs guy and will continue to use Emacs for my python development (video 1, video 2) but for beginners I think Thonny is the way to go.

Some of Thonny's highlights:

  • An integrated Python 3 virtual environment making for ease of installation and consistency across student installs
  • A debugger that shows how expressions are evaluated
  • Great visualizations of function calls that make it easier to understand the call stack and scope
  • The ability to look at memory to understand references.

Rather than go into the gory details in text, I put together this video:

I Believe CS Teachers are Smart and Capable

People sometimes accuse me of being an elitist CS snob that I feel that CS teachers have to have advanced CS degrees.

It's not that at all. Rather, I feel that CS teachers are smart and capable. Circumstances frequently result in a teacher in front of a CS class with limited content and pedagogical content knowledge. It's not ideal but it's reality. Of course I feel that we should do everything to support and encourage these teachers but we should also insist that after a reasonable period of time, they know their stuff.

This is why I hate it when I hear people in the CS Ed community say something is too hard. Git's too hard. The command line is too hard. Functional programming's too hard 1. That's all nonsense. At last year's SIGCSE conference people from a state, I forget which, was considering not using the Praxis exam for CS teacher certification even though the state uses the Praxis exam for other subject areas. They claimed that the praxis was too hard for CS teachers.


I haven't taken the Praxis exam but some friends have. It doesn't appear to be unreasonable at all2.

While I can certainly understand a teacher not knowing much when they start - thrown in due to necessity I think it's ridiculous not to insist that they ultimately get to real mastery.

A math teacher generally has to know math beyond calculus. Science teachers have to have gotten through Orgo. English teachers have to understand Joyce. THIS IS HARD STUFF!!!!3

I think it's insulting to say that CS teachers aren't capable of doing the same in their subject area. '


whether or not any of these topics are appropriate for a particular course is discussion for another time
although I'm not a big believer in standardized exams for certification or in general.
There are plenty of lousy teacher prep programs that don't ensure teachers learn the subject matter they should but the good ones do.

Is the new Secret Sauce ever better?

I read this piece earlier today on Nancy Bailey's blog.

TL;DR (although it really isn't too long so you should read it) - it's on Laurene Powell Jobs, her efforts to "reform" education and why she's misguided as are most of the well to do non-educators working hard to change and in many cases privatize public education.

Laura posts a nice list of simple, common sense ways to improve education. I'll repost them here:

  1. For years, research has shown that high school students need more sleep. They should have later start times. .
  2. Smaller class sizes would help.
  3. Make sure teachers don’t have so many preparation plans.
  4. End advanced placement classes (IMHO).
  5. Improve career-technical classes.
  6. Provide rich extra-curricular activities.
  7. Bring back life skill classes.
  8. Include a social justice curriculum.
  9. Include students on the disciplinary board.
  10. Provide civics education.
  11. Make sure students get opportunities to participate in the arts.
  12. Work to include the community.
  13. Ensure students have access to counselors, and school support staff.
  14. Every high school should have a great library, a real librarian, and technology and books.

Looks very much like what those elite private schools that those rich non-educators send their kids to.

The other day I also overheard a conversation between two professors. One noted that they had just taught a course totally online for the first time and that the professor really had fun doing it.

These got me thinking more about all the secret sauce and magic bullets coming from tech to save education - things like MOOCS or "personalized" learning system.

I started to wonder - have these ever been pushed on public schools because they're better or rather because they cut costs (or in the slightly better case to reach a student that otherwise wouldn't have any opportunity which, in a way is generally cost related).

I couldn't come up with a single instance. They're always a way to replace what I consider personalized instruction – you know, when a teacher has a small class and can personally deal with, learn about, interact with, and teach the child. Kids spend hours in front of a screen instead of working with others. Kids do a MOOC (or maybe drop out of a MOOC) so that you can have your student/teacher ratio reach ridiculous levels. I've never seen any tech solution rolled out to public schools because it's better. Only to cut costs.

How do I know that it's not better? Well, we have Nancy's list above. It's what those rich people pay all that money to the elite private schools for. If all these solutions the Jobs and Gates of the world were so much better, wouldn't they insist upon them for their own children?

Just some Friday food for thought.

Theseus's Curriculum

With the school year starting I was originally planning on writing about my class rules.

Instead I think I'll riff on Alfred Thompson's post today titled Curriculum is Hard. I'm guessing I found curriculum design and development daunting decades ago but at this point in my career it's something I enjoy. In any event, Alfred got me to thinking - when is a curriculum your own?

If you grab a curriculum complete with lesson plans, assignments; the whole kit and caboodle and you use it verbatim it's clearly not your curriculum. It probably also isn't really teaching.

What about the more common case. Math curricula has basically been set for years. Algebra, Geometry 1, and then Algebra 2 and Trigonometry. Most books seem to be sequenced in a similar way and at least in the schools I know about, the math department has some document listing a day by day list of topics. This makes sense since you probably have more than one class of each type and you want some cross class consistency. Particularly during the first weeks of the semester when kids can transfer and then also at the end of term or year.

When a teacher uses that departmental document are they using someone elses curriculum?

What if they create their own homeworks and assigments?

Most teachers I know use the department's curriculum but make their own unit and day to day lesson plans. Most revise them each semester. Typically these teachers do a little more here or a little less there depending on a number of factors.

Are they creating their own curriculum?

What if they re-sequence the topics?

How about adding an enrichment topic?

Back when I taught math I used the departmental syllabus, as many texts as I could find, colleagues lesson plans and whatever I could find but I always pulled it together to something I could call my own. If I didn't, I wouldn't have been comfortable going in front of my class. Was it my curriculum? They were certainly my lessons.

Now, when designing a course I start from the end outcomes and work backwards but when teaching a course, I still look at as many resources as I can find. I'll pull a little from here, a little from there and combine that with whatever I can come up with myself.

So, when is it your curriculum and when is it not?

If you're just delivering scripted lessons it's certainly not yours.

If you know your stuff and you take someone elses material, make it your own and add it to your bag of tricks, I think it's now yours as well.


which is really logic and deductive reasoning using Euclidean Geometry as platform

CS Teachers - we need you to blog

At this past year's CSTA conference, a few of us huddled in a corner voiced a very common lament - "it would be great if more CS teachers blogged." It really would be. We're still a relatively small community and while there's some good conversation going on on mailing lists and on Facebook, those aren't easily discoverable or accessible and in the case of Facebook, there's a question of ownership and permanence.

I've been blogging on and off since 2010. Around 300 posts. Not super prolific but I've been doing it long enough to maybe be able to share a bit of perspective.

I'm not sure exactly why I started. In part I was inspired by my wife who at the time was blogging about her knitting. I was also inspired to share my thoughts after meeting some fellow CS teachers from across the country at a CSTA event in Chicago. It was stop and go for a while and then I took a break. I was re-inspired months later after meeting a couple of CS teachers at another CSTA event - Ben Chun and Helene Martin. Both terrific high school CS teachers at the time who are unfortunately no longer in the classroom (unfortunate for the kids, I wish Ben and Helene all happiness and success in all their endeavors). We all agreed to try to write more and that got me started again. I've been posting around 50 times a year since.

Looking back to when I used blogger, I had 30 - 50 hits on some early posts and that was mostly just me hitting the site. It didn't matter. Writing has let me work through my thoughts. It also creates a record of my thoughts and on how my thinking evolves over time.

Over time, people have told me that they've found some of the things I've written useful or helpful and I'd argue that when people disagree with something I write, even if they don't comment and I've all I've evoked is a reaction of "Z's full of crap," it's gotten them to re-evaluate their own thoughts on whatever the subject and if it's confirmation of their original beliefs, that's OK.

The important thing is that by blogging I'm getting my thoughts down "on paper" and sharing them for the world to take or leave as they please and the more of us who do this, the more we expand the sum knowledge of CS teaches.

As a dispersed community of CS teachers across the country, we need more people blogging on public platforms not in silos like Facebook.

I've heard reasons why teachers don't blog:

I'm new and have nothing to write about

Sure you do – write a paragraph about your plans for the days lesson or how it went. Vent your frustrations (but be careful not to get yourself in trouble). Rave about some students work.

I don't have time

Yes, this is a tough one. If you have to do PD time, maybe your supervisor will let you use it for blogging. To be honest, when I'm writing regularly it doesn't take that long. When I haven't written in a while it takes longer. In any event. It's important and posts don't have to be long

I'm not a great writer

This blog is proof that you don't have to be. I'm stilted and ramble and certainly no Shakespeare. I am the weakest writer in my household and it's not even close. Even so, we all have something to share.

I don't know how

I was thinking about proposing a session at next years CSTA conference where I'd work the group through creating a github pages based blog. In the meantime, there are a lot of easy ways to start out.

and for those who want total control

So, there's my plea. If you're a CS teacher and you're reading this please consider blogging. I assure you, we will all appreciate it and benefit from it.

Teaching APCS-A for the first time

I got an email from a friend the other day. Among other things, he mentioned that he would be teaching APCS-A for the first time this year. He's a little trepidatious. He knows his stuff but he hasn't really done much using Java.

I was going to respond in an email but thought I might share here instead.

TL;DR - for all you APCS teachers who are new or new to Java - learn your core CS, lean on your resources and support and it's OK to tell your kids "I don't know, I'll get back to you.". Don't worry, you'll be great.

The first time I taught APCS was some time around 1991 or 1992. It was at Seward Park High School. It was the AB curriculum - that is one semester of programming in Pascal and one semester of Data Structures and Algorithms. Being a computer science major the core material was never a concern. I had taken APCS the first time it was offered in May 1984 in Pascal and while most of my college and pre-teaching professional work was in C, my college started it's CS sequence with Pascal. I was more concerned with the actual teaching part. I had taught math for a year and a half at that point but never CS and by any measure I was still wet behind the ears. I never finished that first experience because I was excessed to Stuy mid semester. I wasn't particularly happy with my performance but looking back, I think I did a pretty good job given the situation and my experience.

After teaching math for a year and a half I was back in APCS at Stuy. Still in Pascal. I spent the next few years figuring out how to teach CS and APCS in particular along with starting a couple of new classes. When the College Board decided to move the AP class to C++ I was happy, sad and a little worried. Pascal had a bunch of limitations but I had never used C++. True, I was a C programmer at heart but I had never really done the OOP thing. I did, as it turned out, design a number of my C systems in an Object Typed design: I would use a single file per "class" where local variables were de facto instance variables and functions in the file were methods and each file was a singleton class. I read Booch and Meyer on my own but I had no schooling in OOP and no professional experience.

As it turned out, I didn't have to worry. I knew my CS and while it took me a while to become comfortable with OOP, the class, and of course I knew this from the get go, started from nothing and built up complexity a step at a time. The worst that might have happened is that some of my solutions might have been more C-esque than C++.

The move to Java was a little more jarring. Now we had a totally new language. I couldn't fall back on C. It removed memory management and explicit pointers and it had to be used in an Object Oriented manner. I remember asking Mike Schidlowsky, a former student turned friend who was the Java consultant on the Java edition of Sedgewick's Algorithms book how to do something. It had to do with passing and modifying arrays. In C there were a number of ways to accomplish what I wanted to do. In Java, I couldn't figure out how to do it the way I wanted. My friend Mike told me "you just don't do it that way in Java." Again, it turned out that I didn't have to worry. The basic coding was still the same as were the data structures and algorithms. The only challenge was that I had to get into a Java OOP mindset which it turned out wasn't that hard.

While I never really warmed up to OOP - I find other paradigms more natural for me, I knew my CS and got more and more comfortable with the Java (or C++) way of doing things as time wore on. Sometimes I would say "I don't know" or "let's figure it out" but that's OK.

Nowadays, there are many more resources available for CS teachers. If you're new, lean on them. Use the mailing lists, stackexchange, facebook groups. Online resources like, etc. Yes, it's true that you'll be better next time around and even better years down the road but right now, you're probably better than you think.

A number of my former students volunteer for TEALS - a really great program that brings software engineers into the classroom to work with non-CS teachers to deliver instruction. A number of my kids have shared the following sentiment:

I don't know if I'm really helping the teacher to become self sufficient or if I'm a great teacher but I do know one thing - while I'm there, the kids are getting a hell of a lot more than if I wasn't there."

– Remember that as well.

The Cost of AP Exams

Now that I'm back from vacation and summer's winding down I thought I'd start getting back to more classroom related posts. I still have a few summer topics I want to write about – standards and side projects in particular but I'm also looking forward to talking more about the classroom since, after all, at my core, I'm a teacher. When I saw this article in my inbox this morning I thought I'd talk about it.

In the piece, Lindsey Tepe since more kids are taking AP classes and they're very expensive, schools should look to lower other costs related to AP classes so as to provide financial support so that students can take that oh so important end of year exam:

While the College Board continues to reimburse about one-third of the test cost for eligible low-income students, only about half of states are now offering any further financial assistance for students.

Ms. Tepe's solution? Lower text book costs. As a way of lowering school costs, I'm all for it. I've used free online resources in lieu of textbooks for years but the savings should go somewhere where it can make a difference. Perhaps lowering class sizes. The fatal flaw in Ms. Teps's piece is that it continues spinning the misplaced narrative that AP Exams are a very important part of a child's education.

Let's be reminded of something: The AP Exam is one thing - an exam - a single test at the end of the year.

The narrative is that students should take more and more AP classes, that they're somehow better for kids. Part of this is due to the potential college credit and part is because the public has been bamboozled by the ridiculous school ratings that give credit for AP classes taken. Back in "the day," AP classes were basically early college. You could then argue that they were the most rigorous classes offered in a school. AP Calc was basically college Calc. Same for APCS-AB, AP-Bio and the rest. Now, with classes like APCS-P aimed to be accessible to typical high school students in the lower grades, they can't (but still will) make that claim. In fact, at Stuy, my former school, there are plenty of non AP classes that are more rigorous than AP classes and the best AP teachers don't always cover the whole syllabus because they're more concerned with their students actually learning rather than scoring 5 on an exam.

On the college credit front, if a student has a high probability of saving money through AP credit then I'm all for it but otherwise, it's just money going to the college board.

It seems ridiculous for me to have to write this but the important part of a class is, you know, the class. Not the single exam given by an outside agency at the end and graded after the semester concludes.

My suggestion? Offer college level work to students that are ready for it but don't push the AP exam. This would save a ton of money. What value does the college board actually bring to the table? Remember, they're making a pretty penny on all of this testing. A math teacher should be able to teach calculus with or without AP. A good text being used by that teacher in class - be it free or paid for is actually much more important to a student learning calculus than a single exam taken at the end of the year. I'd go further and say that I'd trust the teacher's exam more than the college board's. If a teacher knows the math but needs to see some sample syllabi, they're a web search way. The same is true for most other college courses that have AP equivalents and maybe even more so for computer science.

At the end of the day it should be about students learning not about students taking high stakes exams.

Ethics, Cybersecurity, ethics, curricula and standards

This morning, I read Alfred Thompson's post on teaching cybersecurity. as Alfred says, it's something of a CS Ed buzzword this summer.

Another hot topic in K12 CS Ed this summer is the inclusion of ethics in our CS courses courtesy of efforts like the #ethicalCS twitter chat every Wednesday at 8:00 Eastern time hosted by Saber Khan.

Discussions about both topics include "where should we be doing this?" "What should we be doing?" and of course "How?"

This got me thinking about designing curriculum from the top down - that is, as dictated by outside forces: principals, superintendents, states, industry or bottom up: a teacher sees a need and designs something for their students.

The best classes I've seen are those designed by a passionate teacher from the ground up. I met Doug Bergman at this past year's CSTA conference. He's terrific. I think he came to the conference wanting to find out more about what cybersecurity really meant. By the second day, he was raving about all the amazing possibilities. I'd love to be in the class he develops.

On the other hand, when topics or standards are forced down from above, I've seen something entirely different.

I've observed and been involved in cybersecurity discussions with CS teachers. The discussion goes something like this:

  • Well, we do memory allocation in course XYZ so we can give a homework assignment there.
  • We can rewrite the story (theme) for the assignment in our data structures class.
  • We already do a crypto assignment in algorithms so we're already doing it.

I've seen the same with groups of math teachers discussing implementing common core. They talk about resequencing topics, rewriting a few word problems or homework assignments but at the core, the feeling is "we already know how to teach math."

It gets worse when there's a standardized or high stakes test at the end of the tunnel and you get the "you need this for the test" type units.

This might not be as big of a problem in K12 CS right now because so many teachers are just learning their craft but in established fields such as math or college CS, when an edict comes from above telling a teacher how to teach, unless the teacher really believes in it, the teacher will only pay lip service to it. If it isn't an issue in CS Ed right now, it will eventually become one as our field develops legs.

This is arguably a bigger issue with Ethical CS than cybersecurity. If the teacher doesn't really believe it's an important topic, we'll get lip service at best and in the case of ethics, unless the teacher really believes it and models it, the students will be able to tell that it's a show.

I don't have an answer other than what my friend and mentor Herb Greenhut told me many years ago "Solving the education problem is easy. Hire good teachers and get the f*ck out of the way."

Grit: A Kind Word and a Gun

Back in May, I read this post about Angela Duckworth and Grit. Grit has become an education buzzword in the past few years so I figured I should read Duckworth's book. It took this long because there was a long waiting list at the New York Public Library to get the ebook. I'm still not quite finished with the book but I thought I'd share some of my thoughts on the book and the buzz.

The first big takeaway is "you can get much further with a kind word and a gun than with a kind word alone." Or in grit terms Duckworth says a number of times that Grit is important but that other factors such as talent do indeed come into play and towards the end of the book she lists other character qualities that are arguably more important than grit. I'll get back to grit + other qualities towards the end of this post. On the buzz side, all of that's forgotten - in the ed reform world it's all grit all the time. We must teach it at our low income schools and we should include grit in our evaluation of teachers and schools.

Duckworth recently has come out to say grit shouldn't be used in evaluating schools and teachers but as I mentioned a few days ago, ed reformers have ways of taking arguably good ideas and using them towards awful ends.

So we have a basic premise that hard work and sticktoitiveness is important but so is talent. Talent alone won't get you as far as talent and grit.

So in spite of the "ed reformers" take on grit, given Duckworth's balanced perspective, I was hooked.

Where Duckworth started to lose me, however is when she dove into the education landscape for examples.

First up is Teach for America. Certainly the founder, Wendy Kopp is full of grit and Duckworth talks about teachers needing to be gritty but when you talk about TFA, you're talking about a group that:

  • has a 5 week training program - not nearly enough to learn to teach
  • has a 2 year commitment before moving to "better things"
  • encourages practices like scripted lessons

None of this sounds particularly gritty to me.

Duckworth also highlights the KIPP charter chain as an terrific example of grit and the success that follows. She touts KIPP's graduation rate neglecting to mention that like most other charters claiming miracles, KIPP's stats should be eyed with scrutiny (link, link, link). I would have expected a researcher to dig a little deeper.

My friend, former colleague, and TFA alum Gary Rubinstein visited a KIPP school in NY a few years ago. His take:

So what I saw there was not very impressive. I didn’t see any classes where teachers were getting that mythical period and half of growth in one period. I saw some good teaching, mostly average teaching, and even some very bad teaching. I saw a novice teacher struggle to control a class of nine students. They were walking all over him and accomplished very little that period.

And in terms of KIPP's grit training:

I also saw the ‘grit’ training program which amounted to the students getting the teacher to define very clearly how little homework they would have to do to still get their candy bar rewards.

Finally, Duckworth holds up Geoffrey Canada's as another shiny example failing to notice that again, the Emperor has no clothes and if you look at attrition, the results are far from stellar.

All of this left me thinking that if Duckworth was so off base with these three example where I have some details of the behind the scenes going on, how much can I trust the rest of the book?

In spite of this, I still agreed with Duckworth's basic premise so I read on.

Later in the book, Duckworth talks about developing grit. This quote struck me:

Like a lot of parents I had a strong intuition that grit is enahnced by doing activities like ballet… or piano … or football…

It struck me because it seemed funny coming from a researcher. It reminded me of Christopher Alexander's "A Timeless Way of Building," a book on architecture that is sometimes credit as the root source for Object Oriented Programming. Alexander talks about how societies throughout history and throughout the world "knew" how to build certain structures – barns, homes with certain features, even towns. Back in the day we didn't have engineering and architecture schools but we figured out how to do these things and we figured it out pretty much universally. Duckworth is basically saying "parents know." It reminded me of my belief - "teachers know." This applies to teaching content and teaching skills like grit. You can't script a grit lesson. A good teacher knows when a student needs encouragement, when a student needs to be coddled and when a student needs to be redirected.

This post has been something of a ramble but I want to get back to grit and other qualities and how people are talking about grit as the be all and end all and not just a component.

Over on AVC, in the post that got me to read Grit, Fred closed with:

If you hire and manage people, if you run start and run companies, if you invest in people and their projects, then Grit is a book you should read.

He's absolutely right but remember the whole person and what you've prescreened for before you consider grit.

Way back when discussions were ongoing about the design for AFSE - before the DOE stopped returning my emails and froze me out of the process I was at am meeting. A bunch of tech industry heavy hitters were there. We were arguing over admission screening - did the school need one. My position was that if you wanted to produce "Google ready" engineers after high school you needed one. If that wasn't the goal you didn't. One of the DOE representatives posed a question to the tech people: "what qualities do you look for in a hire?" This elicited responses like hard working, able to work with others, able to communicate. The DOE person was proud to have made his point that these tech companies weren't looking for talent, advanced skills anything similar - grit was all you needed. I followed up - "and from what schools do you look for the kids with these qualities?" - MIT, Harvard, Cornell… and the tech people got it - they were already screening for the academic stuff so all that was left to look for were the other skills.

Should we look at grit? Certainly. Just remember that it's a piece of the puzzle just like everything else.

Using Emacs 36 - A Touch of Elisp

I've been working on a vue.js project this summer. During the school year I really can't dive into code so it's been fun.

I've already showed you most of the Emacs tools I use for development. Projectile, Ace-Window, IBuffer, Swiper / Ivy and all. One thing I couldn't easily do was arrange windows the way I wanted.

I've been setting up Emacs with one large window and a couple of smaller ones:


I can easily switch the buffer in the window and I can easily switch windows but what I wanted to do was swap the buffer in the large window with one of the smaller buffers and leave focus in the larger buffer:


I started looking at perspective mode and persp mode but neither work with the latest Emacs. After poking around at other packages I realized that ace-window does most of what I wanted. Ace-window has a function that swaps the buffers in two windows named ace-swap-window. The only problem is that it leaves the focus on the window you swap to not the one you started in. Ace-window also has aw-flip-window which then returns the cursor to the previous window.

With a little elisp, we get the behavior I was looking for which I then bound to C-1 z:

(defun z/swap-windowsn ()

(define-key z-map (kbd "w") 'z/swap-windows)

The video goes into more details but it shows that if you're not afraid to explore a bit you can pretty much get Emacs to do whatever you want.

Enter your email address:

Delivered by FeedBurner

Google Analytics Alternative