Let’s get cranky, shall we?

I’m going to make strong statements, and see if there’s pushback. And, this weekend, I’ll try and turn comments back on. In the meantime, use the gmail address, and I’ll add your comments as they come in.

From Worker Bee, we see this post:

Today I taught my last class of the quarter (Friday is the final), in which I gave a lecture introducing computer science, the whole discipline, starting with NAND gates and how you’d coax electricity to behave like boolean logic, and ending up with the P=NP question and the halting problem. I don’t know whether my students cared about it, but for me it was great fun.

What if the entire lecture had been questions? “What is computer science?” Wait for a minute. Two. Wait until someone says something. Anything. Challenge it. Explore it. Ask other students in the classroom whether they agree or disagree. If they disagree, why? If they don’t, why? See what they know. See what they think. See if they know what they do not know.

In the end, who gives a shit about what another CS grad student thinks computer science is? Grad students in CS are a dime-a-dozen, and every one of us has our own slant, our own view, our own opinion on what computing is or is not. I personally think computing is about the creative process, but I doubt many people care about that. A bunch of first years certainly don’t give a flying duck about NAND gates, and they never will. (I take that back; some of them do. And those students probably didn’t need your lecture in the first place.) Who cares if they have that fragile knowledge about the computational tower—I want them to think!

I’m glad the lecturer’s imagination was captured by their own egotistical rambling, but I’m sure mine wouldn’t have been. Mercy. When will people start asking their students questions, challenging them to wake up, instead of selling them a crapload of bullshit facts?

For the record: Yes, I know I wasn’t there. Yes, I know I’m extrapolating from nothing. Consider Worker Bee’s blog post nothing more than a springboard for me to rant; I certainly don’t actually have any malice or ill-will towards Jacob. The post was nothing more than a foil. But still, why wasn’t the post about the great discussion they had in that classroom, instead of a lecture that the students may or may not have cared about? How much longer until our classrooms become conversations, not pulpits?

Via BoingBoing:

Spanish copyright society hounds Uni teacher out of job:

Cory Doctorow:

I just got an email from my friend Jorge Cortell, a copyfighter and academic in Spain, whom I met at the Creative Commons España launch this year.

Jorge teaches “Intellectual Property” in the Masters program at the Polytechnic University of Valencia UPV. He proposed to give a talk on the benefits of P2P and talk about the law relating to P2P and copyright in Spain. He proposed to demo what sort of legal uses one could make of copyrighted works from P2P networks, and informed the Spanish collecting society, the national police and the attorney general to let them know what he was up to.

They responded by leaning on the Dean, who cancelled Jorge’s venue. Jorge booked another venue, and the Dean cancelled it. So Jorge moved his talk to the cafeteria, and delivered a five hour session to a packed house.

On May 4, the Dean ordered the director of Jorge’s program to demand his resignation, which he tendered. The Vice-Dean then added insult to injury by issuing a statement saying that Jorge had never taught at the university (!), in a surreal, Stalinist purge (Jorge has taught at the University for five years).

This is a shameful act of censorship and a betrayal of the principles of academic freedom. It’s a national shame that Spain’s powerful collecting societies can simply order the termination of any university teacher who teaches things that displease them.
Link

Bluetooth-Presenter I love being able to give a talk or presentation and not be tethered to my laptop. That’s just awful: too many times, you get stuck behind a podium or lab bench in some awful part of the room, and the presentation suffers because of it. As a result, having some kind of wireless remote for PowerPoint is, I think, a must.

Typically, I’ve borrwed a Bluetooth presenter mouse (made by Logitech) from someone in the department whenever I have a talk to give. They’re great to present with, act as a wireless mouse, and have a built-in laser pointer. They also start at around $100, and truthfully, they don’t fully work with PowerPoint on OS X; you can’t easily “go back” a slide. That, and they eat batteries.

Ok, so that makes it sound like it sucks. While it might not be… great, it is Bluetooth, and doesn’t require my plugging in a dongle. Why did I pay for built-in Bluetooth if I can’t use it?

