#TeachersCoding: Improving Report Writing with CommentHelper

Whenever I start the process of report card comments, I always think of how I might make things more efficient. Text-expander? A comment bank nearby for cutting and pasting common phrases? In the end, however, I end up writing them all from scratch anyway, usually in a spreadsheet. Storing comments that way means that over the course of a year, I can see the progression of my comments for a given student. I like being able to do that, but using a spreadsheet as a writing interface is lousy.

I started thinking about my comments workflow a bit earlier than usual, so there was time to think about using code to redesign the process. I write a lot of the same things over and over again in the process of writing comments. Might it be possible to use code to make this more efficient?

The first thing I thought to do was some word analysis to figure out what phrases to use. I picked up a nifty book: Web Scraping with Python which has a chapter on language processing. There I learned about the n-gram library in Python, which has the ability to parse text for phrases of a given length. I took the text of my comments from last year and ran them through a script to create a list of three, four, and five word phrases that appeared multiple times. I then took this list and embedded it in a file that used the jQueryUI Autocomplete function to make those common phrases available.

Here was what I ended up with:

Screen Shot 2015-10-09 at 8.01.18 AM

The common text area is where I put the blurb about the course that is common to each class of students. Clicking the 'Add Common' button adds that text to the text box below. I type the student specific text into the horizontal box below that button, and hitting the right arrow key dumps that text into the comment box below and clears out the text input. As I type into the middle text box, common phrases pop up, and I can select them with the arrow keys.

How well did this work? Well, the autocomplete thing didn't end up being that useful. The phrases that my script picked up certainly showed up frequently in the words that I typed, but it didn't feel like using them saved much time. The autocomplete function I put in only matches the complete text in that box, so I would have had to know in advance that I wanted a common phrase, hit the arrow key, and then start typing that phrase afterwards. Not really a time saver. I suppose curating those phrases a bit more carefully would have made for a better use of that function.

What was interesting, however, was that it was easier for me to focus when I was constantly writing in the text box, and then appending that text to the comment when I knew the text was the way I wanted it. Clearing out the text each time made it easier to say exactly what I wanted to say without having to read the entire sentence before. I occasionally moved down to the comment box to patch up the wording directly, but most of the text input was through that middle box. I wonder if clearing the box also cleared my head to let me think what I wanted to say next.

Anyway, it was a fun exercise. Feel free to adapt and use for your own purposes. You can download the code from Github as a zip file. The file comment-helper.html is the file you want to open. You could clear out the phrases in the phrases.js file and use your own.

Let me know if you try this to good effect. Happy coding, and happy Friday everyone!

Leave a Comment

Filed under computational-thinking, programming

Perplexity and Figuring It Out

For two years in a row, I've hit a sweet spot of engagement, discussion, and really invigorating student interaction with one particular exercise in my web design course. I sit with a web browser console open, and just ask students to go through this cycle:

  • Make a prediction of what's going to appear when I hit enter.
  • See what actually appears.
  • Adjust your model and repeat.

Here was today's series:
Screen Shot 2015-10-08 at 3.56.01 PM

I say almost nothing aside from "here's another one". The amount of laughter, head slapping, and students talking through their attempts to understand is a beautiful thing to witness. The fact that no student blurts out the answer speaks to the respect my students have for each other and for this model.

