Things I Discovered After Taking Software Engineering

1) Have you loved programming since you were a kid? Well, you really don’t know anything at all.
Unless you’re some sort of prodigy and do nothing but code in your spare time, there is still a LOT you don’t know. I’m talking software design patterns, HEAPS of algorithms and data structures, and making your code not terrible. So don’t fret that all your classmates might know more than you just because they decided they wanted to do software since they were 6 months old. Neither of you know what the Strategy design pattern is, and neither do I.

2) Sure, there’s coding… but there’s also a lot of not coding
Out of the eight courses we take this year, less than half of them involve actual coding. And one of them is VHDL which doesn’t really count.

In the end, only SOFTENG 251, SOFTENG 206, and SOFTENG 254 actually have you coding stuff, and it’s mostly Java.

SOFTENG 251 lays out the fundamentals of object-oriented programming, and SOFTENG 206 takes it further and tosses shell scripting in the mix (Linux users rejoice!) and you get to apply what you’ve learned so far. It’s heavily project-based and you get assigned a partner to design a user interface. This is likely the biggest (and most fun) project you will get in your second year, so make it count! I would add a picture but showing whatever I’m working on is probably in violation of academic integrity or something (since the project is still ongoing). Plus showing my code is probably really boring.

SOFTENG 254 focuses quality assurance where you learn to use frameworks to test your (and other people’s) software. You learn about software quality and usability, tying in closely with SOFTENG 206.

With all that actual fun stuff out of the way, what else do we software engineering students learn? There are two courses, SOFTENG 250 and SOFTENG 211 which focuses on algorithms and proofs (think proving correctness, complexity, etc). Important for technical interviews, programming competitions, and not much else (imo).

Then there’s ENGSCI 213 which is a separate Mathematical Modelling course from what other specialisations take, with a focus on linear algebra as opposed to calculus. COMPSYS 201 is shared with Electrical/Computer Systems people and it’s a bit of a continuation of the Boolean Logic section of ELECTENG 101, plus microcontrollers (whatever that is).

3) Group Projects are (Still) a Thing
If you chose Engineering because you wanted a high paying job where you didn’t have to talk to people face-to-face, HOO BOY do I have bad news for you. As somewhat of a continuation from ENGGEN 115, we have ENGGEN 204. Emphasising teamwork, management, and communication. As Engineers we cannot escape working with people. This includes customers, clients, management-type-people, and, of course, your fellow engineers. If you thought otherwise you should drop out and do Computer Science, as Engineering probably isn’t for you. We get to work in groups of 10 with people from different specialisations, and do an individual oral presentation. Fun!

Now, are you one of those people who dreads group projects? You may remember my blog post about a year ago about SEVEN HOLY STEPS TO SURVIVING GROUP PROJECTS. It was a bit of a passive aggressive rant as I had just finished my ENGGEN 115 truss project, but a lot of it still applies here. You can go ahead and read it if you want.

4) We’re a family 🙂
Even though we’re a relatively large specialisation, and we don’t have an awesome field trip like EngSci, everyone kind-of sort-of knows each other. One of the reasons for this is SESA (Software Engineering Student Association) which hosts events for software engineering students, and their pizza budget is on point. Also there’s about ~15 girls in our cohort which is (I think) more than previous years.

5) It’s better than Computer Science