Archive for the 'School' Category

CMPT 419 Project Ideas

So for CMPT 419, the artifical intelligence special topics class with machine learning as the subject, we have chanced from doing a final exam to a final project, something that usually is a “yay!” thing for me.

However, I am absolutely stumped on ideas of what I can do. I will most likely be leaning towards an application-type project.

I was thinking of making use of this as an opportunity to work on stuff for my little Web-based game project, but during brainstorming, I realized that I could not possibly do that because I would need to create the environment for the game to run first, and then actually use said environments to make something useful, so that is out of the question.

Some standard things, like getting a set of data and doing some classification or regression on that data has already been done in previous assignments for the class. Frankly, if I was going to do the project just like that, it would probably have been not enough work anyway.

A really crazy idea that is currently the front runner, simply because nothing else really stands out, is a machine learning project that takes pictures and applies taglines/captions for them. Not just any picture mind you, but pictures of this nature:

That’s right. This project will dabble into the “dark arts” of Internet memes and lolcats and lolruses and other crazy things to come up with things to label pictures as, such as “HALP” (pictured above), “im in ur X, Ying your Z“, “i has a X“, and so on. Silly idea and hated by some, but should I end up being extremely desperate, I would probably end up doing this.

Another one could be doing something with external ballistics. However, this is kind of tricky since (a) I can’t really say I’m brilliant with physics and (b) I don’t know much about ballistics in the first place. There also is no practical way for me to get data for such a thing, seeing how I don’t own firearms, airsoft guns, or paintball markers. It’s just interesting when you see projects like this really amazing paintball sentry.

Something else could be doing some machine learning to determine the value of a home in an area, given common evaluators like floor space, number of stories, age, building type, real estate type, number of bedrooms, number of bathrooms, and so on. However, in order to get the data I would need for such a project, I would need to do some data scraping which, according to the site’s terms of use, is illegal. If I end up doing this one, I would probably need to send those folks an email requesting permission to obtain the useful information I would need to create something. Or perhaps do something slightly reversed on that: given the price, number of bathrooms/bedrooms, and floor space, determine where this home is located (a classification problem).

Just some ideas that have been floating around and keeping me up at night. But if I am to get this thing done, I need to decide very, very soon just what I will be doing, as I do not have much time left.

Fall 2008: What to take?

So apparently, from a source, Dr. Michael Monagan, a pretty good prof according to a friend, will be teaching Cryptography next semester. So MACM 442 is definitely going to be on the to-take list.

Carrying on with the crypto-theme, there is a CMPT course that also covers the topic that is being offered in the Fall 2008 semester. This would be CMPT 404, Cryptography and Cryptographic Protocols, a new course that touches on topics that were taught in CMPT 409, a special topics course. I am considering taking this course, but the finals are on the same day (or perhaps assigned at the same time, since MACM 442 is a take-home final). It would definitely be a nice complement.

But what else can I take? Looking at the list of courses I wish to take before graduating, we can see that CMPT 401 (taught by Dr. Richard Vaughan) and CMPT 454 (taught by Dr. Ke Wang) are both being offered. I think I would be leaning towards CMPT 401.

Anyone thinking of taking similar courses or other interesting courses?

EDIT: Just realized that CMPT 401 conflicts with MACM 442 and CMPT 454 conflicts with CMPT 404 so that kinda goes out the window. =/

Whee! Out of town! Crap! Catching up on schoolwork!

So starting Saturday and for the 8 days from then, I’m going to be out of Vancouver.

Where will I be heading off to? First off, I will be in Toronto, visiting relatives and my dad’s high school classmates who are there. The day immediately after, I will find myself in New York, which should be interesting since it will be my first time there. Yay for going to a place I’ve never been before!

We apparently know quite a few people over there. One of my cousins is currently working there. If I recall correctly, two of my distant cousins are there studying right now. As well, we have some family friends over there as well. It should be nice to see people I haven’t seen in years/months.

After the few days (don’t ask exactly how many – I didn’t make the itinerary, I just decided to go), we head back to Toronto on the overnight bus and stay over at my aunt’s place. I guess at that point in time, I will be able to find some time to review the CMPT 419 stuff I will be missing during the week, get started on the second assignment, and prepare for some other business. And of course, go around Markham (where my relatives are) and nearby areas.

If there’s anything I learned from my first assignment in CMPT 419, it is “START EARLY”. But then again, I did kinda start early on that first assignment, but I decided to start on the math theory questions first. Bad choice there, Dom. B-a-a-a-d choice indeed.

This time, I’m starting with the MATLAB stuff first. Much simpler (but not by much) and more interesting. Since the assignment’s on classification, we get to do some machine learning stuff on spam detection, which should be fun.

Anyway, time to go to sleep. There are people I know who are convocating tomorrow in both ceremonies, so I should probably go watch and take pictures with them. Or something.

That and pack my stuff for my vacation in the middle of the semester.

Future Plans