ClickericonEnter Salling Clicker. This app is first-class. Simple in design and execution, it does exactly what it says on the box. (Well, it says “Salling”, which is the software author’s surname, and “Clicker”, which is a bit vague.) But really, it performs as advertised, and that’s amazing.

Clicker lets me connect my phone to my laptop (wirelessly, using Bluetooth) and control my laptop. I can start iTunes. Start it playing. Raise the volume in iTunes. Raise the system volume. Then, I can turn on the special visual effects. When I get bored of iTunes, I can shut down the app, and (if I want to) put my whole system to sleep.

In fact, I can control anything on my Powerbook that I can script with AppleScript. And, that happens to be everything. So, Salling Clicker turns a mobile phone (equipped with Bluetooth) into a universal remote control for my Macintosh. Wonder how you’re going to find a “remote control” for DVD player or VLC your Mac Mini? Hmmm…

T68Enter the Sony Ericsson T68i. This mobile phone has fallen out of favour; I believe I can pick one up on eBay.co.uk for around a tenner. Or, if you know the right people, you can find someone who gave theirs up for dead long ago, and get one for free. Like I did. However, I’m still going to try and pick up another used T68, because it’s just too cheap considering the power it provides when filtered through Salling Clicker. Granted, there’s a lot of other devices that work; for example, all the Palm handhelds with Bluetooth can act as remotes as well.

Oh. PowerPoint? Yeah, Salling Clicker does that too. I can go back and forth through slides, and (with a newer version of PowerPoint) I can get the title of my next slide on my phone. Pretty slick.

(None of this is “new news”; Clicker has been around for a few years, and won a number of nice awards in the Mac community. However, just like my “discovery” of instant messaging and voice-over-IP a few months back, I’m once again being dazzled by technology.)

Over the last few months I have been gathering up material for my CV, thinking about a statement of research and philosophy of teaching, and it is now available to the public (Bio and CV, right).

This evening, I sent out my first application for employment after the PhD. It feels like it means so many things, while meaning nothing at all. I have committed to being done before the end of the summer—to potential future colleagues as well as myself. That alone is something; I’ve been in school for quite a long time. The end is near.

Professor David Wise would say to me over and over “Keep your eyes on the prize.” When he first said this to me, I wasn’t ready to hear it—because I wasn’t even a PhD student yet. Or, I didn’t think I was; he clearly saw things I didn’t.

If I had developed a mantra for this last year, it would have been “keep your eye on the prize.” I don’t know if I’ve always done a good job of adhering to it, but when the end comes into sight, it’s hard not to get excited. Well, excited and scared. But it does give me something to work for and look forward to.

Over the past month or two, I’ve received a number of comments on an article I wrote here titled Considering the Alternative. The article was written because I was asked to give my opinion on course management systems for a project we were considering to do internal to the University. With permission, I had written my ideas up as a weblog post so as to share them with a wider community.

Since then, I’ve made use of Moodle for a small project of my own. I have given the software almost zero time, and when I’ve gotten stuck I’ve found other ways of doing what I want to do. In short, I have not read any documentation, I haven’t asked for help, and (by-and-large) I’ve managed.

Now, this isn’t how one would want to run a CMS in an enterprise environment (say, a University or academic department). But I have seen enough of Moodle to see that it is capable of a great deal more than I currently use it for, and that’s impressive.

“Enough about me,” as they say. A few comments came in during the last two months that I think are worth promoting to the top level of the site; I’ve dropped an email to those involved, as well as the Moodlers themselves, so that some real-world networking might take place as a result of my note here.

From: Anton Pienaar
Email: pienaara dot rd [at-sign] mail dot uovs dot ac dot za

Date: November 8th, 2004
Location: University Free State, South Africa

Thanks for your article. We are in the process of evaluating the costs of WebCT over the long term and have been horrified at the costs. I am seriously looking at Moodle, but I worry about transfering present content from to moogle, could you refer me to sites that have done this process please.

