carlfoxmarten: (Default)
My first final exam was earlier today, and as it was for the cinema course, I think I did pretty well on it.
(the only problem is that I only had time to do one of my two routes today, while I have to squeeze the second one in before I leave for a movie tomorrow)

Now I only have the geography course left, which I'm rather concerned about.
It's a pure memorization course, which means I'll have to read absolutely everything that I received for the course in the two or three days before the exam so I can recall as much as possible.

I'll have to be really careful as I haven't had a pure memorization course in years...
carlfoxmarten: (Default)
So, with the last email I sent the instructor, I am now officially finished that darn course.

I have to say I'm really disappointed with the instructor and her choices on course management this time around, and have projected my thoughts towards the course instead of the instructor, whose fault it rightly was, in an effort to avoid hating an otherwise nice person.

Basically, while I can (and do) blame myself for dropping the ball on many occasions, much fault can also be found with the instructor (and in most cases made it far easier for me to drop the ball).
  • The teaching method employed favoured students who learned well verbally, while I know for a fact that I learn best visually.
  • The instructor chose to send out course news and assignment specifications through email (through the automatically-set-up mailing list for the course) instead of having a centrally-located web site or set of pages. This to me was the single biggest issue I faced, as it made it difficult to find the information needed for a particular assignment.
  • Information about each assignment was spread out over several messages, and in some cases, over as many as a full dozen messages.
  • The number of emails to the course mailing list was really large, especially for a course with no official course website, which made it still harder to find information. (and email search tools will only help so much, too)
  • Not only was assignment information spread out over numbers of messages, other information was also mashed in with it. In several cases, assignment information was tacked on the end of presentation feedback, with no mention in the subject line.
  • The instructor often forgot information between class and email. For instance, she'd mention something important in class that should be mentioned at least two or three times in-class, or once in class and sent by email so everybody would know about, or sent an email about something, but forgot about it when class time came again.
Really, I should have seen some of this coming a long time ago, but as I didn't, I'm kind of stuck with my fate.
(fortunately, I've done much better in the other two courses I've taken, so my grades aren't all bad)

Much of what I've mentioned above she knows about, so hopefully nobody else has this many problems with her.

As this was a graduate-level course and I'm still an undergrad, it was expected that I not do quite so well as the graduates, but doing this bad has caused me to question whether I really want to do any graduate-level work here at my university.
Granted, it is an isolated case, but it was very sobering.

I will admit that I did learn some useful information in this course, but only so far as Prolog and Logic Programming go, which is to say, not very far at all.
Prolog and L.P. are nowhere near mainstream, and most jobs that would require knowledge them are specialized research positions and not stuff you'd run across very often in the real world.

Oh, and a word of warning: Any comments that talk about how I should have done better have a very high chance of being deleted, as that is not what this journal entry is about.
(plus I've already gone over all of this myself, as has my instructor and parents. Yes, my parents still care about me, which is why I hadn't gone to the last class)

Now I get to go to bed and get up in less than five hours... -.-
carlfoxmarten: (Default)
So far this semester I'm officially registered in one course (Distributed Systems, writing programs in such a way so they work together on multiple computers towards solving a given problem), am on the waitlist for another one (Programming Languages, a comparison of several you wouldn't ordinarily think about, but have valuable lessons that could prove very useful), and am kind of interested in another course (Advanced topics on Artificial Intelligence).

The last course is actually a graduate course, though the instructor is prepared to move mountains to get me in if I say I want it.
(knowing people in high places sure has advantages)

The course on programming languages is taught by an instructor I've had before and really enjoyed.
He has a great sense of humour, but still does a great job of teaching.
Not only that, but the content of the course should be very useful for improving the quality of my code.

Right now I'm third in the waitlist down from tenth, and I only have two days left before I'll automatically slide into a vacated seat.
After Tuesday, I'll need to see an advisor to try getting in, and only if a seat becomes available.
(I'm hoping rather hard, if you can't tell)

