Coffee in the cafeteria, for the first time this term (the summer term). The cafeteria always closes during the term break, but this week it’s open again, for in some study programs lectures have already begun. CS traditionally starts a week later (no idea why). Come next Monday, our lectures will commence, with computer networks in the morning and intelligent systems in the afternoon. I have very mixed expectations there. Both lecturers are new to us, but the computer networks professor is from the technical CS study program, so that, and the subject itself, make me expect something very similar to the operating systems lecture last term–a lot of arcane technical detail to be mastered mainly by means of rote learning.
Now intelligent systems on the other hand could be quite fun. It’s being read by a contract lecturer, and I had a look at some of her exams from previous terms. They looked a lot like this could be something in the line of CS 101 (“foundations of computer science”), which was a very enjoyable lecture: First-order logic, Prolog programming, logic puzzles, conditional probabilities, decision graphs, and so forth. We have done all that before (at least twice), and apart from programming this is just the kind of thing I enjoy about studying CS.
The lecturer has already made available the first two practicum assignments, and just for fun (and because I was bored with everything else I might conceivably do) I solved the first one, a Prolog puzzle of the usual kind: There are three open positions in a company board of directors, and six candidates, and they will each of them only serve in certain combinations. Typical Prolog, though it still took me three hours to do right. But then it was one homework assignment out of four for the entire term, and designed to be solved by a group of three students, so three person-hours is really not that much. The second one is writing a sudoku solver in Prolog, but it’s sort of pointless because the solution–in just 15 lines!–is right there in the official SWI Prolog online manual. So not quite sure how to deal with that. If you write a naïve solution, it will take forever. If you take the book solution, she will know, because even if you cover your tracks by renaming variables and so on, it’s still quite out of the question that even the most eager group of new Prolog students would have come up with this by themselves.
Still, I am looking forward to this course and practicum. The only bother is that the lecturer wants us to work in groups of three. For three terms now we have become used to working in pairs, or in groups of four, i.e. two pairs. Our study group of four has registered for the same practicum group (there are again three), and are now faced with the impossible task of squaring of circle, because you can make two pairs out of a group of four, just as in the first term we could make two groups of four out of our original study group of eight; but how do you make a group of three? Our only chance is finding two more people so we can have two groups, but since our core semester group is spread all over the practicum groups that will be hard. And who wants to team up with unknown quantities at this stage?
As I explained once before, every practicum is divided in usually three groups who share the same time slot, so that in each week one group meets, for one meeting every three weeks. To facilicate administration and ensure groups of roughly equal size, students register for their practicum group in the computer system before the term starts, first-come first-served. So if you want to work together with your peers, you have to agree on a group (and maybe one backup option) and then be quick on Monday 10 a.m. when the registration opens. Usually the computer system then breaks down instantly, so it’s always a somewhat tense few minutes before you can register, and before know that it worked for everyone in the group. This term (last Monday) we were quite lucky and all got into the desired group. But that was before we knew that at least intelligent systems would not require a power-of-two group size (how dare she do that in a CS program?). So now the people we would gladly team up with are in different groups.
Oh well, no doubt it will sort itself out. Just an unnecessary bother.
The reason I am here is that today is the first all-day meeting of our study group for the software engineering, part II, project–the urban transport network simulation (or game). It’s guaranteed to be another tense meeting with an explosive group dynamic. There is simply too large a gap in expectations between the programming genius in our group (my programming partner) and the rest of us, particularly one person in the group who is somewhat struggling to keep up with the study program and greatly desires to do this project with the minimum effort possible. The other two of us are somewhat caught in the middle. We are probably ready and able to do a great deal more than that guy, but will all the same feel quite overwhelmed by the expectations of my programming partner. It will be hard to sort that out. And since I am the project lead it will be primarily my job to do the sorting out!
At the same time I am becoming sort of disenchanted with the research project the fourth guy in the group and I have recently started participating in. There seems a definite mismatch between our capabilities, the expectations of the other people in the project, and the support they are prepared to give us. The subproject we are working on–urban traffic simulation–is a new addition to the project, which has so far been mainly concerned with simulating natural environments. There is one stakeholder in the project who is currently working on a master thesis that will use the urban simulation for a rather limited research question, so his expectation is that we should deliver the basic tools as soon as possible. Of course he is working on this project nearly full-time (three days a week), while we do this one the margins of our bachelor program and can at best invest a few hours each week. And right now we are struggling to get even the most basic grip on what this entire simulation software does–it’s huge, and heterogeneous, and it’s using technologies we don’t have the first idea of. Like right now I have invested several full days in getting the most basic program to run in .NET Core, a downloader for open source (Open Street Map) map data, and then a couple of days more before a test suite would do anything other than throw cryptic error codes.
The problem is that in this project we are pretty much on our own, left to figure out everything for ourselves–concepts, technologies, everything. We may simply be in over our heads. Sure, we can ask questions, but usually the answers are so vague as may be expected from people who know something they have been working on for a long time so intimately they can no longer imagine how it looks for somebody from the outside. I have some very good ideas for the simulation itself, a good grasp on the concepts, but am decidedly fuzzy on the technology side. It will be a long time before we can start implementing anything, with just a few hours a week to spare for the project, and meanwhile we have the said master student breathing down our necks. The project is certainly interesting and I am learning a lot (though all on my own, so far), but maybe it’s simply a lot more work and frustration than I bargained for.
Oh well, I am a volunteer and can always just drop out again. It would be a shame, of course, particularly after I’ve already invested nearly 50 hours of work so far, but it’s good to know it’s an option.
Meanwhile, with the term about to start, the other guy from our group and I are also preparing for the math tutorial we will be teaching for the technical CS program. The first challenge will be to get people to even attend. For math is a hairy subject. Judging from our own semester group three terms ago, there will be those who think they don’t need a math tutorial because math was never a problem for them at school. And those who think they don’t need it because their expectations aren’t very high in the first place and they want to do everything with the minimum effort and just pass. Particularly in math. Usually there is a rude awakening in store for both of these groups. Granted, nothing taught in Math 101 is really difficult to understand conceptually. But it’s the sheer mass and density of material presented in such a short time, and finally tested, after 15 weeks, within just 90 minutes, that’s the killer. It needs a lot of effort and discipline to keep up with that, and most people fresh out of school are not used yet to that kind of struggle. Reviewing and practicing things in the tutorial, asking questions away from the critical eye of the professor, is an enormous help there. How to convey that to the prospective participants within the 10 minutes or so we get to present the tutorial during their first math lecture at university? Maybe by just giving them the raw figures: on average, in any Math 101 exam, 50 to 70 per cent of those taking it are expected to fail. And many fail a second time, and some a third time, and then are out. Let them draw their own conclusions from that.