This is a good question. There could be a number of answers, though, depending on what format your content is in now. If you have static web pages (HTML), transferring them into Moodle is a relatively painless process. Indeed, any kind of electronic document (PDF, Word documents, etc.) can be uploaded into a Moodle “course” without any difficulty at all. However, this would amount to using Moodle as nothing more than a database for a bunch of files; you may have some work ahead of you in terms of reformatting content, breaking things into manageable pieces, etc., but all of this is a reasonable amount of work. This is, effectively, what I did in my own Moodle project, and it was a tedious, but painless, experience. Mind you, I find most work involving HTML “tedious.”

If you have content in a SCORM-compliant web-based course management package already, it should be possible to export those SCORM objects and import them directly into Moodle; I have never dealt with this process, but hope that some Moodle people with experience in this area might write up a reasonable answer. It’s a good question, and I’ll update this post however seems appropriate to point to (or include) the answers that come back.

Another question that came in recently had to do with support.

From: Anu
Email: anujatti [at-sign] yahoo dot com
Date: December 8th, 2004

Without any tech support, how do you manage moodle? I work for a non-profit educational organization with minimal funds and need to find a LMS which requires little or no tech support to manage. I have gone through the moodle.org site and found it cumbersome to navigate. After looking through the tech set-up, it seems that it is better to pay one of these big companies to buy a packaged LMS so you don’t have to hire someone to set-up the sytem as required in moodle (if you are a non-techy like me). I am still trying to understand how people set up moodle LMS for less than $1000. How? Who does it? Who manages it?

This is a good question, but I think there are good answers (good, meaning, affordable). The short answer: if you want to just set up a learning management system for less than $1000, you can certainly find someone who will install Moodle and set up the databases for less than that; I know a few people who might be willing to help on that account, depending on the situation.

Shameless self-promotion aside, finding someone to help you set up Moodle for under $1000 should be easy. There may even be a firm in your area that would be willing to help you get started for nothing—as long as they can call it a donation; as a non-profit, they may be able to write off the time. Definitely look around in your area for any reasonably-sized consulting firms that might be interested in this.

Another way to find someone who can set up Moodle and build the initial tables for cheap is a local University. Give a call to whoever is the head of undergraduate studies in the Computer Science department, introduce yourself, and tell them about your situation. They’ll tell you if they’ve got any undergrads who have the requisite background, and probably put the word out for you. Choose a reasonable figure for the install–$150 should be more than enough to entice some students–and make sure you have a simple contract in writing, just so they know you’re serious. You might find yourself an affordable system administrator along the way that, for only a few dollars an hour ($12-$20, depending on whether they work efficiently and do good work) you can have on call as an eager, knowledgeable helper.

Graduate departments of computing (or related) are also a good source of labor, but grad students are sometimes a bit more expensive, as they occasionally know that their time is limited and, therefore, valuable.

And why have I been so long-winded on this count? If you can license WebCT or Blackboard and have it installed on-site for significantly less than $1000, go for it. Do what you want. My guess is, though, that you won’t be able to license the software and get it installed for anywhere near the amount that you’re willing to spend. Also, don’t go believing that either WebCT or Blackboard is significantly easier to setup and manage than Moodle; just because you pay money for it doesn’t magically make it “easy.”

In that vein, I’ll end with a comment, not a question, that was made on the same thread.

From: Dave
Email: davebethany [at-sign] hotmail dot com
Date: December 13th, 2004

I have been watching the development of Moodle for some time now. I have developed undergraduate and graduate level courses for several universities using both Blackboard and WebCT. I made the move to implement a course in Moodle in November as part of my Master’s thesis.

I had a basic course running in less than 1 hour. I then built a much more involved series of ESL courses, using previously developed content, consisting of 3 course levels with 7 sub-levels, in 3 days.

Moodle is so far beyond the commercial products in capability, cost and ease of development I am simply amazed.

Anu, meet Dave. Dave, meet Anu. I’d say that you’ve got at least one person who has some experience with Moodle who might be in a position to help you out. Perhaps you can then hire Dave to develop a course for you (using Moodle, naturally) that teaches you more about how to use Moodle, starting from where you’re comfortable. You might even be able to get other people on the net to chip in and pay for that course, because the resource will benefit everyone who uses, or will use, Moodle.

And that’s the way open source software is supposed to work.