Being so close to the end of my degree (at least, unless I decide to do a minor in something or pursue a joint major at this late stage, as mentioned in an old post), I’ve been thinking of things to do before I decide to don the cap and gown to walk across the stage to graduate and step into the “real world” (TM).

I am currently at 108 credits with 3 credits in progress this semester. Assuming I pass CMPT 419, this means I would have completed all my CMPT requirements for graduation and will need to fill in 9 credits worth of coursework.

Of course, in addition to courses, there is also a desire to go and do some more co-op. I hope to make use of the opportunity to explore the various options more. I have yet to do some software development in a work setting, but knowing only Java and fairly basic C that got me through CMPT 300 (Introduction to Operating Systems) is detrimental, which means I need to get myself more experience with other languages that are used in development in areas other than the Web.

In the past, I have mentioned the possibility of using co-op as an opportunity to explore the world (ie. Japan via the Canada Japan Co-Op Program). Perhaps that can still be a reality, but it really depends on how things work out with my academic decisions. If all else fails, there’s always the JET Programme after I graduate.

But in any case, there are a few courses that I would like to take before I leave university, either out of interest, a perceived need, or just something that is useful. I share a list below.

CMPT 379 – Principles of Compiler Design

Reasons: Good to have, Interest

A course traditionally considered to be stupidly hard due to the amount of coding you will need to do. Making use of the course as an opportunity to get good practice with a C-like language (ie. C, C++, Objective C, etc) would be most beneficial. Plus, that talk on parallelism from an architect who works at Electronic Arts a while back has made the course that much more appealing.

CMPT 401 – Distributed Systems

Reason: Useful

Given how we have things like Folding@home or SETI@home, which are examples of distributed computing projects with computing power that exceeds that of the most powerful supercomputers today, we can see distributed systems take on a bigger role in the world around us. Plus, given my interest in Web stuff, knowing about the various necessary things to consider should I decide to distribute servers about would be useful.

CMPT 454 – Database Systems II

Reason: Possible interest

Being a person who enjoys working with information, taking a course that deals with the implementation of databases would be quite interesting. Plus, I did OK in CMPT 354 :D

MACM 442 – Cryptography

Reason: Interest

This course has been on my to-take list for the longest time and next semester has given me the opportunity to do so. It’s just one of those cool little things that you can possibly turn into a hobby or something. I can’t really explain my interest in the subject because I can’t really explain it with words. I just like it.

General Course Outline: http://www.math.sfu.ca/courses/macm442.shtml

That’s the list so far. Maybe we’ll see more on that list in the future. Maybe not.

Who knows?

The Ham Sandwich Theorem

While in class today, my prof mentioned hyperplanes. Not really remembering what those things were and having Internet available, I made use of Wikipedia and looked up hyperplanes.

After running through the page somewhat, something caught my eye in the “See also” section: a link to an article named the ham sandwich theorem.

“Surely this must be a prank.”, I said. It turns out I was mistakened and the ham sandwich theorem, also known as the Stone-Tukey theorem, is a legitimate theorem that talks about dividing n objects in n-dimensional space in half with a (n-1)-dimensional hyperplane. The ham sandwich theorem is for the specific case where n = 3. If n = 2, it would be known as the pancake theorem.

Where do these people come up with these names? Mathematicians must have been quite hungry back then or something, akin to the modern poor starving student.

First Impressions – Summer 2008

For this semester, I am only taking one class. However, in an attempt to restructure my life and its priorities, some things have changed to move towards the goal of better academic performance.

I started to get restless over my mediocre grades sometime between the break, considering how most of the people I know get fairly decent grades. By decent, I mean that their GPA is at least above 2.4. I am pretty sure it’s not because I am a poor academic by any means. At this point in time, however, after reflecting on just what I have been doing in the past few years in university, I have concluded it might just have been my lack of focus on school and too many other things to do, which contributes to stress levels that get me burnt out to do well.

So what I am trying out this semester is a strong focus on school with ample amounts of time to destress to prevent the burn out. Unfortunately for other commitments, this just means less time for those. After all, personal/professional development tops my list at this time, given my desire to get some unique experiences in before graduating, like international co-op opportunities like Coop Japan or various co-op experiences in government and public service in places like CSE. Places outside of Vancouver and outside my comfort zone. Places that challenge me in various ways and give me opportunities to be truly independent, fending for myself and such.

I don’t exactly want to continue being in the CS academic probation either. Despite our academic advisors being awesome people, I don’t want to have to talk to them every semester just to register in upper division CMPT courses because it means there is a chance (although admittedly a very low one) of not being able to register for the courses I want. But yet, having mediocre grades (C range) keeps me nowhere near getting out of CS-based AP. Hopefully my greater focus on academics would help with getting myself out of this and towards a better GPA.

As for the one course, this of course is CMPT 419, Special Topics in Artificial Intelligence, with the topic being machine learning. It’s been quite interesting thus far and I hope to be able to maintain my enthusiasm for the course throughout the semester so I can accomplish my goals as stated above. Greg Mori stated quite clearly that this is a math heavy course, which would be something to focus on, since my math marks have not been stellar in any case.

