There were 45 of us at term start, and since quite a number of second or higher semester students joined us for one class or another they had failed to complete earlier, we made a large group of about 60–enough to start a certain competition for seats in some of the smaller classrooms. We were somewhat taken aback when not one, but several professors assured us that there would be plenty of room in a few weeks. I believe our business administration professor even asked us to take a good look at the student next to us, because chances were by Christmas one of the two of us wouldn’t be here any more.
He wasn’t kidding. It’s a couple of weeks before Christmas, and most classrooms are more than half empty.
The selection process began with the practical programming courses. Officially, UAS doesn’t expect people to already know how to program when they start their CS studies. But if you haven’t done at least some coding in one language or another, you will feel like being thrown into the deep end of the pool without any swimming lessons. The requirements for the practical exercises are from the start way ahead of what is being taught in the programming lectures. Over the first four to six weeks, the lectures covered very basic language features at a rather slow pace, yet starting in the second week we had to hand in small programs as practical exercises, and completing all of these exercises satisfactorily is a precondition for being admitted to the end-of-term exams in January. So people who would learn what an array, or an instance variable, even was in week four had to start using them in week one. Unsurprisingly, some hadn’t quite reckoned with that because–not without some logic–they had expected to be taught things before they had to use them, and those were the first to drop out.
Often the dropping out had two stages. First programming partnerships broke up. We do pair programming from day one here, and that model really has the potential of bringing out the abilities and style of work of any student almost instantly. Some people have either prior knowledge of at least basic programming techniques, or the initiative to acquire them quickly when needed, and since, as I said, we’re being thrown into the deep end as a matter of course, these things are crucial. Others expect to be taught and to be told everything–to get step-by-step instructions all the time. As a result, 24 hours before we were supposed to hand in our first coding solutions, quite a few people had not even installed the IDE and the language yet.
Now imagine such a person paired up with one the first kind. The latter would have the solution ready before the former had realized there was a problem. We had a number of such mismatched pairs, and consequently these broke apart as early as the second practical programming class in week three or so, with each of the partners pairing with somebody more on their own level of skill, independence, or initiative. (Naturally it is very difficult to anticipate how well you’ll work together with somebody you hardly know.) But then those who were broken with, so to speak–the ones with less initiative or motivation–were usually the ones would drop out entirely a few weeks later. In my own study group of eight people initially, we are now down to six, and only one co-student and myself are still with our original programming partner, namely each other. (In fact I was extremely lucky with my choice of partner, much luckier than I thought at the time. He is enthusiastic, conscientious, and he delivers. The only catch is that if I’m not careful he’ll run away with the solution every time.)
Of course it’s only natural that there will be some fluctuation in any program at any university, and there were quite a number of us who simply realized they were not as interested in CS as they had thought, or CS, or UAS, were not what they had expected. There were those whose personal situation prevented them from continuing, or they re-evaluated their priorities. Some changed their course of studies, sometimes only from one CS field to another, and in one case at least this change was predicated upon nothing more dramatic than a preference for a different programming language (Business Informatics starts with Java rather than Ruby). But in many, many cases it was programming itself that proved too hard, too confusing, too demanding, too incomprehensible for people. Some certainly didn’t try hard enough, and that’s all right. Nobody needs to force him/herself into doing something s/he doesn’t enjoy. But conceivably some might have had a better chance if the requirements of the practical exercises and the contents of the lectures had been better coordinated.
The real serial killer though is math. To be sure, Applied CS students at UAS are not expected to do an awful lot of math. The course is called “mathematical foundations of computer science”, and it covers a rather limited set of subjects, starting with the propositional calculus, and moving over sets, relations, functions, the techniques of mathematical proofs, vectors, and matrices to combinatorics. All very basic stuff. The catch is twofold.
First, it’s still a lot of different things to be crammed into a rather limited amount of time–basically 35 hours in ten weeks. Invariably, our professor rushes through the subject of the lecture with barely enough time for a few questions from those who are not so quick on the uptake. And I count myself among those, even though math and I are not exactly mortal enemies. So in the end, you have to acquire the real understanding yourself, from books or the internet, which begs the question, what’s the purpose of the lecture, if you don’t understand the presentation and can’t really ask questions either? The concept of the flipped classroom sounds awfully attractive in this context. If we have to study the contents of the lecture on our own anyway, why not do so in advance, then reserve the class itself for asking questions?
The other catch is that our professor sets a rather high theoretical standard. Even though we’re not studying math, but CS, and applied CS to boot, it doesn’t seem to be enough that we understand the concepts to the extent that they further eventual practical application, or at least a better understanding of the subjects of our CS courses. Naturally I can see the relevance of matrices, functions, or logic to computer programming. I can even accept the general usefulness of a basic competence in following mathematical proofs. What I don’t get is why we have to spend most of our math time doing proofs, which is a tedious, repetitive, and circular exercise at best, one whose core technique seems to be to pretend to be stupid in exactly the right way, and in which even with practice it seems impossible to meet the high professional standards of our professor. That makes math insanely hard even for those of us who don’t automatically get nightmares when seeing a formula with a few funny characters in it. For me, that insistence on doing primarily theoretical proofs is tantamount to math running away with the entire study program, to the extent of its monopolising the bulk of our attention in the first term, and that as one subject among five on the curriculum.
Small wonder then that no class has thinned even nearly as much as math. A room for 60 was crammed with 80 students only two months ago. Today those of us who are left just fill the three front rows, and that’s including some for whom it’s their second try, or higher (in one case, the eighth, no kidding; now that’s persistence for you). As I said, I count myself among those who have a certain affinity for math, yet even for me it’s the one subject that really worries me.
And that’s particularly due to the time pressure we can expect in the exam. We are being told it will be set up so that you don’t have time to solve all the problems. I find that very unsettling, even though we are assured you don’t need to solve them all to get all the credits–you can skip one, and if you do all others perfectly you’ll still score an A+. It’s still poor psychology to build up so much pressure, and unnecessary to boot. What is the exam supposed to test–our math skills, or our performing under pressure? It seems the latter. Supposing you want an A, you have between 10 and 15 minutes per problem to find the perfect solution. But that means you have to see the proper way to conduct a proof more or less instantly, and that pressure is very counterproductive. And if a problem involves any degree of calculation (as solving an equation system or multiplying matrices will) or lengthy arithmetical transformations (as is often the case with proof by induction), you can easily miscalculate, particularly since we are not permitted to bring a calculator, and lose a lot of time before finding out that you made a tiny mistake much earlier. 10 minutes simply don’t seem very generous under these conditions. And why? We asked our professor, but she didn’t seem to understand the question. If we wanted more time, she said, we would also have to do more problems. But why? Again, is it about math or about a stress test?
In truth, even though I invest a lot of time in math–close to half of my total studying time outside class–by my reckoning the best I can realistically aim for is a B-. I am sure I can pass, and I am reasonably certain of a C, but an A is out of the question. That’s basically all right, except that even among those left I think I am one of only a small handful who have no real problems with any of the subjects in the lecture. So if my best, and probably somewhat illusory, hope is a B, what are the expectations of the bulk of the others? And who on earth should have a chance at an A? Is that not an abuse of the grade scale? And is it meant to be that way–that a basic math class is weeding out CS students by the dozens?
But then it seems every course of studies needs this somewhat basic, but still not that fundamental subject that’s running away with the entire program and doing the job of the vicious doorkeeper. In most academic disciplines it’s Latin, in divinity it’s probably Hebrew, and with the sciences of course it’s math. Love it, hate it, it’s still the one thing between you and a degree around which there is no way, and through which there is only banging your head against the wall very hard for a very long time. Maybe it’s supposed to be that way. Probably best to take it stoical.
What’s the real pity though is that, without the over-the-top theories and the extreme time pressure, math could actually be fun. What about trying that approach for a change?