It’s an odd dichotomy; on Mondays, I’ve been doing very drill-and-practice style work with my students, and on Thursdays we’re doing extremely constructive and creative projects.

This evening was the third meeting of the intro to Java I’m teaching as part of the IT Cert at Kent. Unlike last term, I have a new tool to work with in the classroom: a series of tutorials I’ve developed that are embedded in the BlueJ programming environment. What has made these tutorials particularly useful is that they allow my students to wrestle with new concepts in a constrained space: constructs in the language are exposed to them individually, one-at-a-time. When they read their course text, I think they tend to get information overload (having never programmed before), and typically don’t associate terms and concepts effectively with the grammar and syntax of the Java programming language.

I have 12 tutorials right now that drill students on creating an empty class, adding fields (one at a time), adding accessors and mutators for each field, and adding one or more constructors. Because I wrote a tutorial generator for this kind of drill-and-practice tutorial, I can easily create more, and (over time) extend the tutorials to include additional, fundamental concepts.

While the term drill-and-practice carries many negative associations for me, it can be a very effective instructional method. In the context of introductory programming, I think the drill-and-practice work

  • Familiarizes students with the parts of a class
  • Acquaints them with common syntax errors
  • Builds confidence and familiarity with the IDE
  • Provides a conceptual base that I can work from
  • Reduces my in-class workload

In particular, having a tutorial system that can actually inspect the student’s code, as well as offer immediate and positive feedback is an essential part of the equation.

Because the students are asked to write fields individually (for example), they clearly see what a field is in separation from all the other parts of a class. Likewise, each part of a class (accessor/mutator methods and constructors) is added piecewise. When given the TicketMachine code from the second chapter of Objects First, they were easily able to recognize these parts of a class in the code given.

They are also learning the simplest of syntax errors, and most importantly, those errors are constrained to one or two lines of code. That is, the tutorials never ask them to write more than a few lines of code at a time (often only one or two). This means that syntax errors are “constrained” to the most recent thing they did, and therefore they aren’t wandering lost in 50 or more lines of code. The edit-compile cycle also encourages a certain familiarity with the BlueJ IDE, which isn’t a bad thing at this stage.

In terms of a common conceptual base, these tutorials provide something I can refer to time and again. For example, we wrestled with accessors and mutators this evening (“setters” and “getters”). What makes them “easy” is that they both follow a very clear formula; if you know the name of the field you’re working with, you can learn to write setters and getters by wrote. Given the field

private String lastName;

we can write the getter

public String getLastName() {
    return lastName;
}

Having written around a dozen of these in the first half of class, we were able to start dissecting this without it being horribly abstract. For example, when I showed them the accessor “pattern,” it didn’t really surprise them:

public type getfield-name() {
    return field-name;
}

And lastly, my workload in class is significantly reduced if I let the students spend the majority of the 3 hours of class having them work through a tutorial instead of me lecturing. Instead of trying to illustrate concepts with four colors of dry erase marker and a crap little whiteboard, I can instead spend my time going station-to-station looking over the students’ shoulders. When it’s clear they’re wandering, I can provide contextual help that is timely and tailored to the individual. Or, I can pull back and do a quick “mini-lecture” that is topical to a problem they all seem to be having. My advance prep gives me the ability to spend more class-time in 1-on-1 interactions–and the best part is, that advanced prep is reusable from term-to-term and is easily shared on the WWW.

If I’m going on-and-on, it’s because this has, for the last two weeks, been entirely too easy. I feel like the students are making very good progress, considering how fast this 8 week course is intended to go.

I need to spend a little bit of time getting the website up and running for distributing these tutorials; once that is tweaked, we’ll go live and let BlueJ users everywhere grab them. And then I’ll have support issues…

Last night was the third Cool Stuff in Computer Science session of the year. It was, by any metric I can think of, a miraculous success.

Last week, everyone sorted the LEGO bits into kits, so each group would have it’s own box of pieces to work with–this cuts down on traffic around a crowded room. This week, we had two goals:

  1. Build a robot capable of motivating itself (as well as possibly steering), and
  2. Program it in occam.

