Showing posts with label teaching. Show all posts
Showing posts with label teaching. Show all posts

Saturday, March 3, 2012

An antidote to senioritis?

The state tests are coming up next week, so I've spent the entire week cramming (er ... "re-accessing prior knowledge") with my juniors. To be honest, it's actually been a nice break from a jam-packed and rather tedious precalculus curriculum - HSPA, New Jersey's state exit exam, actually tests a lot of good math and my students have tackled some legitimately interesting open-ended problems (more on those to follow). But, in any case, the point of this post is not my juniors (who I'm really hoping rock the HSPA next week (not that I really believe in the validity of a single standardized test (but still ...) ) ), but my seniors. I had to find something to do with them during the two weeks (one for review and one for the test) devoted to junior testing. Since I've been griping (mostly to myself) all year about why these particular seniors are taking precalculus (which is essentially algebra for the THIRD time) and not, say, statistics or computer science, I decided on a two-week statistics unit.

Now, it's interesting for me to work at a place where having a two-week window open up in the curriculum is an extreme rarity, and it was made clear to me that this unit was to last two weeks, period. I knew I wanted my students to do some sort of mini-project the second week so I had to really hone in on a few specific topics for the first week, which we just wrapped up. I decided to introduce the bell curve (of course) and focus on teaching students to use the z-tables for the standard and non-standard normal distributions. What I really wanted to get to by the end of the week was calculating margin of error and constructing confidence intervals, because that's what they'll need for next week's project. The idea is similar to a project I did at my old school, but in about 25% of the time. Students will be designing an experiment (like a Pepsi challenge) or a survey, writing an analysis of their results, and making a presentation. In their analysis they need to do things like construct their own confidence intervals and determine whether there is a statistically significant difference between two subgroups of their choice, like males and females.

So, back to the content: margin of error and confidence intervals. While I had used the "guided practice" model to teach students about normal distributions and the z-tables - "guided practice" is just my school's nomenclature for showing students a new skill and then gradually loosening the reins until they are doing it on their own - I decided to go for a college lecture on confidence intervals. Again, "college lecture" means something very specific at my school, but in essence the point is to give students a taste of what a 300-person college class will actually feel like. The teacher takes on the role of "professor" (which, I'm not going to lie, is a lot of fun) and delivers a PowerPoint lecture, preferably at super-speed and without much, if any, audience interaction. Of course we scaffold good teaching strategies in to make sure that our students don't flounder, such as intermittent note checks during the lecture and a comprehension check exit ticket afterwards.

My favorite part about the college lecture format is what happens the next day: students work in study groups on a college-style problem set, interrupted only by a brief chance to ask "the professor" questions during "office hours" (okay, so maybe we take the analogy a little far...). This brings me to the actual point of my post - sorry you had to read all the other stuff - which is: giving my seniors this independence and responsibility turned them from slouchy, grouchy second-semester seniors into a spitting image of actual college students. The transformation was unreal. They were engaged with the material 100% of the time (which is not usually the case in this class), challenging each other's understanding and use of terminology, referring back to lecture notes and the text when they got stuck ... essentially, everything we'd want them to do as college students in just a few short months. I use another teacher's room for that class, and that teacher actually asked me in the middle of the class if she could commend the students at the end of class because she's seen so many classes where their performance has been ... less impressive.

As I write this, I'm realizing that it's not rocket science. There's not much in the way of "guided practice" in college. And not to glorify some rather shoddy teaching methods, but maybe there is actually one good reason (albeit many bad reasons) for that - when people get to be a certain age (like, say, 18?) they crave less hand-holding and more independence. Based on some previous classes with my seniors, it might seem that they get easily frustrated with difficult math and take every opportunity to zone out. Now, I'm not so sure. These statistics topics are probably the most conceptually challenging ones we've done all year, and not even the usual suspects could be found zoning out. So maybe doing more of the lecture/problem set/legitimately interesting project or discussion is what they need? In other words: If I keep treating them like college students, will they continue to act like college students?

Sunday, January 9, 2011

Is programming the new math?

This past semester I taught a programming elective for seniors We used Python because it's already installed on all of the school computers and we have a resident Python expert who I could turn to for support.To be honest, I didn't have very much programming experience before the class began. I had taken a C class in grad school when I was too sick of math to care about my research, and that's the only formal programming I had done. This summer I taught myself some Python using this fantastic book by Michael Dawson, which teaches the basics through programming games. By the end of the summer, I knew enough to plan the first couple of months of class. I was unsure of my own programming abilities, let alone my ability to teach programming.

When all is said and done, this may have been my favorite class this semester. It turns out that programming is just so much fun that students can't help but get engaged, which is a far cry from what usually happens in math class. Sure, we can make math fun with activities, and once in a while you hit upon a topic or a problem that kids are naturally drawn to. But much of the time I would loosely equate teaching math with pulling teeth, and programming couldn't be more different.