The Distributed Systems course should prove useful, though the instructor is one I haven't take a course under yet, and she's proving a little hard to read.
She has a pretty good sense of humour when she's not teaching, but becomes rather serious during class.
I can't tell if it's just how boring the introductory material is or if this is how she rolls.

Anyway, so I'm officially registered in one course, waitlisted for another, and pending on a third, none of which have any scheduling conflicts (so far), and all of which I'm interested in, one way or another.

Now I need to make a decision on the AI course soon...
(it feels like a rather tough choice right now)
carlfoxmarten: (Default)
So I missed the first assignment (and due to policy, no late submissions accepted), found out the second assignment isn't due until March 16th, completed most of the first midterm, didn't finish writing my code for the robots for the open house on Thursday, and completed all I could of the second midterm, so all in all, not a bad week.

I'm relieved that I have an extra two weeks to work on the paper, as I'd only started reading the book the weekend before.
(the book's kind of interesting, even if the course isn't)
In case you're wondering, I'm reading Cell Phones: Invisible Hazard in the Wireless Age by George Carlo and Martin Schram. It's about the first proper research into cell phone safety.
(and that's all I want to say about that right now. Anything more can wait until after I've written my paper...)

The midterms went as well as I could hope, with a missed question on the first one (due to time) and an answer that I kind of hacked together (due to not studying that particular section).

The open house I have mixed feelings about.
The software I was trying to write for it I didn't manage to finish in time, so all I did was run the robots around and explain what they were and what our intentions were for having them.
(a computing science department with robots? Isn't that supposed to be the engineering department's job?)