This may not seem like much, but it actually filled a 21/2 hour session. We started ten minutes late (people dribbling in, etc.), and then I provided a quick mini-lecture on the basics of what we were doing that day (31 minutes). This mini-lecture briefly introduced concurrency (as a concept), and the five occam language constructs the students would encounter today (indention, SEQ/PAR, local variable declaration, procedure calls, and sending data down a channel). The material (an extensive outline, at best), can be found on the Moodle site we’ve set up for managing the educational content of CSCS this term. The PDF of the notes should be accessible as a “Guest” user entering the course.

After the introductory material, we started to play. The students were turned loose with their Mindstorms kits and the IDE Christian built for the occam programming language. Actually, he wrote a plug-in for jEdit, a free/open-source text editor written in Java. The plug-in adds a few buttons to the interface, allowing the students to compile their code and then send it to the Mindstorms; soon, we hope to have our simulator fully tied in as well.

For the last week or two, we’ve been working hard and fast on a lot of things, and getting all the IDE and back-end interaction to work from jEdit was fairly tedious. However, CLJ came through, and for a solid two hours students banged away on the IDE, writing occam code, compiling it, and downloading their programs to the LEGO. At no point did the IDE fall over, and nothing untoward came from the Mindstorms: it was a flawless run, I think.

It was a real joy to see students engaged and excited; it felt like I was “back home” teaching A290 at Indiana Univeristy. While they were engaged in a variety of tasks (building, programming), at no point was anyone complaining about the fact that they were learning. When they couldn’t figure out why things didn’t work, they asked questions, either of us (and I’m no occam expert!), or of each other–CSCS has a good number of second-year students, all of whom are studying occam as part of their second-year course. So, we had a dynamic, interactive session going, all throughout students were engaged and, dare I say, having fun?

In a word, last night was excellent. People left the session wondering what we’re going to do next week–and that is what I think it is all about.

Which makes me wonder… what are we going to do next week…

Last night was the second session in the introduction to Java that I’m teaching as part of Kent’s IT Cert course. Most of my students had not reviewed chapter one, or continued working through any of the exercises; in an 8-week course, this isn’t ideal, but we can manage at this early stage.

trail.gif
I spent a good chunk of Sunday prepping for class, as well as ironing some details out on Monday. The prep was primarily composed of building a tutorial that would run within BlueJ; we’re calling these tutorials trails. This is because the tool we’re currently using to build the trails (a modified version of JFLAP–a tool designed for teaching student about automata) lets us draw out the progression of the tutorial, as well as attach conditions on the transitions from one step to the next.

From the student’s perspective, they encounter the tutorial content as a textual pane embedded in BlueJ.

full-screen.png

What’s interesting about the tutorial is that we can interact with the environment and the student’s code at a very high level through the BlueJ Extensions API. This means we can write a tutorial that responds to

  • Classes of syntax error made by the student,
  • (Some) semantic errors made by the student, as well as
  • The state of their interactions in BlueJ with objects on the bench.

Practically, this means we can augment or override compiler errors with messages of our own, we can inspect their code to see if they’ve carried out the correct additions or modifications (example below), or see if they understand how to interact with the classes they’ve written as objects.

For example, I wanted my students to write a very simple class:

public class Animal {

}

This is because I wanted to build up to adding fields (one at a time), a constructor (that sets default values for those fields), accessors (again, one at a time), and mutators in a very stepwise, controlled manner. This way, syntax errors would generally be constrained to one or two lines of code at a time, and the students would repetitively encounter the fundamental elements of a class. Drill-and-practice at its simplest.

Using the trail builder, we can check for all kinds of things (more on this when the tools and software are released after testing). This particular tutorial didn’t capture any syntax errors, but it would check to see that they managed the semantics of each step. For example, we could check that they had a class called Animal with no fields or methods; if they didn’t, we give them some generic feedback saying as much:

we-have-a-problem.png

After enough attempts, we encourage them to ask a question. There are better ways of handling this, but for the moment, the intention was to get the students asking myself or each-other questions in-class, not coding checks for every possible contingency. When they get things right, something very important happens: they get positive feedback.

we-got-it.png