There was certainly a learning curve to my teaching. I'll spare you the messy details and cut to the chase:

  • I learned to minimize lectures. Kids (and all people) learn programming by doing. Giving them a few examples to follow and execute on their own is much more effective than parsing code as a class in lecture format (at least with my group, which tended to get squirrelly really quickly).
  • When I did lecture, I used PowerPoints that the students could upload onto their laptops so they could follow along at their own pace. I also tried to include as many opportunities as possible for them to try out commands along the way. I finally started getting the hang of this when we were doing Visual Python; see my lecture notes here if you are interested.
  • Tiered programming assignments rock. There are easy, medium, and hard programs in a single assignment. Students choose whichever ones they want and aim for a certain total point value. Harder programs are worth more points. See my programming assignments here if you are interested.
Something that became obvious very quickly (and was integral in quelling my fears that I was under-qualified to teach a UC-approved programming class) is that almost every student in the class was into it. This was bizarre, having a class where 25 out of 27 students were really trying to figure out a problem and would literally groan when I told them they had to shut down their computers at the end of class. This shouldn't have been a surprise; I also find myself so engrossed in programming that I don't even notice that several hours have passed. I guess I forget that students are just like us - they like things that are inherently interesting, and dislike things that aren't.

Programming is great - it's hands-on, there's the "wow" factor (even early on, when kids can add up all the numbers from 1 to 1000 in a second!), and most importantly there's an element of immediate gratification. Oftentimes with math there's this fuzzy feeling students have when solving a problem ... ["Am I doing this right?" / "Do you think you're doing it right?" / "I thought so, but it looks really weird."] or ["Is this the right answer?" / "Looks like it!" / "Oh, so that's it?"] ... of course there are exceptional problems whose answers are so beautiful as to be undoubtedly correct, even from students' perspectives, but for the most part students struggle with knowing whether they are on the right track and whether they have solved a problem. In programming, there is no such ambiguity. They are "right" when their program does what it's supposed to do, and they can check their steps along the way simply by executing their code.

Moreover - and this is risky for me to say, because if this sentiment went viral I'd no longer have a job - it seems pointless to be teaching kids math en masse when we could be teaching them more programming instead. Our "justification" for making kids suffer through 12 years of math when most of them will never "use" math beyond algebra (of course this is a gross oversimplification. Statistics, for example, should and could be used by everyone and it's not clear whether this comes "before" or "after" algebra ... Despite what the state standards would have you believe, there is no total ordering on the set of math concepts) is that in enhances their quantitative thinking skills, teaches them creativity, and gives them experience solving difficult problems using out-of-the-box thinking. I buy that, I really do. I love math and I've seen the amazingness that happens when students collaborate on a challenging math problem. However, this can be a rarity in the math classroom. So much time is spent on skills that some find interesting and some find worthy of eye-gouging, yet whatever you believe you have to admit that fewer than 1% (an admittedly unfounded estimate) of adults will ever use any of the algebraic manipulations or shortcuts they learn in math class. Do they use the creativity and problem solving? Maybe. But programming might be a better way to go about cultivating those less black-and-white skills. It involves all of the logical thinking, all of the precision, all of the creativity -- yet without the tedious rules and algebraic manipulations that many students (rightfully) find mind-numbing.

I don't think we should cancel all math classes tomorrow. But I do think there's something behind the following observation: even those kids in my programming class who are not mathematically-inclined and/or completely disengage in math class, were engaged for a majority of the time in programming. And over the course of the semester, I saw a definite improvement in their ability to think logically and focus for long enough to try several strategies for solving a single problem. This is something I tried to get them to do in math last year, yet never felt terribly successful. In programming, I didn't even have to try very hard for them to accomplish those things.

One more thing: I was absolutely amazed by what my kids were able to do by the end of the semester. Most of them literally had no idea what programming was when the semester began, yet for their final projects they created programs that were pretty complex! Some examples of student work follow. All of these are interactive games made in VPython (Visual Python). (In retrospect, I might have taught VPython from the beginning. Even the few stragglers who weren't really engaged in programming at the beginning couldn't help but get into it when we started the visual stuff.)
A soccer game where the player controls the blue goal and the
ball moves randomly about the field

A classic 2-player game of dots & boxes (one
surprising challenge associated with this game is having
the computer recognize when a player has won)
A car game where the user has to navigate the red
"car" around a series of moving obstacles
An asteroid field where the user controls the
space ship and tries to avoid oncoming asteroids
If you have any say in this whatsoever, teach your kids programming! (Even if that means you teach yourself programming along the way.) Python is free and open-source and available for download here. Also check out a bunch of great resources for teaching programming.