Tuesday, January 13, 2009

Computing vs. Education

I just realized a major difference between computing and education is that to be really, really good at computing is usually an individual proposition while being really, really good at education is frequently collaborative. (Education by its very nature must be collaborative on some level.)

Some of the greatest luminaries in computing are speaking right now. Alan Kay, Vint Cerf, and Fran Allen are all talking about their view of computing and where it is going and should go. (I have to say, I would LOVE Vint to come talk to my students - he has a good way of framing ideas as questions worth thinking about.) Alan thinks the role of teaching is to impart to students a sense of quality. They can learn to DO on their own, but good teachers help them understand the difference between tinkering and mastery. 

I'm thinking about the role of CSTA in comparison. I have no idea who runs the NSTA, NCTM, or NCTE. We can identify famous tech companies but not famous schools at the K-12 level. Sure, we've had our Horace Mann and Maria Montessori, but it isn't like the (much longer than CS) history is filled with famous individuals whose names we still revere. I don't think this is a problem - CSTA is a far stronger organization as a chorus of voices representing our many, many experiences than it would be by picking just one of us.

I wonder if this difference is a factor in the difficulty getting CS people to go into teaching. One person here said earlier, "I went into CS because I wanted to work by myself!" 

Monday, January 12, 2009

Rebooting Computing

Per Alfred's request, I am posting something about today's Rebooting Computing summit. It goes for three days. Leigh Ann has a good summary of the activities, so I won't focus on that. I am also sitting at a table with famous people; I think most of the tables had famous people at them, depending on how you define "famous."

The thing I found most notable was how many of the people I respect feel like impostors. The initial questions about "what experience made you realize how much you love computer science" and "think of a project in CS you created and elaborate on the experience" were fairly intimidating for people who don't have those experiences. The person I was sitting next to is an environmental scientist. She has a LOT to offer in terms of where computer science intersects with other disciplines - and also in understanding how we can attract people who are prepared for CS but end up going into other things. Fortunately she was an excellent sport in answering the questions and we had a wonderful conversation. 

Another thing that is interesting is how uncomfortable many of the participants are with the process. It's a very K-12-ish, California-ish, hippy-ish process. I figure most (if not all) of today was about establishing trust between participants. Tomorrow and especially Wednesday, the work will get done. Many people find it slow and are eager to get to work. I learned at a diversity training a few years ago that it is embedded in white, male culture to be focused on product. It is embedded in other cultures (female, latino, others) to be focused on process. It's very process-driven. 

It's been very interesting. I have been crocheting since we're not supposed to use phones or e-mail. I have not gotten as much done on my blanket as I'd hoped, but I was having gauge problems and had to pull a bunch out. 


Sunday, January 11, 2009

Personality flaws

For various reasons, I am thinking about some personality, er, quirks I have. 
  • I hate being told that what I'm doing is wrong. In cases where I think they're wrong, it's just annoying. I hate it even more when I think there's some validity to the idea that there's a better way and there are good reasons why I'm doing it the way I'm doing it. It makes me feel defensive. It's worse when I don't trust the person telling me I'm wrong. And I don't have to distrust them - only fail to have a relationship of trust.
    I bet most people are that way. If you gently suggest there might be a better way, they can take your advice or leave it. If you thunder in telling them they're wrong, they're likely to get defensive and angry.
  • I don't like being called out as special because of something I can't control. For example, don't point out that I'm a woman and isn't it special and unique that I'm in computer science, what with being a woman and all. I can't control being a woman and I don't feel that I need to be congratulated for it. Or showing up.
  • I do better when I feel smart, competent, and capable. I'd wager most people are this way. It's good when people are put in situations where they feel smart, competent, and capable. It's bad when they're put in situations where they feel dumb, unwanted, and incompetent. 
  • I like myself better when I stay positive and don't get mired in complaining. 


Wish list

What I want is a book that gives context to some of the weird and obscure things "we" think are important to learn. (I'm not sure who we is, precisely, but there's a lot of us.)

Specifically, I'm thinking about binary. Converting to binary shows up in a lot of standards. "We" think it's an important fundamental of computer science. Yet for most students - and many teachers, I'd wager - there's no connection to computer science. We tell them that computers work in binary, but then they use web browsers and interpreters and word processors and there's nary a 0 or 1 to be found. 

