Posts Tagged ‘computer science’

Count von Count vs. Cantor

Saturday, November 28th, 2009

A combination of an incidental argument over whether the cast of Sesame Street or the Muppet Show would win in a fight and reading about Internet crazy people refusing to believe the uncountability of the real numbers lead to this. I hope you like math.

So we know that Count von Count (colloquially known as The Count) loves counting. According to Wikipedia, he will count anything and everything, regardless of size, amount, or annoyance he causes everyone else. The logical question would be, what happens when we present The Count with an uncountable set like the set of real numbers, ℝ (unless you are a crazy person)? Can he count it?

The answer is of course he can, he’s the goddamn Count.

What are the implications? Basically, The Count can enumerate any set, whether it’s uncountable or not. This means that to The Count, every set is recursively enumerable. This means that for every set S, S and its complement S’ are recursively enumerable. But this means that every set S is recursive.

So, now we consider the halting set H = { (P, w) : program P halts on input w ∈ Σ* }. From above, we have that H is recursive (since H’ is recursively enumerable). But this means that H is decidable. This means that The Count can decide the Halting Problem, and thus, can decide any undecidable problem.

What we conclude is that The Count’s power isn’t to count, but is, in fact, to break logic.

3B: アニメじゃない

Sunday, October 25th, 2009

By popular demand, here’s a post that’s not about animu. Let’s see what delights my 3B term is bringing me.

CS 462: Formal Languages and Parsing (He)

This was one of the courses I was most looking forward to. And then I found out the prof I that I thought was teaching the course (who is a really awesome prof) was going on sabbatical. щ(゚Д゚щ)

The actual prof isn’t that great in lecture. His speaking isn’t very good and neither are his board notes. He’s pretty good when emailed though, so I just read the textbook and imagine it’s the author (who was the prof I wanted to get) lecturing instead and I just take notes.

The course itself is pretty cool. It seems to be more CS 360 stuff and in the same order too, going from finite automata and regular languages to context free languages and then to Turing machines. Thank God for Jeffrey Shallit’s book, A Second Course in Formal Languages and Automata Theory. I think I’m going to keep it.

CS 466: Algorithm Design and Analysis (Biedl)

This is another really cool course. In terms of content, it seems like it’s just more CS 341: here’s a problem, now let’s try to solve it and refine the solution. Now, we have a few more techniques that didn’t make it into CS 341.

I really liked the prof for this course when I took CS 360, enough to change my plans and push STAT 231 even later. But, having Timothy Chan guest lecture one class sort of convinced me I probably would’ve been okay if I’d decided to hold off on it until spring. Still, really good prof with really good board notes, although I find her equations and formulas really, really verbose. This preference for verbosity over notation seems to be a thing that’s really common among CS profs, actually.

PMATH 352: Complex Analysis (Spronk)

This was probably the class I was most worried about, since the last time I had anything to do with calculus was in 2A, which was two years ago. And it turns out my fears were completely realized. The class itself seemed pretty interesting, but it became clear that I had no idea what was going on when the time came to do assignments.

The prof was really helpful when I talked with him about it. This eventually lead to me dropping the course on his suggestion and altering my program plan to a more achievable one. He’s also really good in lecture and is one of those profs that proves and notes every detail. He writes really fast though.

PMATH 432: First Order Logic and Computability (Csima)

So I learned too late that I probably should have chosen PMATH 434 (Computational Number Theory) over this one. The course content for this was essentially a more intense version of CS 245 combined with what I believe will end up being the solvability parts from CS 360 and CS 341. Well, the stuff on solvability might make it worth taking this course, so we’ll see. This course is also kind of annoying because there’s always something that I’m missing in a proof that causes me to hemorrhage marks.

The prof is alright and has pretty good board notes, although she does get mixed up a bit sometimes. I don’t blame her, when you’re going on about models of stuff and interpretations of stuff, it’s not easy to keep track of it.

PMATH 442: Fields and Galois Theory (Liu)

Best course of 3B. Remember when I said rings and fields were awesome and groups were kind of meh? Well, Galois theory tells us that groups can be alright. It just takes something interesting like fields to make groups cool, that’s all. So yeah, field theory (and by extension, ring theory) is pretty awesome.

The prof for this course is great. Her accent needs about one class to get used to and then you’re good. Best board notes of the term. The thing that sets her apart, though, is that she cares about the students. She’s always asking us for our opinions on things about the class and tries to make sure that we understand everything and reminds us that if we’re having trouble, we can always ask her for help and stuff.

3A: Over the halfway hump

Thursday, April 9th, 2009

Even though my carefully crafted course sequences were thwarted, I’ve gotta say that 3A has been my most enjoyable term so far.

PMATH 346: Group Theory (Lawrence)

I was expecting this to be as killer and awesome as PMATH 345. Fortunately, it wasn’t as killer, because the prof was nicer to us on the midterm. Unfortunately, I don’t really like groups as much as rings. Oh well, still pretty fascinating. In theory, groups come before rings, but rings are so much cooler. The prof is pretty good.