This is a simple type of activity that I do from time to time, and only from time to time, because I don't want it to lose its novelty. There's no engagement from a real world context. There's no lecture beforehand about what I'm about to do, and how I want them to respond. (Ok, I do ask that they not blurt out the answer or how it works once they know, but that's about it.)

I hope to establish an unspoken agreement with my students that goes something like this:

  • There is a pattern, and I am confident that you'll be able to figure it out.
  • If you can't get it right away, that's fine. You probably aren't the only one.
  • If you are the only one, then you have a lot of people around to nudge you in the right direction.
  • If you're wrong, you'll get another chance to be right in just a minute.
  • Once you know how it works, you might not care anymore. Enjoy the journey.

Getting this agreement across takes time and trust and is really difficult to force. It's remarkably satisfying when it happens. The important part is the consistent commitment to failure: Everyone will fail at least once. Everyone will also likely be wrong at least once after they are right.

Leave a Comment

Filed under teaching philosophy, teaching stories

Building (Ev)anAcademy Exercises for Reassessments

I've written multiple times previously about WeinbergCloud, the system I created using the Meteor framework that lets students sign up for reassessments. Over the course of the semester, I've been developing some aspects of the system that I'm excited about, and I'll talk about them all eventually. One in particular has held my focus for the past few days, and it's probably the one feature I've been talking about for the longest: building a reassessment engine within the system.

Part of this is out of necessity. The wireless network settings on our school network have changed, so the Python reassessment engine that I've used for reassessments over the last two years no longer works when hosted on my personal laptop. I've managed reasonably well this year using problems from textbooks and handouts, but it became time to automate this using my new knowledge of Javascript and Meteor.

Whatever your feelings about Khan Academy, the reality is that the organization has put a lot of energy and resources into developing a pretty comprehensive web application built around assessment. Not only are these resources available for free for teachers and students to use, but the source code is as well. The code for anyone to be able to run their own local version of exercises has been around for a while at Github here. The Javascript libraries that go with these exercises are also pretty impressive and capable - generating random numbers with constraints, simplifying fractions and expressions, and numerous other helper functions are already written by people that code much better than I do. They also wrote a math-typesetting library called KaTEX that has some performance advantages over some other libraries...or so I hear. I'm sure much of the 'why' here is lost on me.

After two days of tinkering, I've adapted some of their code in my app for the purposes of generating questions for reassessments. Writing questions and defining variables is all done in HTML, just as in their own local application, which means it's possible to add questions without having to load in a database through FTP or some other method. The code rendering the questions onto the webpage I had to write myself, but eventually I determined some ways to make this work for me.

I can put in HTML and Javascript definitions into text areas. Here's an example of a question asking for a simplified fraction for slope:
Screen Shot 2015-10-02 at 9.14.46 PM

A preview appears below to make sure the question appears the way I want it. In the variable definitions are strings of Javascript code that calculate and define the variables using the Khan Academy utility functions. The question text is then rendered using KaTEX. The random values change on each reload of the page, but these values could potentially be fixed for an individual student's quiz.

As I create frames for questions, I get a virtually infinite supply of questions I can use for assessing students on learning. Here are a bunch that I put together for testing the interface:

Screen Shot 2015-10-02 at 9.35.43 PM

The next step is to link each question frame to a course standard and build my database of questions. I'm loving the possibilities for building on this further, and will share as they develop. Stay tuned.

Leave a Comment

Filed under computational-thinking, programming

#TeachersCoding: Building an Image Downloader for WODB

If you read my blog regularly, you know how I feel about using technology to manage repetitive tasks. It's intimidating to learn to code without purpose. Seeing how code can be used in the context of making a teacher's job easier is a much more direct motivation for learning to do it yourself.

Here's my next installment in the TeachersCoding series. In four minutes, you get the basic steps and tools for putting together a Python program that will download images from Mary Bourassa's excellent Which One Doesn't Belong website . All that's missing is you going through the steps yourself:

This program doesn't download all of the images from the website - that's a task for you to figure out and do on your own. It doesn't take much. My goal is to have more teachers get hooked by the thrill of seeing code they create do something that is practical and adaptable to their own purposes. We need to grow our ranks.

Share any issues you find in the comments below. I'm excited to get this out there and see what you do with it.

Relevant links:

Leave a Comment

Filed under computational-thinking, programming

Let 'em Talk

We started the topic of Venn diagrams in Math 9 this week. In a class of international school students (and perhaps any group of students) the range of knowledge on a given topic is all over the place given their different backgrounds and school histories.

The teacher-me of ten years ago would have done an overview of the concept of a Venn diagram. I would have started by asking questions about different parts of what was there in a Socratic fashion. It would have been full of questions that I had written down in my lesson plan designed to get students to think deeply about the content. Based on asking questions of a sample individual students, I would have gotten an idea of what the class knew. The students who knew the material already would either raise their hands and try to answer every question, or stay silent and answer every question on the worksheet in a matter of minutes. The students that didn't know the concepts, but wanted to, would likely stay quiet until either I approached them or until they could ask a friend for help. The students that were used to being defeated by math class would pass the time by doodling, pretending to be involved, or by distracting their friends.

This isn't the teacher I am today. I've written about the power of social capital in the room before, so this is nothing new, but I don't tend to do the 'topic overview' style lesson anymore. The one or two students that nod while we go through material aren't representative of the class. The strength of my experience in the classroom is being able to observe students working and know what to do next. I can't do this while standing at the front of the room and speaking.

My approach now is, whenever possible, to make an item of the topic a conversation starter. I gave them this image of a Venn Diagram, which appears in a collection of questions from old New York State Regents exams at http://www.jmap.org:
Screen Shot 2015-09-11 at 8.34.49 AM

I gave them a series of questions that required them to figure out what they remembered, knew, or didn't know about the topic. Students made arguments for the definitions. Their disagreement drove the need for clearer definitions of what the intersections of the sets meant, for example. I was free to circulate and figure out who knew the concepts and who did not. Many of the issues that arose were resolved within the groups. Those that still had lasting confusion were my targets for conversations later on.

As I've added years to my experience, I've become more comfortable relying on this system to drive what happens in my classroom. Every time I get the urge to just go over a topic, I remind myself that there's a better way that involves students doing the heavy lifting first. There's a reason students are in a room together for the purpose of learning, and that reason is not (all) about efficiency. Humans are social creatures, and learning is one of those processes that is driven by that reality. There are moments when direct instruction is the way to go, but those moments are not as frequent or necessary as we might think at first.

1 Comment

Filed under teaching philosophy

#TeachersCoding: Picking Groups

In my previous post on using OneNote with students, I wrote about the need to choose students to be responsible for each day's notes. This needed to be deliberately planned and fair to students. Here were my requirements:

  • Over the course of a quarter or semester, students had to be picked around the same number of times.
  • I needed groups of two or more students for redundancy.
  • If a student was picked for a given week, there should be some time before being picked again. If repetition of a given student did occur, cycling through the class was a requirement before that student could reappear.

After a while playing around with this, I came up with the code below. Feel free to play with the code. It's embedded in this post through the nifty tools from http://trinket.io..

Here's a walkthrough of the algorithm: fill a list with the student names, and then shuffle the list. Create groups of the desired size until there aren't enough to create a full group. Make a new copy of the student list, shuffle it, and then remove the students that remain from the first list. Finally, tack those remaining students at the beginning of the second list. Repeat until you have the number of groups that you are looking for, and then print out the list.

I can see a number of other applications for something like this. My hope is that you take some time to adapt it to your needs, and then circle back here to share what you used it to do.


Filed under computational-thinking

Teaching from Anywhere

I use my phone as a document camera, which is nothing new. AirDrop is an option since my school computer is now running OS X Yosemite. I was using my own Python web application to upload these to the computer last year, but that was limited to one file at a time. Now I can send a whole stack of photos of student work at once, which makes it the obvious choice.

The laptop is parked to be plugged into the projector in a spot that doesn't sacrifice student real estate, but is accessible if I need to get to it:


The thing that has always bugged me is having to be in one place in the room to do, well, anything. I like sitting with students. I have interesting and useful conversations with students when I'm among them, not while standing at the front of the room. My solution in the past has been to bring the laptop around the classroom with me and sit down next to students. Two things bother me about this:

  • When move to join a table next to students, I always take up more room than any other person. This is because I'm there with a laptop, Wacom tablet, and some notes if I need them for the lesson. My students are too polite to actually object when I move in and they always consolidate their things to make room. I know the whole time, however, that they are wishing I wouldn't. This whole process repeats if I want to move during the lesson, which I always do.
  • I have an Apple TV that I've used in the past to wirelessly display my screen in this situation, but the lag between my movement and the display is enough to be uncomfortable for me, and render my handwriting into the illegible range if I'm not extremely careful. I can stream student work to the Apple TV from my phone directly, but without the ability to zoom in on what's actually important or annotate, the capability limits more than it offers.

I have had the wireless kit for my Wacom tablet since last year, so that doesn't need to be connected to the projector laptop anymore. To switch applications (which I do frequently), write more than a couple words on the screen (which is more efficiently done through typing), or upload student work, I've always needed to go back to the laptop. This additional step during class is a moment of dead time - a moment during which students have no choice but to wait and do nothing, or do worse. This moment of dead time has been an unavoidable consequence of my classroom design and configuration.

The arrangement that has minimized (if not eliminated) all of these issues for this new year is this set of devices:


I already mentioned the wireless Wacom tablet for handwritten work. The wireless keyboard (picked up during RadioShack's sale of excess inventory this summer) lets me type from anywhere in the room. The Magic Trackpad lets me do the rest.

I can take all three of these anywhere in the classroom if I need to, though often one at a time will suffice. I can switch applications, write on the wall, and type from pretty much anywhere. For sharing, viewing, and cropping student work, I can use the trackpad to manage the stream of photos that I (or my students) send to the computer through Airdrop.

This freedom to run my class untethered from the computer and centered wherever student thinking is happening is worth every ounce of aluminum, glass, and plastic. This freedom makes a difference.


Filed under teaching philosophy

Rethinking Class Notes with OneNote


Rather than being the source of all of the notes for each class, I'm having students contribute to a OneNote Class Notebook. Two students per class are responsible for making sure that the class warm-up, practice problems, content and discussions, and questions are all updated on a page within a notebook. Since the pages are all editable by all students, this will lead to a collaborative document that represents all of the work we will have done by the end of the year.

I had an interactive whiteboard in my various classrooms for eight years straight. Three years ago, I gave mine up for a number of reasons. In its place, I chose a projector, tablet, and stylus, which let me move around the room. The goal was the same - create electronic versions of the written work I (and students) did in class beyond the duration of a single class period.

Electronic class notes, at least in theory, solved a number of problems. Students that were absent didn't need to borrow notebooks from a friend to know what they missed. Students that might not be quick at writing down notes from the board could copy those notes later. This also served as a record of what actually transpired in class, which I have found useful for planning purposes later on the year, as well as in future years.

Unfortunately, students rarely take advantage of these capabilities. Students nowadays don't tend to copy notes from class that they miss since they are available otherwise - the benefit of muscle memory that comes from writing down the important parts is one of the obvious losses. Problems that get written down are not connected to each other because I don't necessarily do this in what I write in the notes. The handouts I make are small enough to be taped/glued into their notebooks, which means students shouldn't have to copy over the problems. When I tell them to do these problems in their notebooks, some students try to do them on the small sheet, even though there is limited space. Students do try the problems from the class on their own by looking at the class handout, which is important, but they don't tend to take the time to write down the definitions or concepts that they will need to remember for later. Much of this we develop as a class after doing problems, so the benefit of that social capital in the room does not pass to those that miss class.

I also admit there is an inconsistency in what I ask students to do with those notes. Students ask me to wait for them to copy solutions to problems during class before moving on. My response is to ask them to do that outside of class since I want to spend time during class doing problems, not copying. I see this as a reasonable goal, but given that students don't tend to correct their notes outside of class, I doubt that students actually do so after I suggest it.

I've also thought about looking into interactive notebooks, but am nudged away from them for two reasons. One is the initial time investment required. I understand the idea that once the notebooks have been created, they can be used in future periods or iterations of the class with minor tweaking. I've only taught the same course in a row a few times, however, and never with multiple sections. This has never seemed like a worthy investment in the quality of learning it enables.

The bigger reason - and the reason that wants me to get away from creating notebooks all together, not just interactive - is that interactive notebooks consist of me being the source of virtually everything students record in their notebook. Yes, they fill in the blanks and provide examples, but they can't move forward unless I provide them the structure. To some extent I provide that structure with anything I do in the classroom, but this seems to be a step backwards in helping my students understand how to structure learning on their own.

By the end of second semester last year, I pledged to come up with an alternative to the class notes I had been creating for students. I had sworn off Google Drive and Google Docs due to China blockage issues and a lack of a viable VPN solution or all of my students. I have seen a lot of creative use of student crowd-sourced resources that got away from a single source of teacher-created notes. When I first met Darren Kuropatwa a few years ago at the Learning 2.011 conference, he described creating a structure like this through class blogs. While we had a WordPress server at our school, I never liked the interface as a way to easily get the sort of interaction that I wanted about the class, so I didn't move forward on making it happen then, or for the past, um, four years.

When our school made the move to Office 365 last year, however, I found that OneNote, and specifically, their Class Notebooks option, made a pretty clear path toward what I pictured for this resource. I've based my redesign of how class notes fit in to my instruction through this structure.

Screen Shot 2015-08-30 at 2.36.32 PM

For those that don't know, a OneNote notebook can consist of multiple sections (which I'm labeling Unit 1, Unit 2, etc), and each section consists of multiple pages (which I'm labeling Day 1, Day 2, and so on.) In addition, the Class Notebook (which is specifically offered to school that adopt Office 365) offers three distinct sections:

  • A content library, in which teachers can read, edit, and view pages, and students can view, but not edit.
  • A collaboration space, in which both teachers and students have read/write/view access to pages and sections.
  • An individual section for each student, visible and editable by both the teacher and the individual student, but students can't view each other's individual sections.

Through either the browser or a native application, students get real time view and edit capability of any notebook that is shared with the class. This means we have the potential for a truly class authored resource for each group of students, which is ridiculously cool.

To be clear, we're been working on the roll out of some new computer policies at our school, so I've had to figure out what students do and don't have access to before creating expectations that can be assessed. Now that students have figured out how to get to the notebooks, here is my plan for students taking charge of the class notebook.

Each class will have two students selected to manage the day's notebook page. By the next class, the page for that day's class should contain:

  • Warm-Up and solutions
  • definitions and explanations of concepts discussed during class
  • 4 – 6 practice problems and solutions
  • class handouts
  • questions or ideas that we didn’t get to during class

Grading for this element of the course is binary (Meets/Does Not Meet Expectations) but is also ongoing throughout the semester, so I can give students feedback on their day's notes and ask for it to be updated/improved.

Since we've had a few days of class before students are getting control of the notebook, I've made the notes at the beginning so students can see what I'm looking for. Students have also suggested that they could add links to resources they find online that they find helpful, and I'm all for this. I'm sure that we will come up with more features as time goes by.

I'm just at the beginning of this, but the comments from students make it sound like they are, at least somewhat, into giving this a try. I know I'm going to be sharing things that the class puts together at the front of the room - that's why I have a projector and the resources to do so, and those will continue to be in the notes. I'm hoping that by giving students more ownership of this entity by having all of us create it together. This doesn't necessarily change how students are using their notebooks in class, but I think that might be something that happens as a direct consequence of shifting emphasis to an online notebook.

I'm giving this a try, and as with anything I try, I'll do my best to share how it develops here. I'm pretty excited to see what it becomes over time.


Filed under Uncategorized

A New Year, A New Formula Sheet

I wrote earlier this year about my difficulties with equation reference sheets. Students fall into the habit of using them like a menu rather than a set of tools.

Yesterday I had the great experience of trying a revised approach. The idea is to rely more on memorization, but only so far as keeping close definitions that are crucial to understanding.

A student asked during a quiz for a formula for electric field. I said I wasn't going to provide one, so I pushed further to find out why this student needed it.

The student asked for the relationship between electric field, charge, and force. I provided this:

The student subsequently nodded and told me what went where. I then stepped away, keeping the post-it note with me.

This was an application of the definition of electric field, not Coulomb's law, and the student either knew this, or guessed. In either case, it was enough to enable the student to then solve the problem completely.

I don't know yet what this means, but it seems like a step in the right direction. I wonder if providing a reference sheet with random elements erased might be enough of a skeleton to encourage the students to know how to fill in the blanks, but wouldn't allow the sort of hunting that students often do in a problem solving situation.

It has been a nice start to the year, folks. Here's to a great school year for all of you.

Leave a Comment

Filed under physics, reflection

2014-2015 Year in Review: Work & Life Balance

This is more of a comment on things I did outside of the classroom rather than in, but it was something that my wife and I made a focused effort to do during the second semester.

The idea was simple: buck the routine of the house (and classroom) during the week with something specific that didn't involve work. Make dinner with friends. Go for a walk to somewhere new in the neighborhood. Watch a movie. Work on a fun side project.

These scheduled, specific plans meant I had a reason to leave my classroom and end planning earlier than the usual, which often pushed well past 5:00 PM. If there was a need to do more before the next day, I'd take a look at it before going to bed. I took the time to ask myself whether the work left unfinished was actually going to make the learning better the next day. Sometimes it was, often it was not.

I realize now that Parkinson's Law is notoriously problematic for perfectionists like me:

From Wikipedia, the free encyclopedia:

Parkinson's law is the adage that "work expands so as to fill the time available for its completion....

There is always more tweaking that can be done. The law of diminishing returns (and importance) is a major reason not to do so, particularly in light of the restorative energy that comes from spending time with good people.

These reasons for wrapping up work and being more efficient also made a big difference in my use of planning time throughout the day. I prioritized much more effectively knowing that I had a limited time to complete planning for the next day.

One important comment here: specificity was crucial. I couldn't just say I wanted to finish early to have more free time at home. It made a big difference to be able to picture the end goal of these time limitations. The goal is having a specific activity to look forward to rather than just a negative space formed by the absence of work.

I will be deliberate about continuing this throughout the coming year. This is too important.

Leave a Comment

Filed under year-in-review