Wouldn't it be awesome if there was some kind of book that put all these things into context? There are certainly more examples. Maybe if you comment with some of the ones that occur to you, someone will put them into a book.

Off to a good start

I took the holiday break completely off! I haven't taken two whole weeks off in memory. It was GREAT. I feel like a new person. (Of course, I got bronchitis the first week and spent almost the entire second week in bed, so it's hard to say if I'd have been so relaxed if I'd been totally well. It was nice to have that situation where I was sick enough to stay in bed but well enough to enjoy it.)

Now grades are due in a couple of weeks, so the pressure is back on. I've worked with a couple of students to, shall we say, reduce their workload in the face of not having done quite a number of the assignments this semester. (sigh) That said, I'm managing to balance the workload so that I've kept mostly taking evenings off. 

Starting with the new semester, I'll be starting python. I did decide to start with the same approach I took last year. I just think it makes the most sense for my students, though I have visions of splitting them and teaching some with one approach and the others with the other approach (functional vs. OOP) and seeing who does better...

This week I'm going to Rebooting Computing, so hopefully there'll be posts from the field.

Tuesday, December 16, 2008

Quizzes

I have all kinds of interesting, high level thoughts rattling around in my brain, but not enough time to really synthesize them and write them down. Things like - do we let kids get away with not pushing themselves to reach attainable but challenging goals (physical and intellectual)? Something about growth mindset, which still fascinates me. 

But first I have to grade the quiz I gave yesterday. In Moodle, so it did all the grading for me. Unfortunately, I figured out late in the game that I think it would tell kids if they had the right answers BEFORE they submitted them! I do not know how to make it not do this. I *do* appear to be able to see their answers, so I can see if they checked and if they changed the answers. From the scores, it would appear that no more than two students figured out this feature. I'm not sure whether to punish them - if it was my mistake in making it completely accessible and if they were the only two bright enough to figure it out, they shouldn't be punished. OTOH, I'm not terribly impressed with their ethics. Under every circumstance, I will talk to them about this and probably drop a note home so their parents and I can be on the same page about ethical behavior during exams. 

Incidentally, I don't give tests. I rarely give quizzes at all, but I object to the word test. I believe the word test is loaded and itself induces stress. Quiz sounds nicer. A quiz in my class counts the same as a test in any other class, but is less inducing of stress, at least for some students. 

Other than the cheating spectre, I'm quite pleased with the questions. I'm less pleased with the scores. And I accomplished what I wanted to - I discovered at least one student who knows the material cold but doesn't turn in work and thus hasn't demonstrated mastery until now. Yay for quizzes!

Tuesday, November 18, 2008

Persuasive Media Project

In eighth grade, I teach animation with Flash. It gives advanced students a taste of OOP while allowing less-advanced students a point-and-click 'programming lite' experience. Everyone gets to reinforce ideas like instances and classes, scoping, and lots of other stuff. Plus they find it very engaging. 

The final project is called the persuasive media project. It combines media literacy with animation. Students watch two of a bunch of different web-based persuasive presentations and respond to a set of questions. We discuss the animation techniques they know (and the difference between how you construct something vs. how the audience perceives it!) plus persuasive techniques used in media. Then they choose a topic to persuade someone of. They plan a persuasive presentation including storyboard, then create it. Past presentations have covered everything from 'the war in Iraq is wrong' to 'CS should not be mandatory' to 'school should give less homework'. 

Here are the animations they can choose to watch:
They have to watch two - one we watch together (frequently Pentagon Strike or part of The Story of Stuff so we can discuss them!) and fill out a handout for each one. I got the questions from The Center for Media Literacy. Here are the questions on the handout:
  1. What presentation did you watch?
  2. What were they trying to convince you of?
  3. Who created the message?
  4. What techniques did they use to attract your attention or convince you?
  5. How might other people understand this message differently from you?
  6. What lifestyles, values, and points of view are represented in or omitted from this message?
  7. Why was this message created?
  8. Who is the intended audience?

