A meeting of mindsets

This spring, I finally had time in the right places in my schedule to incorporate teaching into my semester. I'm a Learning Assistant (LA) for 6.042: Mathematics for Computer Science, which offers an introduction to discrete mathematics oriented towards computer science and engineering. The class is taught in a very interactive manner: each hour and a half class session is split into a roughly half hour lecture and a roughly hour long team problem solving session. Additionally, students come from a variety of backgrounds: for many this is their first Course 6 class, whereas some students are Course 6 MEng's; some students have taken many theoretical math classes, while others have only taken one semester of calculus.

As an LA, I work on writing the problems for the class, prepare other materials for the class, coach the students during the class problem solving sessions, and hold office hours. Basically, the roles I've been personally assigned as an LA makes me a TA who doesn't have to deal with grading.

This semester's 6.042 students took their second miniquiz two Wednesdays ago, and their quiz grades were finalized this last Wednesday. The biweekly miniquizzes in 6.042 aim to test our students' understanding of the material covered in lectures, class problems, online tutor problems, and problem sets from the previous two weeks. Theoretically, students don't need to put in a lot of studying if they've been keeping up with those four areas of the course, but of course, an individual student may need more or less help. The miniquizzes typically average around 15 points out of 20, with a standard deviation of about 4 points.

Miniquiz two this semester turned out a bit differently. The histogram for total miniquiz score (I am using an image compiled by another TA, so to clarify, score values are on the x-axis and the number of occurrences is on the y-axis):

Overall Miniquiz Scores