Off the top of my head, I don’t know of any tutorial systems for programmers that offer this kind of interaction. We can augment syntactic error messages, semantic errors (by examining their code through the BlueJ API or unit tests), we can branch to sub-trails to drill on specific problems as necessary, and most importantly, we can praise students for work well done—something that simply doesn’t happen in VB.Net (or any other development environment I’m aware of).

I think the class went very well. I was surprised at how far through the tutorial my students made it in an hour-and-a-half, considering none of them have done any programming of significance before. They saw it as a lot like HTML, but “more picky.” At the end of the evening, we were able to recap and go through the concepts and vocabulary fairly easily. I’d say that there was a lot of value last night in drilling on basic concepts from the start.

We’ll see what happens next week; I’ll be writing a “drill-and-practice” tutorial generator (so I can give them an endless stream of these kinds of problems to work on), and we’ll start digging into the TicketMachine material I’m cleaning up.

A good friend of some years dropped an email a few days about with some reflections on how he might envision his children being educated. Not that he has kids, mind you, but he was thinking ahead. His own education was fairly non-traditional, and somehow, despite being raised by wolves, turned out relatively brilliant. Except when he’s being stupid, of course.

Point being, his musings primarily concerned ways that a small community might go about organizing to provide home schooling for more than one child, utilizing the expertise of everyone in that community. In this way, his expertise in (say) Physics might be leveraged, while someone else’s expertise in Literature or Ecology would be utilized elsewhere.

I think, however, that he glossed over what probably matters most in the scenario he laid out. One of his starting assumptions was

I’m also proceeding from the standpoint of someone who will one day be a parent, and furthermore the parent of a child who … will get lots of love and attention at home.

I think that might be the single most important factor in the whole equation. Instead of worrying about expertise in Physics or Ecology, you could go a long way to having parents in a community host homework sessions for a group of students, where the parents take turns with small groups of kids asking them questions about their homework, taking interest in what they do, etc. Or, put more simply, I don’t think expertise matters in this situation, but I think the attention and respect are key.

It was an interesting email to receive as CSCS is starting up in a few days. We’ll see how many students show up this year, but the premise is daunting (yet exciting) from an instructor’s point of view: as long as we don’t do things that suck, the students will show up. Or, as long as we respect the time the students are putting in, I’ve noticed that the students respect our time as well, and participate actively. Working with things the students are interested in (little robots) helps out, so I think it’s a healthy combination of respect and motivation that play a key part.

Is my friend’s “home school collective” related to CSCS? I think so, because I think that capturing a student’s imagination is a critical first step in the learning process. And I think that this was implicitly (and somewhat explicitly) behind my friend’s preflections on his children’s future education: how can I get them to be excited about learning (because I don’t think your typical school environment manages)?

We’re getting an iSight camera into the office soon (well, Christian is getting one), and I was looking at what it takes to mount it on a tripod (although these flexi stand things might be better). What was cooler was I found software for creating stop-motion movies with an iSight.

That’s so cool. I just watched a half-dozen movies linked in from the site, and people did some really neat things. It would be so cool to have a couple iBooks on carts in a school with iSights, and have an art teacher be able to do a unit that ties into the curriculum by having students make stop-motion claymation movies (or cut-paper a la South Park, or with pipe-cleaners, or any number of media) using this kind of software.

This ties into another thought I had this morning while speaking with a colleague; I wondered if the spread of voice-over-IP will find it’s way into language classrooms. Instead of having pen-pals (or, probably, email-pals) in other countries, I wonder if schools around the world will start connecting their students up and have them spend a half-hour twice-a-week as part of their language instruction speaking with peers on the other side of the globe. This strikes me as such a powerful use of a free, enabling, and (in some ways) disruptive technology.

I mean, how cool would that be? You’re taking intro Spanish in Iowa, and you chat on Skype to a peer taking intro English in Mexico, or you’re taking intro German in Scotland and you chat with a peer in Vienna. Instead of memorizing dialogues (which have their use in terms of language learning), you get to practice conversational skills practically, and visa-versa (each student takes turns conversing in their native tongue and the learned tongue).

Anyway. I’m not getting much work done this morning, it looks like…