We (or me, at least) are hoping to use the iRobot Creates that we have to teach programming to first-year students.
Some of the advantages of teaching with these robots are:
  1. Better feedback over learning programming on a computer. (it's physical versus virtual, and making things move is more rewarding than making things print...)
  2. It's prebuilt. You don't have to care about how sturdily you made it, thus removing the physical engineering aspect. (that's for the Engineering department, after all)
  3. It's fairly inexpensive. (the model with all the accessories is ~$300 USD, while the vacuum ranges from $100 to $600 USD. The advantage of the educational model is the Command Module (a small plug-in brain), and extra inputs and outputs, while the vacuum models can be cheaper, but don't have any extra inputs).
  4. (I forget the fourth reason...)

(there are disadvantages, by the way, I'm just too tired to list them right now)

Anyway, what would need to happen first is a conversation with both the Computing Science department and the Education department, I need to finish my undergraduate studies (only a little bit left, fortunately), and then we can do some serious discussions on why we want to use them and how.

Only after that can we actually start creating curriculum for it.
(that does not prevent writing the software, fortunately)
carlfoxmarten: (Default)
As soon as I can get back to the store and get a new case, I'll be ready to assemble my new computer.
For just $40, I can get a fairly good looking case with an included 450W power supply, which is a pretty darn good deal, even without the power supply.

I must say, however, that I'm getting rather disappointed with how long it's taken to get to this point.
It must have been two or three weeks ago that I bought the first parts, with the hard drive a week after that, so the parts have been sitting on my floor for one or two weeks, doing nothing but take up space.
(though I suppose the advantage is that I've been able to earn some more money to replace the $350 I've put into it so far...)

I probably won't have to upgrade it for another four years, at which time we should have haptic holographic screens, but until then, I still need an LCD screen to replace the CRT screen I have now.

I need a better job than the paper route, so I can actually afford all this equipment...

Zope is what I'd call a pre-built web server application with a scripting engine jammed in the side.

It's also what I'm writing an assignment in (it's a contact manager website), which means I need to understand it to be able to make it work the way I want it to.

You know how most stuff you find has this weird thing called a manual?
Well, Zope doesn't really have one. It has more than one, which is part of where the problem lies.

Several incomplete manuals, to be exact.

If you ever try to build a website, DO NOT use Zope.
Use something better, such as Django or something, just not Zope.

This lack of a coherent, detailed manual (and the complete lack of a proper reference library) means that learning Zope has a very steep learning curve.

It took a team of four people (myself included) two weeks to try to figure out how to use Zope until part of it started to make sense.
(you know how most programming languages and stuff all have the same basic concepts behind them? Zope doesn't adhere to them, claiming security reasons. I think they were lazy... Or designed by an idiot, whichever works)

Anyway, I'm plugging along fairly slowly with the site, and enjoying the parts that make sense (this course is easier than all the other courses I'm taking right now) and really getting annoyed by the parts I haven't figured out yet.
(security is one thing that's really important in this course, so it's interesting trying to design things with as few holes as possible)

The final version of the site probably won't be available to see, as it requires a copy of Zope to be running somewhere I can access it, along with a MySQL database server.
(the course server won't be available to me after the course is over, and we've added a password to keep people from adding random stuff without our permission)

The final project my team and I are doing is going to be some kind of course registration system to address some of the problems we're experiencing with the current PeopleSoft-based system.
(we've been able to talk to the person in charge of the department maintaining the system, and some things just aren't going to be fixed due to some of the code being written in COBOL...)

I should point out that the software we're working with is actually Zope2, and there is a Zope3 available.
The only problem is the documentation for Zope3 is much harder to find than for Zope2, and they've changed things around so you need a good manual to find your way...
carlfoxmarten: (Default)
One of the courses I'm taking is called Image Synthesis, basically the creation of photo-realistic rendered images on a computer.

Most versions of this course require the students to write their own raytracer from scratch (or near scratch), but since you have to write everything (including the basic framework), you don't have time to fix any major mistakes you make.

Instead, I'm adding code to an existing raytracer called PBRT, which stands for Physically-Based Rendering Toolkit, to understand how major aspects of raytracing works, such as depth-of-field (as simulated by actual lens systems), space partitioning (for major speed boosts), and what are called "Bidirectional Reflectance Distribution Functions" which dictate how a surface looks (and are usually based on how the physics works).

My current assignment is writing a new camera system for PBRT that simulates an actual lens system (not just one lens for simple depth-of-field, but multiple lenses for many different effects, from telephoto to fisheye lenses).

It took me the first week to understand just what I'm supposed to modify, the second week to figure out how to modify it, and this week to figure out just what I'm doing wrong.

I'm quite certain that my code to bend the light rays through the lenses is correct, as all light rays seem to be passing through all the lenses, but for some strange reason the weighting of the light rays seems to be way off, as the resulting image is always pure black.

Very confusing. >.<
carlfoxmarten: (Default)
A "quick" update of the courses I'm currently taking:

Computational Vision:
Primarily learning about how to programmatically extract desired or useful information from pictures or videos.
Apparently I'll be using Matlab (or, hopefully, the open-source equivalent called Octave) to process images (I'm not sure we'll get to movies in this course).
Mostly, this will be applying some kind of Computational Intelligence algorithm to a 2D or 3D array (the third dimension represents colour) to identify the interesting information.

Machine Learning:
Primarily learning about algorithms that learn over time (both supervised and unsupervised, but mostly supervised), which mostly boils down to taking sample data and programmatically deriving a function that kind of fits the sample data (and hopefully real-world data too).
Again, I'll be using Matlab or the open-source Octave to write my assignments in.

Image Synthesis:
Computer-generated imagery, mostly about ray-tracers, radiosity engines, and if there's time, some information about non-photo-realism.
I'll be using C++ to extend a basic framework called PBRT (Physically-Based Rendering Toolkit) from the book "Physically-Based Rendering, from theory to implementation" by Matt Pharr and Greg Humphreys.
(this is because most graphics students end up writing a ray-tracer and get bogged down in the basics of the framework, and if they make a mistake, there's no time to rewrite it. This framework doesn't just use Red-Green-Blue light transfer, but a full spectrum representation to support light temperature and effects such as prisms and CDs)

Web-based Information Systems:
Mostly working in a team to create a sample interactive website that stores and retrieves information in a database.
Exact subject of the site is up to teams, so we'll see what my team chooses to do.
(this should be the simplest of the four courses I'm taking. We'll see...)
carlfoxmarten: (Default)
I've registered for four courses this semester, and have been accepted for three of them and waitlisted for the third.

It's actually a very interesting looking list, as most of the topics would actually work well together and I just might get away with doing one single, large final project that combines elements from three of the courses...

The three courses I've been accepted for are:
Computational Vision:
Taking pictures or videos (stored or streamed from webcams) and obtaining useful information from them, such as raw data, 3D geometry, or pattern recognition.

Special Topics in Artificial Intelligence:
Advanced discussions of Computational Intelligence, primarily what the students are interested in and what the instructor can teach.

Image Synthesis:
Writing software to create images or movies.

With all this in mind, can you say Augmented Reality project?...
(the last course that I'm on a waitlist for is Data Structures and Algorithms, which is a required course that talks about how to store data and perform various searches and operations on it, which doesn't really sound as interesting as everything else)
carlfoxmarten: (Default)
One of the things I said I was going to work on next was position interpolation stuff.
(i.e., the stuff that makes things move smoothly)

I'm currently taking a course on Numerical Analysis (basically doing math on computers and how to make it easier and/or more accurate).

What are the odds that I just learned about doing this sort of thing this last week?

Very high, apparently.

I'm using a variation of what's called Bezier curves, equations that are governed by two endpoints and two control points that determine the shape of the curve, and generate a smooth curve between the endpoints.
It's a variation because the original definition works in two dimensions, but the two sets of equations do not depend on each other, so are completely independent and can be used separately.
This simplified the code somewhat, as I only had to deal with one curve at a time, so could just use two instances to control the two dimensions separately.

Testing has been very satisfactory, as any change in direction is taken into account when generating the new equation set, by taking the current position and velocity and using them as the starting point for the next equations.

Overall, I'm not quite sure what's next. Several things need doing, such as the grid system (potentially a lot of work) and designing and displaying the backdrop behind and around the game-grid (needs a lot of thought).

Sometime after that, I need to redesign how the buttons, progressbars, etc., look, start work on the power-up system, add scoring and timing (including deciding on game modes. Especially the part about endurance versus timed modes, and if I should just include them all), all the particle and otherwise effects, then the final graphics redesign.

I should probably also stop working until midnight because I was up late due to working late the night before...
carlfoxmarten: (Default)
I finally received my grade for the computational intelligence course I took over half the summer.
I'm rather disappointed with it, actually.

I passed with an A.

I almost wanted to fail so I could take it again for good reason.

You see, most of what we learned was using Prolog for Natural Language Processing, with a little bit of time devoted to other subjects such as various forms of path-finding (including literal pathfinding as well as search spaces for games such as chess and the towers of Hanoi), and, um, well, I don't remember much else.

I would have preferred to have more time dedicated to search-space-type, or even Neural Networks, but I suppose when you only have two months to give an overview of the subject, you go with what you know best...

If I could, I'd have rather taken it under one of the instructors on the closer campus, as I know that one better, the course would likely last the full semester, and it would be less focused on NLP.

I'll admit that NLP was kind of fun, and I will use some of my code again someday (probably soon), but I don't think it was quite appropriate to focus on it so much.
(out of the two assignments and one project, one assignment and the project dealt with it, and we didn't get much of an introduction to it before, either)

Eventually, a couple of possibilities I see for myself are computer games (AI is rather important in most of them) and robotics (AI helps them seem to be more intelligent, with such applications as navigation and problem-solving), both of which would benefit from a background in AI.

I guess I need to talk to an academic advisor...
carlfoxmarten: (Default)
Since the "Computational Intelligence" course (otherwise known as AI, but I think C.I. fits more appropriately) is only a half-semester long, the final project is upon me already.

Since the vast majority of students are Computing Science students and most of the other students are from other faculties that don't usually get exposed to programming (which includes Communications, a few from English, and even one or two Math students), the instructor had us pair up, starting with the non-CS students grabbing onto a CS student (for the programming experience), then letting the leftover CS students choose whomever was left.

Anyway, my teammate is from Communications, so he really knows his grammar, which will be important for the final project, which is a minimal medical Expert System written in Prolog that must be able to answer most English-language questions, including questions such as "What is the problem?" (in that example, it must ask several simple questions about the patient's condition and use some logical induction to deduce what the problem might be.

We've been given pretty much free reign as to the medical conditions we get to include, and we could even go so far as to make them up ourselves, but somehow I don't think we'll be doing anything like that...

I have to say that using Prolog has made many things much easier as far as English-phrase parsing, but you really need to be careful setting up the parser and designing the meaning representation so that it works easily with the rest of the response process.

I think that I might continue to use some of the parts from it (especially the phrase-parsing part) after the course is over for fun, which is something I can't say for most of the programs I've written for courses.
carlfoxmarten: (Default)
Apparently I forgot to post my final grades from last semester...

For the Statistics course I took, I received a grade of B-, which I suppose is to be expected when the material is rather different from what you're used to, and I did manage to pass the Calculus course with a grade of C-.

Overall, not my best semester, but I'm glad it's over.

This semester I'm taking another pair of courses, this time a computational mathematics course called Numerical Analysis I, required for all Computing Science students, and is basically about using computers to calculate math, including the side-effects of precision.

The second course, which I was unhappy to discover that it was only half a semester long (so two months instead of three or four months), is an Artificial Intelligence Survey course, so it's a quick survey of the many areas of Computational Intelligence (another name for A.I.), focusing on a couple of areas so you can actually say that you've learned something.

Overall, I think this is a more equitable arrangement, the AI course will be over quickly and all the study and stress of its final exam will be well before the final exam for the other course, giving me quite a lot of time to get a good mark on it.

The only thing I'm concerned with is getting a good mark for the AI course...
carlfoxmarten: (Default)
Well, final exams are upon me again, and this time I have two, one this Thursday (the 16th) for statistics and the other one next Monday (the 20th) for calculus.

This is my second run through Calculus II, as last time I failed, and as this is a course I need for many upper-division courses, I can only afford to fail it one more time.

I'm actually rather nervous about this one, as I failed rather royally the first time (half due to not fully understanding the earlier stuff, which was a basis for what came after, and half due to the instructor's accent, which I finally understood halfway through the course, which explains the first part).

I know I'll do better, but I still have this nagging doubt at the back of my mind, as well as only getting about 50% on both midterms, even though that was primarily due to not having enough time to complete them.

Anybody have some words of encouragement or study tips that don't include doing all the problems in the textbook?
carlfoxmarten: (chair)
Some time in the future, in a museum of historical media, in the section on pop culture, sub-section TV series, someone will look at the shelf for 2007 and wonder why that shelf is so much smaller than all the others.

One wonders how it will be explained to them...

Incidentally, I currently have three course projects on the go, all are due on various days next week, and they're all on hold while I write fourteen 6-paragraph summaries of important computing science papers, of which I need a minimum of twelve submitted by Monday (at the absolute latest) to get a passing grade...

The first project due is a top-down multiplayer shooter written in Java (the only project I have with a team, and it's about three-quarters done), the second one due is the AniMidi project (which is about one-quarter done. I.e., only the parser...), and the last one is a raytracer written from the ground-up in C++ with no external libraries (I have the majority of the basic building blocks done, but one they're done, I won't have much to do after that).

So it's kind of an understatement to say that I have a full plate for the next week.

Though I really have to say that I'm actually kind of enjoying this semester, as my programming mind has been stretched much farther this time than it has at other times (mostly due to the fact that I took three programming courses this time instead of only one or two, and all of them are project-based courses!), and in ways that haven't overwhelmed me (yet).
(this translates to doing projects that are more interesting than my private projects, but still within my sphere of knowledge)


carlfoxmarten: (Default)
Carl Foxmarten

April 2017

910111213 1415


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 06:44 pm
Powered by Dreamwidth Studios