Archive for October, 2005

Complete lecture mishap

Friday, October 14th, 2005

I missed a lecture yesterday morning. I had updated the timeslot change from the previous week in one calendar, but not propegated it to the other calendar…so I was in for the lecture, just not in the room. So the only thing I could think of doing was putting my hand up stating mea culpa (Latin for d’oh) and rescheduling the lecture for the later tutorial slot and another slot this morning.

The thing is that I agonised over designing that lecture. It’s on source control, which is a subject dear to my heart. I tried to figure out the best way of drawing the students into the lecture, but I think I ended up loosing them. I think there are two reasons for this

  • the students were rightly annoyed that I missed the lecture,
  • I tried to cover too much.

  • So I’ve to give the same lecture today and I’ve rejigged it slightly.

    I think I now understand what people mean when they say “You can never teach at too low a level”, I don’t think they’re trying to be scathing of students, I think it could be better stated as “You can never teach the basics too well”. For instance, the class I took consists of intelligent, well motivated people (all universitity students are by definition intelligent and generally motivated to get a qualification). It would have been better if I went in and given them an understanding of source control rather than details of the minutae. They can then use that base and build on it themselves. On a good day (or a well-planned lecture) I should be able to communicate the understanding of source control and explain some of the minutae. So the changes I’ve made to the lecture reflect my intention to communicate – clearly – the understanding of source control. I’ll update on how it goes later on.

    My saving grace is that I think the tutorial sheet is a good one…but we’ll see what the students think of it.

    Podcast tastic

    Tuesday, October 11th, 2005

    If you were dying to hear myself and Craig talk for 40 minutes on computer graphics you can.

    First lecture in Computer Graphics Algorithms

    Friday, October 7th, 2005

    I gave my first lecture in CGA today. I think it went well, but the real test is the Traynor 12 Step Guide to Better Lecturing. So how did I score:

    Do you explain to your students why they are taking this module? I think so. I asked them individually why they want to take the module and prepared material on what I expected them to say. As I thought, most were there to develop games. But, I think I got accross some other uses of CGA.

    Do you maintain a course website where all the support materials for your course can be found? Yes and, what’s more, it’s a wiki. To which a student has already added the Junit fix.

    Do you define the bounds of your course so students know what, precisely, the course covers? Probably not as well as I should have. I explained the Haber-McNabb visualisation pipeline and explained that we only consider the rendering aspects. This is something to improve on.

    Do you write your own lecture notes?Yes and they’re on the wiki. I have a custom XML docbook to LaTeX publishing system which I think rocks.

    Do you update your lecture notes every year, and frequently change aspects of your course? Not applicable as it’s the first year of the course.

    Are you teaching the most advanced technologies in the area? Yes, probably too much and No probably not. I use Java 1.5 and Eclipse. Some students are having problems with Eclipse, but we’re working through them. I’m also using source control which seems to be causing them problems, particularly because the network is a bit broken. I use GNU Arch but am going to switch to Subversion as everyone (meaning Eclipse) speaks svn. As for the graphics tech I’m not using cutting edge. In fact I’m using old-tech software rendering in order to explain the underlying concepts, not bleeding-edge hardware rendering.

    Do you use real world examples to support the topics you cover in lectures? Yes, I refer to computer games that are currently on the market, though I should improve this.

    Are you using the best courseware/resources that are available for teaching your course? would say that I am as I developed the courseware, but I’m open to criticism.

    Do you take at least two sets of feedback from your students, and react to what they say? No, not yet. Something to improve upon.

    Do you offer your students weekly tutorials with anonymous question submission? No. I offer weekly formative assessment but it’s not anonymous. I could make it anonymous I suppose. I’ll have to get Des’s reasons for this one.

    Do you verify all your assumptions about the prior knowledge of the class? No I didn’t. That’s why some non-mainstream CS students are having a problem with Eclipse. But I have offered to put on extra tutorials to make up for my mistake.

    Do you assess your class correctly, offering questions at different level of Blooms taxonomy, and using ‘truth in sentencing’? I’ve planned the assessment that way, but we’ll see how it goes.

    So three definate No’s and some maybe’s. I’ll have to have a look at improving that over the coming months.

    First day at LinuxWorld London

    Thursday, October 6th, 2005

    I was on the GNOME foundation stand at Linux World yesterday. The quick synopsis is

    • it was fun,
    • most Gnome users like Gnome,
    • one or two very vocal users have specific minor issues (but they think they’re major),
    • many users want a Free Software Active Directory like solution,
    • demo-ing simple things like Evolution sharing its calendar with the clock applet and Project Utopia is very effective at generating a “wow!” response,
    • F-spot is an impressive application for most users,
    • Murray should give us the login details for the demo box :) .

    So the rest of this post is my meandering description of the above list of points.

    I’ve only been in the U.K. for a few months, but it was nice to meet the gnome-uk people that I’ve been speaking to on IRC. After all the work was done (and we all did some good work) we went for a pint with one of the KDE guys. It was great to get around to see all the offerings from other distributors even if I did piss-off one vendor and rant at Sun for a while.

    Most Gnome users like Gnome. That’s unsurprising. What is surprising is that SuSE users seem to have the most problems with Gnome. I got reports of Gnome not starting and generally crashyness. Having never really used SuSE there’s not much I can comment on this. Fedora users noticed a downward trend in the quality of their desktops from FC1 through FC4. I use Fedora myself and I can suggest that this may be due to the Fedora specific management tools (they don’t use gnome-system-tools), though this is wild speculation. Ubuntu users wore big smiles. As an Ubuntu user (on my laptop) I can see why. Ubuntu ships nice Gnome. Bottom line….a lot of Gnome problems seem to be vendor specific.

    One user complained loudly about the lack of a “list a*.gif” kind of option in the file chooser dialog. The scenario here is that his users don’t really use a directory structure so filenames start with a managers initials. Therefore any document written in the group that I would manage would be called ajdsomething.odt. Thus his users need to list all the files that start with ajd and this needs to be easily discoverable. He also complained about the use of the text “Images” in the filter on the file chooser. His users want to specifically say .gif not all images. I suspect his former scenario is more common than his latter as I’ve seen that naming convention employed in another (big legal) company.

    Many users are now wondering how Gnome can hook into their enterprise management system. As in, is there an LDAP backend for GConf keys? This seems to be the kind of stuff that RedHat are working on with their statless approach and it will be nice to see what comes out of that. A Free Software directory server with management tools and tools to transition from Acive Directory would be a holy grail.

    People assume that a Linux desktop is hard (it was LinuxWorld so I’ll refer to Linux and ignore *NIX). A simple demo to allow them to put their USB pendrive into the machine and see it mounted on the desktop gives a certain wow! factor. Showing an appointment shared between Evolution and the clock applet is also suitably impressive.

    F-spot shows users that with our “it just works” software stack, you can also have useful and easy-to-use programs. F-spot does everything well and users responded well when I demo’ed tagging a picture. They were impressed at how easy it was to perform such operations on a Linux desktop. Before I forget….I got little bad feedback on OpenOffice. Users seem to be genuinely happy with it. Again, there were one or two users who wanted a certain button on the left of another button, but no major gripes.

    We had to use one of the Gnome live CDs on one of our demo machines as we didn’t get the login credentials from Murray, and we had no ‘net access.

    All in all, everything worked well and we were very busy talking to lots of people all day. From managers who had heard of this Linux thing, to old-school UNIX users who were updating their skill to Linux to hardcore hackers from other .org projects. It was very enjoyable.

    Breaking Iterator

    Monday, October 3rd, 2005

    I got a bad smell from my TreeIterator implementation. It worked and did what it said on the tin (iterated over a Tree) but it didn’t feel right. Turns out, though I’d implemented the syntax for an Iterator I hadn’t implemented the correct semantics. Twas a bit stupid really but basically if, in general you do this

    class Iter {
    public static void main(String argv[]) {
    Vector<integer> ivec = new Vector<integer>();
    for(int i=0; i<10; i++) {
    ivec.add(new Integer(i));
    }
    Iterator j = ivec.iterator();
    Iterator k = ivec.iterator();
    for(int i=0; i<10; i++)
    System.out.println("j: " + j.next() + " k:" + k.next());
    }
    }

    the j and k iterators work independantly. The output is

    [balor@mowa423-lxajd9 tmp]$ java -cp . Iter
    j: 0 k:0
    j: 1 k:1
    j: 2 k:2
    j: 3 k:3
    j: 4 k:4
    j: 5 k:5
    j: 6 k:6
    j: 7 k:7
    j: 8 k:8
    j: 9 k:9

    whereas the output for my implementation would have been

    [balor@mowa423-lxajd9 tmp]$ java -cp . Iter
    j: 0 k:1
    j: 2 k:3
    j: 4 k:5
    j: 6 k:7
    j: 8 k:9

    So as you can see creating an Iterator works perfectly, however using two Iterators fails disasterously. Given that I had implemented the syntax correctly and my unit tests had passed I thought my code should have been correct. I don’t know what I’m trying to say, but maybe it’s just to underline (again) that semantics is a much higher level of understanding than syntax, but semantic misunderstandings/misinterpretations probably cause more bugs than syntactic proplems which are normally picked up by the compiler.

    Anyway….it was a stupid mistake to make.