The language that CSC488 requires you to implement has no existing syntax highlighting in any editor I know of, so I decided to make a simple syntax highlighting file myself for VIM.
The Issue Explained
I bought an unlocked Motorola DEFY to use on Canada’s Rogers network. It didn’t have any APNs set, I knew that, so I set them up according to the details provided on some forums. My data plan worked fine and everything was accessible but as soon as I tried to enable “Internet Tethering” in the settings menu I got an alert that said “There is no valid tethering APN. Please contact the customer service to update your tethering APN.” No problem, Rogers support is generaly not that bad so I gave them a call. After going through the usual “maybe your plan doesn’t have tethering, let me check” and “your phone is not from Rogers so maybe that’s why” kind of stuff I was able to confirm that the APN details were, in fact, correct. So then why did tethering not work? Strange…
I googled around and pretty much the only people with a similar problem seemed to all have the same phone as me. I started to fear the worst, that the phone was just incapable of tethering or something and I had no way to return it. I refused to give up and kept searching. Mind you, I was trying to set up the connection with Bluetooth at the time so when I came across the suggestion to use the “3G Mobile Hotspot” app instead of bluetooth tethering I was intrigued. Not really the solution I wanted, but if it worked, then sure why not? I fired it up. Unfortunately this gave an error message along the following lines: “cannot establish data link”. So no dice there.
I also up until that point had an interesting run in with the bluetooth tethering on windows 7 where clicking ‘connect’ actually started the PPP dialup process and got as far as “Registering your computer on the network” but then it would time out and give me an error 734 (I forgot the exact message but basically it just didn’t connect).
Prolog is what’s called a “Logic Programming Language”. Instead of telling the computer what to do and how to do it, you tell it facts and then query those facts. Here is a very basic example of what working with prolog is like, in plain English:
You: Alice is a female.
You: Bob is a male.
You: Charlie is a male.
You: Charlie is the child of Bob.
You: Charlie is the child of Alice.
You: X is the son of Y if X is male and X is a child of Y.
You: Who is Bob's son?
There are many software packages that use this language, each with their own variations, so for the purposes of this document I will be referring to a very common one called SWI-Prolog.
When one has a linear system that requires to be solved, sometimes finding the solution directly is too time consuming and processing intensive, and an approximation must be used. The Jacobi and Gauss-Seidel methods are two very similar ways to approximate the solution to a linear system. This document will explain the Jacobi method first, then Gauss-Seidel.