PMATH 340: Elementary Number Theory (Ingram)

I was expecting this to be easy and interesting. I was right about the easy. The first half of the course was essentially MATH 135 over again. I didn’t think the prof’s lecturing was terribly interesting, but he had excellent course notes which allowed me to not go to class. I would have loved to have Vanderburgh though.

CS 360: Introduction to the Theory of Computing (Biedl)

This class is pretty awesome and the prof is pretty awesome. One of my favourite classes, this one starts with finite automata and regular languages, moves on to context-free languages and grammars, and ends with Turing machines and solvability. It wasn’t hard to pick up the material and it’s super interesting. The prof is so awesome that I reworked my course sequences so that I could take CS 466 (Algorithm Design and Analysis) with her.

CS 341: Algorithms (Shallit)

This is also another fascinating course. Basically, the course is structured so that in the first part, you go through techniques to design algorithms and examine problems and various algorithms to solve those problems. After that, you move on to looking at lower bounds on problems. Then, you have a look at graph problems: minimum spanning tree and shortest path algorithms. The final part of the course is the most interesting, looking at complexity classes and NP-completeness in particular. The prof is also really awesome. I’m looking forward to having him again for CS 462 (Formal Languages and Parsing).

CS 350: Operating Systems (Aboulnaga)

Operating system theory is kind of interesting, but not enough to keep me concentrated after the other two CS lectures. Oh well.

2B||!2B

Friday, February 20th, 2009

Always returns true, durr.

Anyway, I realized I hadn’t put up any appraisal of what I took for the last few terms (so 2A coop, 2B, and 2B coop, hence 2B hurr hurr hurr), so instead of studying, I will do that now.

ECON 102: Introduction to Macroeconomics (Smith)

I took this during my 2A coop term. Larry Smith is super-duper entertaining. In addition to that, it was nice that he incorporated economic happenings from the real world as they happened. I regret not being in Waterloo for his commentary in Fall 2008 when the financial crisis became too big to ignore and Obama was elected. An excellent introduction to macroeconomics.

LS 101: Introduction to Legal Studies (DE)

I took this during my 2B coop term through distance education. Nothing special here, just a course that goes through the basics of law in Canada. Pretty easy, what with one paper and one final and no effort put into either netting me a very good mark. I guess if you suck at writing, you shouldn’t take it?

CS 240: Data Structures and Data Management (Chinaei)

Not a terrible prof, but I bought CLRS, so I wasn’t missing too much.

CS 246: Software Abstraction and Specification (Davis)

Again, not terrible, but the course was just C++, obscure UML details, memorizing design patterns, and long tedious assignments.

CS 251: Computer Organization and Design (Cowan)

I’m not a fan of low-level stuff and this was pretty much the lowest-level course that CS has. I already took SE 141, so that saved me for the first half of the course, but the second half seemed like obscure architecture details. It didn’t help that the prof liked to go on long tangents, both in lecture and on assignments.

STAT 230: Probability (Chisholm)

I wasn’t in her section, but I went to one class with the prof that I was supposed to have and never went back. I hate statistics, but she was a really good prof and made it bearable.

PMATH 345: Rings, Polynomials, and Finite Fields (McKinnon)

This was my favourite course of the term. Of course, this was also my hardest course, and I pretty much got destroyed. But I loved the course content. And the prof was awesome too. It might be my favourite course I’ve taken so far. Of course, it’d be my lowest mark too. Go figure.

Plugging the webs together

Saturday, October 18th, 2008

So I’ve decided that web development isn’t for me and I can see why everyone has a fairly negative view of web development.

I tried to keep an open mind when applying for jobs last term and ended up working at a web development studio. I went through about a week or two of mindless work, doing tasks that really should be scripted. Then, I went through another week or so of learning new technologies that I’d need to know to work on development. So I managed to finally get around to having a look at Flex, PHP, JSP, and get a better understanding of JavaScript, which was a surprisingly interesting language.

After that I began to get smaller development projects, which consisted of adding some sort of functionality in some existing site. It was at this point that I realized that all web programming was was gluing various objects together and sticking a smidgeon of simple logic in between. In other words, I’d gotten into the type of development I so desperately tried to avoid.

But I guess I understand now what it was that I was so interested in. When I have nothing to do, I like to think about myself all meta-like. I thought that I was interested in web development and it turned out I wasn’t. I was really into web standards though, what with the XHTML and CSS and the whole semantic web and separating structure and view.

It turns out I was interested in languages. I’m far more interested in XHTML and understanding its uses and purpose than actually writing it. The most interesting technology I learned was JavaScript, when I learned that it was a functional programming language and I went off to play around with it and learn more about functional programming. I was far more interested in learning the design philosophy and architecture behind Flex than learning how to throw some buttons on a page.

So, note to self: don’t get a job programming for businesses.