Do you have any suggestions of other persuasive presentations I can offer?

Friday, November 14, 2008

Putting Research to Work

Two interesting topics are Growth Mindset (vs. Fixed Mindset) and Stereotype Threat. I will put in a post about at least Growth Mindset, but probably both, soon. Right now I need to reboot, but will put in this placeholder link with a poster and handout and information from the Center for Research on Girls:   http://www.laurelschool.org/about/CRGProductsandServices.cfm

Idea

What if high school or college CS teachers ran summer camps for middle school students and hired high school girls or freshman/sophomore college women to teach them?
  • It would provide role models for middle school students, to encourage them that CS could be for them.
  • It would encourage the high school/young college students that they are worthy along with reinforcing what they know
  • It would give some interesting skills to middle school students that they can not necessarily get in other places like school or after school programs
  • It can serve as community service for the high school students. 
I did this once. An alum approached me and asked to run a one-week Java class in the summer as her senior service project. She created the curriculum, I got the students, and she taught it for two hours a day over a week. It went great!

I would trust most of my alumni with most of my students. They don't want to look stupid, so they're motivated to do well. They wouldn't agree to do it if they didn't know the material well enough. Anyone who can pass AP CS knows more than enough to teach Java to middle schoolers. I can help them think of fun activities that will engage the students. And it's summer, so there's no academic pressure. 

Thursday, November 13, 2008

Catherine Didion Keynote

I'm attending some meetings and Catherine Didion from the National Academy of Engineering just gave a great keynote about girls and engineering.  Here are my notes:

“Rising above the gathering storm” – NRC report

  •  Assumptions and stereotypes about who does science and engineering still exist – Time mag front page, 
  • Assumptions and stereotypes about women - Newsweek “What Women Want” cover Sept 22, 2008
  •  Assumptions about who will be the future leaders in science and technology impact students’ choices – example full page ad in Feb 17, 2006 CDG

www.implicit.harvard.edu Science Implicit Association Test

Girls of color are much more interested in sciences than white girls, but they are very underrepresented at the undergraduate level.

How do we keep them away?

  •       Lack of integration of STEM courses with other parts of the curriculum
  • Contributions of women and minorities are virtually invisible – no role models – the instructors there may not be who the students want to be   
  • Much of the science and engineering work seems devoid of any social relevance
  •       Constrained curriculum with many critical paths 

Busch-Vishniac and Jarosz, “Can Diversity in the Undergraduate Engineering Population be Enhanced Through Curricular Change?” Journal of Women and Minorities in Science and Engineering, Vol 10, 2004

What Engineers Tell Young People:

  • Engineering is stressful and challenging
  • Stress the importance of SUPERIOR math and science abilities
  • “It’s not easy – but if you’re the type who when faced with a problem some would call impossible is even more driven to move mountains to find a solution, then you might have it in you to be an engineer”

IEEE is training engineers who go into classrooms, “first do no harm” – they have a webinar

www.engineergirl.com Most popular part – ask an engineer

Imagine that! is an Engineering contest

Zits Wednesday, October 15, 2008

Help and allow students to communicate through technology they use – You Tube (Large Hadron Rap), Facebook groups, iTunes science section

High School: Non-white girls (41%) are more likely than white girls (~21%) to say that engineering is a “good career” (Study by WGBH)

Message Testing:

For girls one of the strongest messages was: Live Your Life, Love What You Do. 42% of girls & 41% of boys rated this very appealing and 8% somewhat appealing. Tope tested message among non-white girls (44%).

Other top messages were: Creativity Has its Rewards and A World of Difference

Our traditional messages are not about risk-taking or being part of a group. Reinforce what students think they want to do. Military is doing this now.

Take the 10 best and 10 worst behaviors of students and use them in your marketing

Parents are an important constituent group – kids listen to their parents

For girls, older girls are important sources of information. Popular personalities are not

Engineer Your Life  - www.engineeryourlife.org  Totally open source – you can throw your name on it, download it, use it!  Includes PPT for use with guidance counselors!!

“A lot of the work we’ve done is to change people’s perception of the potential of the students"

www.engr.psu.edu/awe

 "Help students try on careers the way they try on clothing. Help them get comfortable and see what they are. They have a lot more control"