Luckily, there are opportunities to review with a math review session tomorrow and a bunch of free time brought about by the single class.

Now, people might now go “Dom! You have so much free time now! Go do X for Y!” I am going to be clear right now and say “No.”. I need my free time to do various things that fit in with my goals for better academic performance and professional development, so see me either studying or working on some projects that either have been hanging back or learning new skills that would be useful to achieve my career goals. Some examples of such projects include:

  • Get more practice in writing C
  • Learn how to reverse engineer things through crackmes
  • Finish my Scout group’s website
  • Create a badge administration web information system for Scouts
  • Online game

Of course, life will need to be kept in balance, so efforts will also need to be made to go out and have fun with friends more, which is also something I have not really done much of, but absolutely necessary to keep me sane, as I have discovered as of late.

SFU vs the CFS

A fairly long rant about this issue. For the curious, I want out. More after the jump.

Read the rest of this entry »

Time to take a jump off the deep end

Today was my course registration day.

The original plan was to go and do a distance ed course because I am heading out east for a week and a bit in June. If I carried on with that plan, I would have probably taken either CMNS 130 or CRIM 131, thanks to recent developments that have encouraged me to do more than just a Computing Science degree.

For the curious, the option that was on my mind for the longest time was a minor in Communications due to my primary interest area in Internet communications through websites. I figured that understanding how communications have evolved and developed and where it can go all thanks to technology would be a good thing to pair up with a computing degree.

But after hearing during a career fair last week (and I was one of the people running the booth where I heard it from) that there is discussion going on about a joint major in Computing Science and Criminology on computer forensics, I pretty much got hooked on that idea.

However, a desire to get a U-Pass for the summer (apparently, I am not eligible for a U-Pass if I take only distance ed courses) has encouraged me to go and take a course. And that lucky course does not fall into any of the two aforementioned courses, but CMPT 419.

The topic? Machine learning. The prof? Greg Mori, who also happened to teach my CMPT 310 course.

Two things make me worried about the course though. First off, it is quite math-intensive and requires a good knowledge of calculus and linear algebra, pre-requisites in the lower-level CMPT stuff. I did not do so well on those. Second is that the course is cross-listed with a grad course.

However, the course material does sound interesting and my interest in the material will be my main driving force in keeping me going. After all, my desire to do MACM 442 has already forced me to take MATH 342. For the curious, it was not as bad as it looked.

First Impressions – Spring 2008

And so begins another semester. This one is a bit different because I am actually doing a co-op work term while taking classes.

Yay co-op and making monies!

As far as I know, I am only allowed to take one course while doing co-op. Since I am working at SFU, I can get to my class without much trouble; I just need to make up the time for it (two hours a week that go into my work time).

What course am I taking in addition to CMPT 427? Why JAPN 200 of course!

To be honest, after my first class in JAPN 200, I feel like I am going to get my ass kicked unless I study hard and review all the stuff from JAPN 100/101. At the present time, since there was a semester-long break between JAPN 101 and this class and I did not exactly find time to review content for this class despite having the resources (I have the textbooks and the CDs already), I feel under-prepared and everyone else seems like they are coasting.

Theoretically, I should have enough time, but there are lots of commitments outside of work, like more work (in unpaid forms).

One very interesting thing so far was when people were sharing study tips, one student said that he recently started blogging in Japanese. Maybe I should start doing something similar..

As well, I heard over the holidays from quite a few people that I know that they are taking CMPT 475. It’s an evening class (starting at 5:30 on Tuesdays going for three hours) and from what I hear, the instructor is a person in the industry and will be quite interesting. I am thinking of checking the lecture out next week, since there was no lecture during the first week. Although if I do end up finding the course interesting enough, I will be stuck in a pretty tough spot, unless I somehow manage to squeeze in two classes, along with a full-time co-op job and volunteer work (Scouts).

I’m pretty sure some form of intervention is going to take place should I ever make that decision, so I best find out what I want to do for this semester soon. Of course, I will need to wait untl Tuesday before I get sufficient information to make this decision.

I wish I were riding the Rails, but I’m still trying to get on

For CMPT 470, we have decided to do our project, a Gradebook/Submission Server replacement for the School of Computing Science, in Ruby on Rails.

This will be quite a challenge. Why?

All my experience so far with Web development is with PHP. The approaches are quite different, with the whole MVC thing Rails pushes, not to mention the fact that I will need to learn Ruby.

I just so happened to choose to do CAS integration with the system. After looking at the one page of documentation of making use of CAS, I think I know how it works, but getting it done in a language I am not familiar with is going to be a pain.

If anyone have any good sites that cater to people like me, migrating from PHP to Rails, please let me know.

Another thing as well. You know how PHP has sessions? Does Rails have anything of the sort at all? Again, let me know.