I’m not particularly sure how to start a post like this, so let’s just get right into it. Over the past little while, I’ve been wondering a lot about why I am studying both computer science and pure mathematics. The conclusion I came to is one that most will probably consider quite bad.

After my first year of university (in mathematical physics), I realized that I really, really wanted to study pure mathematics. I also fell in love with theoretical CS. Particularly, stuff like formal languages and automata theory (often simply called the “theory of computing”). There is a course offered at Waterloo called CS 365 which I mentioned in one of my earlier posts. It is an enriched version of CS 360 (the standard course on theory of computation): 365 takes a very mathematical approach. It is the kind of course that the vast majority of CS majors here wouldn’t even consider taking; even for BMath/CS students, the normal route is to take CS 360. This course, and similar courses which are usually saved for fourth year, is my ideal of what computer science is, and it is the reason I want to study CS.

The other reason I’m studying CS is because until now, it seemed like something I could always excel in without any concerns. Pure math may well get exponentially harder from here on out, and I may find myself struggling to stay on the surface, unlike most of my peers who seem to not only be significantly talented, but also have more experience than myself. So, my reasoning was as follows: if it turns out that I’m not good enough to be a mathematician, I could still get a good job through my CS major and keep myself comfortably alive.

I will point out that by the reactions and opinions of more senior students, it seems that the School of Computer Science here leaves quite a bit to be desired. In particular, I read something about incompetent professors and badly-organized second-year classes. Now that I’m taking the bulk of second year CS (namely, 240+241+251), I’m in a position to state my own opinion.

First off, CS 241 is an excellent course, being taught by an excellent instructor, who really knows what he’s doing. I respect that. I’m not yet sure about CS 251, but this course as well is not that bad: with some effort, it is still manageable. CS 240, on the other hand… something needs to be said about the logistics of the course. Considering the mark I got in CS 145, I figured I was pretty well-prepared for upper-year CS courses. So why is this course posing such a problem to me? Here are some of the aspects I’ve noted:

  • Many of the algorithms presented in class are quite subtle, with a variety of special cases. I don’t think they are being presented in enough detail. I’m often left guessing: “what should I do now?” when I try to simulate the algorithms as part of assignment questions. Often I run into cases that seem to not have been treated in any example, or even discussed.
  • The assignments are long. Extremely long. They often require you to significantly extend ideas presented in class, but it feels like there is no effort made at all to guide the students through this. Instead, the problems make you struggle for hours while making very little progress. This is horribly discouraging and has caused me to just give up on many of the problems. Assignment 1 was reasonable. The next two were a swift kick in the face, and the class average shows it. And guess what? They’re worth 25% of your overall mark. Moreover, if you don’t pass the assignments portion, you fail the whole course. Man, this just keeps getting better, doesn’t it?
  • The data structures defined in class are nonstandard. That is, the definitions we use in class differ from those in the literature. This pretty much screws over any student’s efforts to learn the material from another source, be it a textbook, or an online resource.

So now, I’m faced with a very difficult decision. I have one of three choices:

  • Ignore my better judgment and stay in the course, despite having already lost over 5% of my overall mark due to catastrophic performance on assignments.
  • Drop CS 240 and take it next term in the hopes that things will be different (they probably won’t). This causes a nauseating avalanche in my course sequencing, potentially delaying graduation.
  • Drop CS 240 and stop studying computer science altogether. If I take this approach, it could either be the best, or the worst, decision I ever make in my life.

I will perhaps write another post on these issues. They have been plaguing my thoughts for at least two weeks now.


About mlbaker

just another guy trying to make the diagrams commute.
This entry was posted in articles and tagged , , , , , . Bookmark the permalink.

8 Responses to Rage

  1. So I assume that going to office hours is not helping at all? Anyways, I would probably try for option 1 (there could always be an easy midterm/final coming up) because maybe through all your hard work and struggles, getting through those 3rd year courses will seem a lot easier.

    Option 4: Opt for a CS minor instead?

  2. dx7hymcxnpq says:

    I’ll probably wait until after the midterm (next week) to decide. The assignments are worth so much though, I may already be screwed. I don’t feel like putting ridiculous effort into the course and learning all the material down to the last detail if I’m going to finish with some garbage mark anyways. I’d rather just drop it and take it later. The decision is made harder by the fact that there may be a significant curve applied to the assignment marks, in which case I’d have dropped the course for no reason at all.

    I’ve thought about doing a CS minor, but it would be pointless: I’d be denied entry to all the courses I’m actually interested in (“major only” courses — CS is the only department in the whole faculty with such stupid restrictions).

    • And these CS major only courses cannot get course overrides?

      The other choice could just be to go the BMath/CS route and take less courses in the PMATHs.

      P.S. How is the Math245 Assignment coming along? I got just about every question except number 5 to which Dr. New said that you should think of constructing the cross product of n-2 vectors in R^n as a hint.

  3. dx7hymcxnpq says:

    You solved all of them already? How long did that take you? I haven’t had time to start it yet, have a CS 241 assignment due tomorrow…

  4. It took roughly 2 hrs for 2-4, I’m still working out a few details of 1 but I got the general idea… number 5… yeah I’m thinking +2hrs on that.

  5. dx7hymcxnpq says:

    Cross product of n-2 vectors in R^n? So you’re supposed to… define that? Because I think it was only defined for n-1 vectors in R^n.

  6. No, I don’t believe you define it, more like how the cross-product of n-2 would be created using the same process as n-1 vectors. All I really know for now is that it does have something to do with determinants.

  7. SomePmathCSGuyWhoEnjoysYourWriting says:

    w.r.t. to 240: ace the midterm/final (i.e. 95+) and the assignments will mean nothing. don’t give up!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s