Sunday, September 28, 2008

Is programming necessary?

I think Mark Guzdial is really smart and really neat. So when he talks, I tend to think hard about what he has to say. Mark recently said some things that I would (VERY) roughly interpret to mean that programming is central to computer science. I also think Robb Cutler is really smart, and I know he disagrees. Robb thinks we could teach introductory CS at the K-12 level without any programming at all. This left me with a lot to think about, but finally I hit upon an analogy. 

Programming is to computer science as experiments are to chemistry (or other sciences). It is THE central tool to the discipline. Being able to do it is an important skill. But it isn't actually central to the K-12 introductory experience. You could teach intro chemistry without doing any hands-on experiments. In some ways, the students would have a lesser experience, but most of them would be able to learn all the relevant concepts without actually doing them. Similarly, I think you could easily construct an introductory CS course that didn't have programming. 

I agree with Robb that frequently the programming gets in the way of understanding. Kids get so caught up in debugging that they don't really understand the logic of the program. They lose sight of the problem that the program is supposed to solve because the problems that they're focused on are of the "it won't compile" variety. Who knows if the proposed solution (the program) is a good solution to the problem, we can't tell if it won't even run! (Okay, we the experienced programmers can tell. But the student can't.)

I was a biochemistry major and I took two years of high school chemistry (thus the root of my analogies!). I was a junior in college before I understood WHY you do experiments. It was all cookbook to me until then, completely disconnected from anything we learned in lecture. I figured they made you do it so you would have the experience of having done it so you could get a job following those kinds of instructions in the future. "Oh yes sir, I've done many titration experiments." I became a chemistry teacher and despite my experience, I advocate for having students do experiments. 

There are many reasons for students to run experiments. It gives them lab skills which they can't get any other way - reading about titration is very different from actually having to work a stopcock correctly. For kids who are kinesthetic learners, or ones who need to SEE to understand, it helps them understand the concepts discussed in class. It can help them understand the scientific method in a different way and can help them understand the very nature of science research. (One of the reasons that I hated experimentation is that there's experimental error. It's all so beautiful and perfect in theory.) It's the same with programming and computer science. In introductory science classes, we use experiments judiciously, allowing students to gain the benefits but recognizing that there's a lot of material to cover and much of it is not best comprehended through direct experimentation. We should do the same with programming. 

We should introduce students to programming as a tool without having it be the focus of introductory courses. Have them do it some, sure, but not at the expense of understanding the big ideas - most of which aren't about programming at all. Help students understand that programming is a tool, not an endpoint. 

Crafty and CS-y

Over on Learning Curves, Rudibecka Hirta has a post about knitting and CS, complete with annotated pictures! (I can't figure out if it's overly friendly to call her 'Becky' or overly formal to call her 'Rudibecka') It reminds me of a SIGCSE a few years ago, when I was working on a not-very-complicated lace pattern during a luncheon, using a chart. Dave F got very excited about the pattern because it is digital. He couldn't get over how cool it is that knitting is digital. 

It makes me both wonder how many really random intersections there are between hugely different ideas, and wonder if the reason why a lot of geeks I know are crafty is because there is a significant overlap in the kind of thinking between CS and crafts like knitting and quilting. 

Friday, September 12, 2008

Big Ideas in Computer Science

I'm at a meeting where I was asked to determine the big ideas in computer science. Big ideas are defined as the things students will internalize and remember long after a course is over. An example in calculus is that I remember what a limit is, even though I don't remember how to calculate one.

Here are the four big ideas I thought of:
  • Computer tools are designed and the design affects what they can do.
  • Computers precisely execute instructions created by humans.
    • This would include abstraction – what the instructions look like and how they are translated between layers.
    • It includes algorithm creation and predicting what the computer will do given a set of instructions.
    • It can include flow of instruction.
    • It MAY include programming.
  • Computers are used to solve many problems across many disciplines.
    • Ideally here students would design algorithms to solve various problems such as traffic flow, databases…
    • It would probably include the limit of computing – what problems are computers not good for solving and why.
  • Computing has a role in society
    • Ethics,
    • Use of the tool,
    • History of computing and how society has changed based on computing technology…

Friday, May 16, 2008

Motivating Students

Because of a session on remaking the Image of Computing, there were a bunch of famous people at the NCWIT meeting this week. Perhaps the one of most interest to me was Kate Starbird. Not as much because she is a retired WNBA player (though that's pretty cool!) but because she's really smart, really nice, and really articulate. She pointed out that she was the only person there to talk marketing who also had a background in CS.

Remind me to tell you about the argument she and J Strother Moore got into.

But first, I want to consider the question of inspiring students to learn about computing at a deep level. When I Googled Kate, one of thetop links is to a great blog post she wrote. Here's an excerpt:
Like many of my generation, I grew up on a computer with little or no content, and if I wanted it to play, I had to be creative. I had to make it do what I wanted it to do. I went on to study computer science in college and graduated with a BS from Stanford in 1997.

My youngest brother Michael followed me there, and majored in CS as well. He works for Microsoft now. By the time Michael was nine our family had a game console for our TV and fantasy adventure games with elegant graphics on our Apple IIgs. He grew up playing Nintendo and Bard's Tale. He had an email account before he was out of high school, and knew how to browse the Internet long before I did.

Unlike me, though, Michael didn't write a single line of code until college. Michael was an extremely creative kid, but he didn't bother spending that energy creating loops, routines, and functions.
This is in line with a thought I had last summer about learning curves vs. quality of output.

When we were kids, computers were pretty limited in what they could do. You could write a program in BASIC that was almost as good as the programs you could get on floppy at those game swap events on Saturdays. You could buy BYTE magazine and laboriously type in the programs, seeing exactly how the program was put together. It was reasonably straightforward to create programs that were engaging, that your friends would say, "oh cool!" (or the 1982 equivalent) if you told them or showed them.

The world has changed a lot. A kid in the basement couldn't have written World of Warcraft or the Sims. In some ways the tools we have make it easier than ever to create interesting content - Dreamweaver making HTML and PHP at the click of a button, drag-and-drop programming in Flash or Alice, image manipulation with iPhoto or Photoshop - those were all inconceivable back then.

But the increased complexity under the hood - the higher computational power in home computers, the embedded systems throughout our lives - have also abstracted away our ability to tinker. Imagine taking apart your iPod to see how it works. Similarly, kids are so used to interacting with fun! neat! systems, that the introductory programs they're cognitively ready for aren't impressive enough. Hello World just doesn't cut it in our in-your-face media-rich world.

My students struggle with some of the ideas of CS. That a variable contains a value is a new idea for them. They're smart, capable, and they figure it out, but there are developmental issues - their brains aren't ready for all the deep ideas. Yet they will get turned off if it seems like too much work for too little payoff, if they can't make things that make their friends say, "oh cool!" (or the 2008 equivalent).

Sunday, March 09, 2008

Seven Random Facts

Okay, before I start grading, I just wanted to finish Jane's archives so I could delete them in good conscience. And I found a seven things meme, which sounded like fun, so...

Seven Random Facts about the Wicked Teacher:

1. I have never worked food service. I did decorate a cake once for pay - it was for the birthday party of the kid across the street, when I was a teenager. I had visions of entrepreneurship, but it turns out that I have bad time management and wasn't motivated enough. I've never worked as a waitress or cook or hostess or anything like that.

2. I have a huge sweet tooth, but I don't like candy. I'll eat just about anything baked, though fruit desserts are my favorites, like apple crisp, peach cobbler, baked pears, strawberry-rhubarb pie... I prefer those by far to chocolate desserts. I also love cupcakes. But then, who doesn't love cupcakes?

3. I have never owned a new car. I don't object to owning a new car, I'd like to have one some day, but so far every time the decision to buy a new car has come along, a great used one has presented itself.

4. I wear three rings on my left hand and usually none on my right. I also almost always wear a digital watch. I like having a watch that tells me what time it is and the day and date. My mother hates it that I will wear it even when it doesn't go with my outfit; she bought me a fancy dress-up watch that I try to remember to wear when it is appropriate. But I like the digital better.

5. My favorite word is fungible. My favorite computer science word is algorithm. My favorite amino acid is phenylalanine. I think it is weird that most people don't have a favorite word, though I don't really think it is weird that they don't have a favorite amino acid. (But they should!)

6. I am an elder of the Presbyterian church.

7. I love vegetables. I like meat pretty well, but I have always loved vegetables.

Transcending the Debate

I've had a very scattered day and one of the things I've been doing is going through and deleting old blog posts from my reader. But of course I get sucked into reading them along the way, so it takes forever. But fun! This is why I have trouble sorting books or looking up words in a dictionary.

While perusing the archives, I found Jane's post about transcending the debate.

There are so many places this rings true in my life. I got into a conversation with a coworker on Friday afternoon about whether our faculty should be encouraged to have websites, forced to have websites, or left well enough alone. I think that at least they should be encouraged, but feel un-ready for the fight. Various among them will demand extra help, handholding, rules, no rules, and that I do a bunch of un-related tasks. (Our "internal web page" is a huge mess, which is nominally my responsibility, but also not needed since every teacher has a direct URL to their web space.) The coworker pointed out that I need to just tell them to be quiet and make a web page already, not get caught up in debating my own weaknesses where those weaknesses are not relevant.

Engaging with the faculty and staff about things they must do, even when I myself am not perfect, is a good place to start. I hesitate to lead, because I fear that they will point out all my weaknesses. Which is likely, really, but I need to stop worrying about it and just get out there.

For me, transcending the debate can also be the debate about teaching - curriculum, content, pedagogy. Every teacher needs to do what works best for them and what is best for kids. I think there are important ideas which all citizens should know about computing. I'm not sure what they are, but getting mired in the debate about whether Java is the best language for the AP or whether Alice's interface is too clunky isn't helping us discuss the important ideas. Don't get me wrong, I love a good debate, but as a discipline, we need to really focus on what is important.

Maybe the most important thing is assuming both intelligence and goodwill in others. This isn't a debate point, precisely, but I think we engage in the debate (any debate) and start thinking I'm right, s/he's wrong. Which isn't helpful - it means we're closed to hearing good ideas.

Now I should get focused and do some grading.

Monday, March 03, 2008

Organization

On Tuesday, we played the "guess a number game" where the kids thought of a number and I tried to guess it. We played several times and demonstrated experimentally that a binary search is more efficient than random guessing. (Barely! Sometimes random is more efficient, if you get it on the first try!)

Then we built the binary search algorithm in a flowchart, then I showed them the program. All that was good - we covered important ground. The students were Very Glad that I wasn't making them write the guessing game program, though, since they thought it was boring.

In class, they told me they've already used a website that randomly generates Shakespearean insults. So while they thought the project idea was kind of neat, and definitely better than the guess a number game, they were not as excited as I'd hoped. I pointed out that this was a program they would write themselves, but a number of them are just as happy using someone else's work rather than do the work themselves.

Then, and here is where the organization part comes in, we didn't get as far as I'd hoped in class. They got more confused by conditionals than I'd expected. So I slowed down and gave them an interim assignment, to finish a small program with a conditional in it.

The little conditional program is very similar to the Shakespearean insult program they're about to be assigned. I'm comforting myself that it is scaffolding, and for the students who need it, that is true. But for the students who are really bright, they're going to be bored.

I need to focus on being more organized, providing solid stopping points, and having very clear assignments that are logical. I wish I'd stopped earlier on Tuesday and given them a small assignment. Then we could have gone through conditionals on Thursday and assigned the Shakespeare thing on Tuesday.

Oh well. Better luck this week!

Wednesday, February 27, 2008

Teaching Programming

We started the programming unit yesterday.

This year I'm switching from Perl to Python. I'm also hugely overhauling my teaching style. I was convinced by Vern Ceder (and various other sources, I'm sure) to get to graphics as fast as possible and skip the endless pedantic slog between here and there. In nearly all of the books I have used as resources, graphics are late, late, late. I decided to take a page out of the media computation book (not literally, but mostly only because I don't have a copy), introduce graphics as fast as I can and do lots of Just In Time teaching to backfill what students need as they care about it.

I want to mention my incredible gratitude and luck at the support I've received. Vern's presentation at NECC 2007 was transformative in my thinking about this unit. Getting to participate in the Chapman University workshop about teaching Python gave me the basics of the language. And most amazing, I have been meeting with Guido van Rossum regularly this fall and winter. He has reviewed my code, explained concepts without demeaning my lack of knowledge, and regularly reminded me what beginning programmers are like when I waver about presenting the material in this unusual, out-of-order way. He might be the nicest super-geek I've ever met, though Tom Zeller is right up there.

Day one went great! I started the students out in IDLE in interactive mode. We walked through print statements with strings and then numbers. It was great - the kids let right to the places I wanted to go, like learning about a syntax error when
2x2
didn't work the way they thought it should and testing what happens when you put math into quotes. I introduced variables super-quickly - in the past, variables would have taken an entire period, this time it was almost an aside, as a way to do math. Similarly, I introduced for loops and the range() function in about 3 minutes because I was up against the end of the period. The kids followed pretty well. I stopped to check the comprehension level several times and while it was slightly overwhelming, they were fitting it together pretty well. One thing that went very well was that I'd grabbed a few photocopies of their math textbook so I could show them how to use Python to program some of the problems they would face later that day in class. The whole concept of working collaboratively with other teachers is the subject of another post, but I was very happy at drawing the connection.

There were a bunch of things that went really well. It was very interactive, the kids were engaged, and they were typing right along with me. I think they really got that you can (and should) create hypotheses and test them right away. "What if you do blah?" "Let's try it" "Oh, cool!" They had terrific ideas and were able to figure things out really fast.

There were a few things that were, um, sub-optimal. For one, I had planned WAY more than I could reasonably teach in one period and didn't cut myself off fast enough - I was too excited about the connection to math. I would have liked to have given the students a small homework assignment to write a program and didn't have time to do so. I'm okay with it since not having homework makes the students happy and I'd like them to think programming is fun. Yeah, not optimal, but I'm looking for the silver lining.

Second, the Just In Time teaching requires the teacher to be flexible and able to quickly analyze situations to figure out what is going on and what is worth covering. Some of the time that worked well - on the fly I decided not to cover modulus and the sqrt() function in the math module. Some of the time it didn't work well. Their math problem was to determine five values of x that would make 2x-6>=3 true. I showed them how to do it but then was preparing to segue them out of interactive mode and into script mode since it had to happen 5 times. (This was also where loops came in, even though it meant skipping conditionals!) In one class, a student suggested just programming y=2*x-6>=3 and then iteratively changing x and re-evaluating y. Which, of course, didn't work right, but on my feet I couldn't remember that it was because y had been set by what the formula evaluated to in that moment. Duh. It wasn't horrible, but I should have known better.

Tomorrow I will show them two longer programs - one that is a "guess a number" game (binary search!) and one that generates Shakespearean insults. Then they'll be on their own to write a little program. So exciting!

Tuesday, June 19, 2007

Everybody Knows That

I'm taking a workshop this week about how to teach Python. There are pros and cons to the workshop. Although I have what feels like a number of complaints, on the whole the workshop is good.

The course is giving me a lot of empathy for my students. I didn't understand what the goals of the workshop were or how exactly it was going to run and spent a lot of time yesterday trying to figure out what was going on and what to do. I also felt a certain amount of boredom. It was really hard to sit and focus on reading and programming all day. The little programming exercises were good introductions to the concepts, but they weren't terribly engaging.

I spend a lot of time feeling frustrated and stupid. Even though this is an introduction to Python, there's an assumption that everyone has programmed before, often in multiple languages. I think I'm the only Perl person in the room. My knowledge of Java is introductory and I don't know any other languages. I absolutely trust my ability to learn new things, but statements like "if you think of how to do this in Ada, it will be obvious" are upsetting. Lectures and discussions are in a different language. This morning's lecture was about functions. I knew some of the jargon, like arguments, parameters, and returns. But I had a terrible introduction (previously) to pointers and references, so the whole part of this morning's lecture about how Python passes arguments was significantly over my head.

I read a few weeks ago that a person can read fluently as long as they know 95% of the words - they can pick up 5% through context clues. More than that requires significant time and mental energy for decoding. So this morning's lecture was probably 20% words and concepts that I wasn't already familiar with. Too much to fluently understand, and of course, in speaking, once it is gone, it's gone.

The other part that is frustrating about not understanding is whether it is even important or not. I teach middle school. I strongly believe that I am an expert about how to best teach my kids. But I am not The Expert about what the Most Important concepts in computer science are. Is it crucial to teach students about pointers, stacks, passing by reference vs passing by... whatever the alternative is? If I were teaching driver's ed, is this comparable to teaching kids how to get on the highway (and thus by not teaching it, I limit them to surface streets unless they take a more advanced course later) or is it analogous to teaching them how to change the spark plugs - interesting, useful, required for advanced work, but not actually important on a day-to-day basis in running a car. (Remember, I live in California. We spend a LOT of time on the highway.)

The frustration is about the phrase "oh, everybody knows that!" It makes the part of the everybody who doesn't know that feel bad. I know my students will face it... I think it is inevitable, though it shouldn't be. It isn't just the jerk boys, it is prevalent. I want to remember to hold on to this feeling, so that instead of trying to teach them the things that everybody knows (impossible) I can teach them to persevere when they feel this way (possible).

Wednesday, February 07, 2007

Small Classes and Eye Rolling

There's a hot debate at my school about what connotes small classes. We have about 20 kids per class which I think is fairly small, but turns out not to be small enough to be really proud of "small class size." (I know lots of public school teachers are all rolling their eyes. But we definitely have some public schools around here that have classes of 20, so it doesn't really set us far apart.)

We do have lower teaching requirements than many other schools - I only teach about 85 students at a time.

The thing I love most about not having thousands of students is the opportunity to get to know each kid well. And of course, they have more of an opportunity to get to know me too. I approach my classroom the same way as I approach any presentation, which is with a heavy dose of humiliation and a sense of humor. This is why two moments from yesterday made me laugh.

I was teaching a class about gears, because we're doing robotics. I don't have enough motors for every group to have as many as they'd like, so for the first time I decided to have them learn explicitly about gears so they will be more prepared to build moving robots with fewer motors than wheels. (They're all girls. Most of them haven't spent a lot of time considering how automobiles and other wheeled vehicles work.) Here's the thing: I don't actually know anything about gears. I mean, I can figure it out, but I am not a physicist or an engineer. Why I didn't ask the engineering teacher for help before class is why I approach class with humility.

First class: I'm explaining about gear ratio. It is going pretty well. I'm pointing out the prior knowledge, like "ratios." I show a 16-tooth gear and a 24-tooth gear and explain the ratio and the torque/speed issues. I say, "you can simplify 16:24." Then I realize that while they probably can, I can't. At least not in the moment, in front of the class. Which shows on my face, and I acknowledge. In front of E. Who went to the math contest last week and by far topped everyone else at our school. Who rolls her eyes. Which, if it were any other kid, I would totally put the smackdown on for that kind of disrespect. Here's the thing: E never rolls her eyes. She never speaks out of turn. I am so proud of her! (Also, she's particularly close to me so I'm pretty sure she'd never do it with anyone else.) (Also, I told both her parents when I saw each of them later in the day. They've been concerned because she is very quiet and seems fairly compliant, so they were as pleased as I am. Just wait till she starts doing it more often!)

Second class: I've actually got it that you can simplify 16:24 to 2:3 and I've checked in with the engineering teacher to make sure that I do understand the torque/speed issues the effects of gearing up/down. I'm ready. Whereupon I develop aphasia (a word I never forget, even when it is happening) and can't think of what the things on the outside of the gear are called. So I start the lecture by explaining that gears have pointy out things on the outside. The class asks, "pointy out things?" I turn around to the loudest of them (who I also adore) and accuse, "what would you call them?" "Spikes." "Oh. FINE then." (Yes, that was me with the 'tude. There's a reason my students are not demure and completely respectful and it works for me.) Of course, as the class starts teasing her about "besting the teacher" I look down at the handout I've given them and realize that all the different gears are labeled, "8-tooth gear," "16-tooth gear," etc.