Key statistics for miniquiz 2 grades:

  • 83 students "took" the quiz. It is important to note that 82 students actually took the quiz, and that the score of 0 is for a student who punted the quiz. (We'll be ignoring the student who punted in later statistics.)
  • The mean was 12.50 points.
  • The median was 12.50 points. (No skewness!)
  • The standard deviation was 3.93 points.

Based solely on the above histogram, the quiz scores seem to follow a fairly reasonable bell curve, just with a lower average than expected. From the perspective of the course staff, that would normally just mean we made the miniquiz a bit harder than we'd have liked, but the results of this quiz were more complicated than that because of the scores received on the last problem. The last problem was:

Let [\mathbb{N} \rightarrow \{1, 2, 3\}] be the set of infinite sequences containing only the numbers 1, 2, and 3. For example, some sequences of this kind are:

  • (1, 1, 1, 1...),
  • (2, 2, 2, 2...), and
  • (3, 2, 1, 3...).

Prove that [\mathbb{N} \rightarrow \{1, 2, 3\}] is uncountable.

Hint: One approach is to define a surjective function from [\mathbb{N} \rightarrow \{1, 2, 3\}] to the power set \mathcal{P} (\mathbb{N}).

Having seen proofs for the last six years, the mathematician part of me was not particularly concerned with the difficulty of this problem, and I quickly came up with the following solution (which did not use the hint given):

Proof: Assume that [\mathbb{N} \rightarrow \{1, 2, 3\}] is not uncountable. This means that there is a surjective function f:\mathbb{N}\rightarrow [\mathbb{N} \rightarrow \{1, 2, 3\}]. We will show that this is impossible by describing a sequence s\in [\mathbb{N} \rightarrow \{1, 2, 3\}] such that s\notin range(f).

Let f_0, f_1, f_2, \ldots be the sequences in the range of f. We define a sequence

s=(g(f_0[0]), g(f_1[1]), g(f_2[2]), \ldots),

where f_h[k] is the k^{th} element of sequence f_h and g:\{1, 2, 3\}\rightarrow\{1, 2, 3\} is a function such that g(i)\neq i for i=1, 2, 3.

By the definition of s, s[n]\neq f_n[n] for all n\in\mathbb{N}, proving that s is not in the range of f. However, s\in [\mathbb{N} \rightarrow \{1, 2, 3\}]. Thus, f is not surjective as claimed, and [\mathbb{N} \rightarrow \{1, 2, 3\}] is uncountable. \Box

A slightly different wording of my solution was included in the solutions for miniquiz two, below a solution which uses the hint given.

I was concerned that 6.042 students would find this significantly more difficult than I, but I dismissed this fear when the rest of the course staff assured me it would be okay. One could say it wasn't too terrible to have put this on the quiz, but let's look at just the results from that problem (Again, compiled by another TA; score values are on the x-axis and the number of occurrences is on the y-axis):

Problem 3 Scores

Some key statistics about the 82 student scores on problem 3:

  • The mean was 2.72 points.
  • The median was 3.00 points.
  • The standard deviation was 2.54 points.

These "key statistics" really didn't set off that many bells; they just indicate that the problem was hard. However, the way the scores were partitioned alarmed us a lot. Additionally, students who have consistently done well on problem sets, on the in class problems, and on the first miniquiz did not correlate with students who did well on this problem. How did this happen?

Students may have been ill-prepared for crafting a solution to this problem. It is true that they have only seen two proofs similar to this problem: the professor's lecture included a proof which uses an argument similar to the one suggested by the hint, and a problem set problem required a proof structured similarly to my solution. It is reasonable to assume that students are not as familiar with proofs presented during lecture as those they have worked out themselves, but this probably does not fully account for why students performed differently on this problem.

Many students who did get at least partial credit on this problem cited that they did not have enough time to think about this problem correctly as they just figured out what they would need to do too close to the end of the quiz. This is probably because the general mindset for 6.042 thus far differs significantly from the mathematical mindset required for proving problem 3's statement, which isn't too surprising given that the mind of a mathematician and the mind of a computer scientist are required to work in (at least partially) different ways. Simply put, problem 3 of the second miniquiz showed me how unnatural theoretical proofs are to computer scientists.

I wonder if this illustrates that a deep understanding of math is becoming less and less important for being a good computer scientist as many successful MIT graduates take no math courses beyond the general Institute requirements and 6.042. However, I'd like to believe that even if this is the case, difficult problems incite curiosity within my students, causing them to dive deeper into mathematics. After all, having a better understanding of mathematics can't hurt them as computer scientists. At least, the questions students have personally emailed to me since getting their quizzes back supports my claim.

gitionary: the graphical game of git guessing

I apparently have a knack for coming up with nerdy party games. Three Fridays ago, my 6.033 TA encouraged us to practice creating diagrams for our design project proposals by trying to identify UNIX commands or filesystem structures from our partner's drawings. He claims that this "6.033 pictionary" was a result of strong nudging of the course's writing staff. Given that I had been encouraged by some of my friends to learn git earlier that day, naturally, I merged the two ideas and decided that gitionary needed to be created. I told Nelson, who is quite fluent in the ways of git, and he generated the game cards so we could actually play with the idea.

gitionary cards: each has a Porcelain level command and a Plumbing level command to draw

The original premise was simple: draw the appropriate directed acyclic graph corresponding to git commands so that your friends could guess it. However, many people who would likely end up playing the game did not yet know git, myself included, so we thought it would be good to allow drawing non-DAGs, too.

Nelson generated a set of printable gitionary cards (8.5"x11", double-sided on the long edge, requires cutting into cards), and we test ran the game with a rotating "artist" and the rest of the room guessing. I've included some (semi-arbitrarily selected) highlights drawn that evening below. Many of the most successful were not drawn as directed acyclic graphs, such as git-revert:

git-revert, wdaher, 15 seconds

git-stash turned out to be difficult when initially drawn in a way that reflected what the command did, and more surprisingly still took about half a minute after the lower left-hand corner of the sheet was sketched:

git-stash, jesstess, 68 seconds

A somewhat hilarious failure mode of gitionary is that objects which would ordinarily be drawn as a combination of circles and lines inadvertently look like DAGs. This was a problem Jeff had while he was drawing a magnifying glass to represent git-show:

git-show, jbarnold, 34 seconds

You can also click through to see the rest of the drawings from the first run of gitionary:

I definitely encourage you to get a group of your favorite nerdy friends together to play the game, and maybe, you will do more than one of the plumbing commands.

Now that I've created a party game about gitionary, I think I should probably go spend some time learning git. Word on the street is that I'll think the back-end model is "cute."

To the pretty pitter, pitter, patter

I've been told that most people don't like walking through the rain and that others theoretically enjoy the process but don't walk in the rain because they dislike arriving at their destinations wet. However, unless I have something of a very pressing importance at the other end of my journey, I find that I try to catch every raindrop I can on the way.

Even underneath the scaffolding at the intersection of Main St. and Vassar St., many Cambridge residents navigate carefully to avoid the few drops of rain that might sneak through the wooden panels above them. In light of this, it shouldn't be surprising that you make great time by taking the path that maximizes the number of times you are hit by water droplets falling through the planks. Pseudo-random neuron firings (prnf to the zephyr world) worded this moment more poetically:

As I am drifting to catch raindrops who glide off the scaffolding,
I become as unnoticeable to the hustling city folk
as I have made the droplets to the setting concrete.

A couple of hours later that day, I began writing a minimalistic piece for the piano, which I finished it up last Friday. Here are a couple of phrases from the beginning:

Beginning of Raindrops score

About halfway through the piece's composition, I noted that it was eerily reminiscent of my moment deliberately walking in the rain. I was also contented to note that its relationship with a short, poetic phrase meant I didn't have to come up with a more traditional title for the little song.

You can view, or perhaps even play, the complete piano score.

(Fun fact: the title of this post is from Gilbert & Sullivan's The Gondoliers, specifically a line from "Dance a Cachuca." This was the first song I sang with my high school's concert choir.)

Curried pumpkin soup

Despite growing up in Chicago where winter is defined as "more traffic" and "delayed flights," the first thing that comes to mind in winter is creamy squash soups. In the haze of moving, Mystery Hunt, and working on writing 6.042 problems this IAP, I somehow neglected making soup this January. To quench my craving and finally use up the three cans of puréed pumpkins sitting in my cabinet, I decided to make curried pumpkin soup.

Curried pumpkin soup topped with romano

I usually top this with a bit of pecorino romano cheese, but since I didn't have any in the fridge, I opted for parmesan and crushed red pepper flakes. If pumpkins are in season, toasted pumpkin seeds work even better.

Hopefully, I can subdue my craving for soup with this, but I've already decided that French onion soup is next.

Curried pumpkin soup

Ingredients:

  • 4 tablespoons (1/2 stick) unsalted butter
  • 3 medium chopped yellow onions
  • 4 teaspoons minced garlic
  • 1/4 cup chopped red peppers (can substitute 1/2 teaspoons crushed red pepper)
  • 2 teaspoons curry powder
  • 1/2 teaspoon ground coriander
  • 3 15 oz. cans puréed pumpkin
  • 5 cups vegetable (or chicken) broth
  • 1/4 cup brown sugar
  • 1 teaspoon salt
  • 2 cups milk
  • 1/2 cup heavy cream

Preparation:

  1. Melt butter in a small saucepan over medium-high heat. Add onions, garlic, and red peppers, then cook, stirring often, until softened (about four minutes). Add the curry powder and coriander (and crushed red peppers if opting for this method), and stir for another minute.
  2. Mix the puréed pumpkin, broth, and sautéed vegetables in a large stockpot. Blend well. Bring the pot to a boil, then reduce the heat and let simmer for ten to fifteen minutes.
  3. Blend the soup in a food processor or blender until smooth, and put the soup back in the stockpot.
  4. With the soup on low heat, add the brown sugar and mix. Next, add the salt. Slowly add the milk and the cream while stirring to incorporate without burning.

Makes eight to ten servings.

Une petite valse en jazz

Now that I have a weighted-key digital piano in my room, I've been playing a lot more. More like: I've gone from playing the piano only when I'm home in Chicago to playing it a couple hours a day. Over the past few days, I've been alternating between playing pieces from Philip Glass's "Metamorphosis" and more or less messing around with my own creations. The one below is a simple jazz waltz:

Une petite valse en jazz score

Perhaps, I wrote this one down because the beats in it are steady enough to easily transcribe. Additionally, unlike most other music I write, it lent itself fairly naturally to a key. Maybe you'll see some vaguely modal music which is played primarily on the black keys from me sometime soon.