Software Engineering 3X03 or Computer Science 4MN3 is a course shared by third year mechatronics, third year software engineering and fourth year computer science. So as you can imagine, the class is quite large (~120 people).
This course, if anything, can be described as an extension of the matlab portion of Math 2Z03/2ZZ3... except you'll likely have a better idea of what's going on
.
Every engineering stream has a class like this, and collectively they're all 'numerical methods' classes, which basically have to do with learning how to compute complicated math problems using a computer.
The course begins with an explanation of how a computer stores decimal numbers in what is known as 'floating point' format. Software engineering and computer science students will have a leg up over mechatronics students here because this is also covered in the computer architecture course. The main point to get out of this is that unlike real world numbers, there are a finite number of floating point numbers - which means that not every number in the real world can be exactly represented in the computer; only approximated. Since these numbers are stored in binary, numbers that terminate in decimal (i.e. 0.2) can only be approximated as something like 1.9999999998 in a computer; a very close approximation.
Over time, as you do successively do more and more calculations on a set of values, you start accumulating what is known as 'floating point error'. This is difference that accumulates from 'approximating' numbers. Even though the difference is extremely tiny at first, it can balloon rather quickly as more and more error is accumulated through approximation.
The main bulk of this course is learning techniques for minimizing this error as much as possible to insure that your result in the end is a reasonably good one.
Following this, you learn about methods for efficiently multiplying and inverting matrices (LU-Decomp and is variations). Methods for approximating curves (natural cubic splin, lagrange interpolation. etc). Methods for solving integrals (quadrature, trapezoids, simpson's method). Efficient methods for solving differential equations (Euler's/Runge-Kutta method, Backwards Euler) and Newton's method (for finding square roots).
The professor teaching this class (at least when I took it) was Dr. Sanzheng Qiao. Overall he wasn't a bad guy, but he got very boring to listen to at times. He's extremely helpful and basically told us how to do our assignments several times before each was due.
The course breakdown was like this:
28% - Four programming/matlab assignments
20% - Midterm
53% - Final exam
The midterm was fairly easy and was mostly focused on floating point numbers (i.e. 'what's the smallest floating point number?', 'add these two floating point numbers assuming rounding is done', etc). A lot of the class, however, got destroyed on this midterm... I have no idea how. If you practice converting decimal numbers to floating point numbers and back as well as adding/multiplying, you shouldn't have any trouble. I guess this indicates a lot of people fail at basic math skills :p.
Now it's not absolutely crucial that you listen in this class because there is a guy on Youtube who put up videos teaching literally
the entire course. His channel is 'NumericalMethodsGuy' and he does very easy straightforward explanations of every topic in the course usually under 10 minutes each. I and a few others I know did very well on the exam by simply watching this guy's videos towards exam time. I got a 12 in the end, and I quite literally spent every single class playing StarCraft II in the back of the room.
Overall, the only really challenging thing will be the assignments - specifically some of the matlab ones. They take a while to figure out (in terms of what you're actually supposed to do), but once you get them - it's not so bad.
The tutorials kind of sucked (both the TAs didn't really speak English), but they're helpful if you're really lost on an assignment question.
Pretty average course overall. The material isn't overly interesting, but it's good to know nonetheless.