Post

Ranking My Subjects

Ranking My Subjects

A characteristic feature of being an IDeA cadet that is both good and bad is the fact that the subjects you choose to study are for the most part limited. Coming to the end of my second year, I have had the opportunity to make roughly ONE choice between studying stats or comp sci this summer. This has boosted my ability to rank these subjects impartially dramatically, and I hope that someone who is a little similar to me finds themselves reading this at a time they have to make a difficult decision and that the choice is made easier.

The Critera

Rankings will be based on one thing, how much I enjoyed the subject. It is ultimately a nebulous and subjective metric but I will reveal it is composed of:

  • How inaccessible the subject matter is to someone trying to learn it themselves vs how easy it is made (the ratio)
  • How much I learnt (more learning = better) + how important I found it
  • How well it was taught- points for both the tutor and lecturer
  • How fun it was
  • How hard it is (harder = better, although I have a big ego and I’ll never admit anything was hard)

Edit (18/04/2025): I’m coming back to publish this, and I think one more really important piece of information is a “top 3 takeaways”, it really grounds the rest of the evaluation in something concrete. At the end of the day, we come to uni to learn. I also want to say that one way you can think of this classification is how I would select nodes in my skilltree to expand to if I had to start comp sci again, or train up a mentee. After having completed the ranking I can reasonably safely say that if you gave me X points to spend on learning skills I would spend it on the top X subjects on this list.

Unlike my Lana Del Rey ranking, we’ll start at the best and work our way down. Without further ado, I present a list of all first and second year IDeA cadet subjects ranked!

1. Network Fundamentals

Three things: HTTP, OSI model, X Area Network

This one shocked my friends especially since I complained about it so much in the moment. I found the tutor annoying and he was a little bit too controlling for my liking as he would point at us to answer in front of the class or ask us to avoid going on our devices. Not an irredeemably quality and I’m conservative with teaching styles myself, but his actual unfamiliarity with the subject and the way he kept alternating between strict and too friendly put me off. I also found the lecturer shockingly cold and dry, he would go through the slides in a monotone voice and when I missed a quiz he declined my request to have an extension (I know he’s within his rights to do that but the only other time that’s happened to me the teacher was super sympathetic and that raised my standards). This put me in a shit mood every class. I had personal reasons to take this particular class over others, I deliberately took a class my friends weren’t in so I could continue sports on Wednesday evenings. Later that week I ended up swapping over to Wednesday, but deliberately avoided my friends so I could branch out more and meet new people (some advice: generally don’t do this, it’s usually not worth it). However, I found some familiar faces in my class anyway and sure enough ended up with them. This turned out to be a terrible decision as both of them stopped coming to class which meant I was often on my own. With our friendly not-friendly tutor.

It took me a second to take a step back and evaluate this subject objectively before I realised how good a thing this subject was for me. To start with, the subject gave me the push I needed and set aside time every week for me to have to be face to face with networking content. As much as I say you can learn technical stuff on your own, if you literally know nothing going to class is such an amazing chance to at least put the big words in your head to go and research in your own time. Words like TCP, websocket, router and ethernet. It turns out I knew nothing and class doesn’t just put the words in your head, it’s been crafted to actually teach you the content.

And the content was difficult! It’s hard to compare it to math and programming which are not inherently linear but are far more linear than networking, but I found myself learning so much about so many different things in the subject of networking. The textbook referenced many times was not mandatory, but the fact that a reference textbook existed was already impressive. Many of the concepts were tested, but many weren’t and if I were to improve the subject I would make the tests in-person and much more rigorous. This feeling is pretty standard across all subjects, so feel free to apply it in your head even when I don’t say it. Being tested is an objective way to measure competence, when teaching we call it competence through achievement.

Despite being objectively not fun, and being taught pretty poorly (did I mention the tutor was caught out by my pretty basic questions on more than one occasion), I got such a good basic understanding of the subject fundamentals my productivity at work doubled. If you happen to be teaching a general introduction to computers/programming, you HAVE to include networking in the training- students will be helpless without it. This makes Net Funds the most useful subject I have taken to date, and puts it first on the list.

2. Application Development with .NET

Three things: AST, Docker, WPF

This one’s also a bit odd. I think the subject has great sentimental value to me as I had to attend class alongside my entire cohort at the same set times twice a week. Twice a week? I forgot to mention I took this subject in the space of 5 weeks in the bonus winter semester that few students get to experience. The reason this subject rates so highly is because building the softwares for the assignments- especially the second assignment which is basically a free for all- was incredibly fun. We partnered up with the cohort beneath us and I got paired with fantastic students that I had actually previously tutored. The assignments were easy and we made something cool and we loved it. The first assignment was pretty nice too, it was a simple CLI with a DB that could do XYZ. I remember being slightly annoyed that it wasn’t specced right and that the sample I/O was inconsistent.

I also enjoyed how rigorous the subject was. I actually learnt next to nothing from the .NET content since I program in .NET as my day job. I did learn a ton from one lecture… my own! I got to prepare a guest lecture, and a couple of my friends did too. I’m guessing because whoever was originally going to deliver it was double booked. It was on microservices with Docker and Kubernetes. The subject went through everything (most things), from the very basics of variables and logical flow to more complex features such as pointer manipulation with unsafe, how asynchronous programming works under the hood and the strengths and failings of the type inference system.

If I hadn’t invested so much time in .NET, I would have called the subject invaluable. Still, I truly recommend this subject to any aspiring .NET devs. Set your sights high with the assignments! I originally intended to make an entire block-based programming language like Scratch, but not wanting to put the burden on my team I opted for a much simpler homework assistance tool. I implemented cool features like ability to parse mathematical expressions for validity, format latex for them on-the-fly and display it in WPF, and dynamically inspect DLLs for logic that was then processed and incorporated into a calculator app as a function with its own latex.

3. Database Fundamentals

Three things: SQL, ERD, Normalization

I found this subject hugely useful because I knew so little about SQL and it is unarguably less approachable than programming. All it takes to learn programming is to download the language and an IDE- for 90% of people these days donwloading python3 and using IDLE. But to actually meaningfully use SQL you have to set up a database which is like infinitely harder and for most people is less visually rewarding than seeing working code. But SQL is critical! Especailly when working on enterprise solutions. This was a much needed skill and I still consider SQL a huge deficit in my own technical abilities, especially given I personally use it so little at work.

I totally neglected the lectures for this subject but definitely remember attending every single one of the classes, it ran from 6-7:30(?) on Tuesdays in Spring and I will never forget the fun stuff we got up to in class. Our tutor was Ricky and he was AWESOME. In case you can’t tell I’m hugely biased towards the tutors whose first language is English. He was humble and had really low expectations which, while I found frustrating, were surprisingly accurate for me. Stuff like not expecting we watch the lectures and then going on to sacrifice going over advanced lab tasks to instead go over basic lec content and only do the beginner lab tasks. Fewer and fewer students showed up through the weeks, you know how it goes, and my table received more and more attention from Ricky which I loved. Seriously cannot overstate how much his explanations helped me and I wish I were brave enough to ask for more help and more clarification. Even with theory stuff like DB normalization, he was just naturally a good teacher and the way he would explain things was easy to follow. Also related to the tutorials, I liked the bonus marks up for grabs for quizzes and even a couple for the assignments, that’s probably what pushed me and a few of my friends over the 98/99 and into the 100.

The assessments were kind of what you would expect. One was theoretical and had to do with constructing an ERD and designing a schema for a food delivery platform with X tables and Y foreign keys. There was a final exam where we had to write pretty basic queries on Ed. To date that was the only in person exam I’ve ever done and when we finished my friends and I spent the day in the city and then left for Melbourne which was a whole other adventure. Altogether, I can summarize my evaluation of this subject by saying I think it an accessible class for what is generally an inaccessible topic.

4. Web Systems

Three things: Virtual memory, The internet, Unix scripting

I’m putting this subject so high because of its potential to be super valuable to students. This subject just covered so many different things that it gives students a footing to choose what they want to do in their degree. Similar to networking, it just puts all the right words in your head for you to go away and learn for real. The course included content from these areas:

  • Computer hardware, how memory physically works
  • Operating systems, the kernel, file systems + storage
    • Linux and how to use it, this history of linux, linux scripting
  • The web, the internet, protocols, and email
    • Programming in HTML and CSS plus basic aesthetics, accessibility
  • Logic -> binary and truth tables

Man, what a combination! It really gives you a good feel for various computer-adjacent fields, including networking, linux, computer engineering, frontend design (sort of) and math (not really). It had an exam, which was actually fun to study for and sit! The exam was a skills test and was based around our ability to use linux commands to complete tasks like performing matches on files and copying the results to all other files that have a certain extension and whose names contain a substring. There were some small canva quizzes and an assignment where we had to design and build a webpage (rookie stuff I know. Here’s mine anyway). All in all, a great subject in terms of how much you will enjoy it. We also got to go out for pancakes after class, which I remember fondly.

5. Communications for IT Professionals

Three things: The engineering method, stakeholder analysis, evaluating sources

This one has a special place in my heart because class was so fun, and in the early days of uni your experiences are much more memorable. In terms of content it sucked horribly, but I learnt a lot from taking the subject about uni in general. Granted, that isn’t specific to this subject but for me it was a game changer, and the structure of it helped a lot for me to do things like: find new friends, form groups, learn how to distribute workloads, learn how to take on responsibility, preparing for failure, timelineing with strangers. All stuff I’d done in HS but not in a “high-stakes” (I thought it was at the time) scenario and not with strangers. The in-person presentation forces you to come to class and also meet with your groupmates outside, since when else are you gonna prepare? The massive 180 minute labs give you this awesome high as you leave, having conquered the unconquerable. The lecturers were pretty good, they all spoke English fluently and were generally quite engaging (with an exception or two). There were 5-6 of them, taking turns teaching the entire class of 100+, which was a model that imo worked quite well.

We went over things like stakeholders and design and the engineering process, which I guess was sort of useful but at the time I really wanted to do something technical instead. Assessments consisted of reports, prototypes and the previously mentioned presentation (which we smashed). The subject wasn’t for me personally, but I put up with it. Stakeholder analysis is boring man, but you gotta learn to do it at some point.

Also, we totally partied in class. Aside from the 10 minute break in which we would sprint to central station to get drinks and sprint back (again, first semester, wanted to be on time) we had epic parties after class. Class finished at 9pm on a Tuesday and honestly who- apart from us- would stick around for that? So the class filtered out leaving us the entire floor at the top of building 2.

Room in building 2

The single room was split across 2 levels, surrounded by screens that would drop down on command. We (my team) would dim the lights, turn the music up and use the 8 or so mics spread around the room to do awesome 6 person simul karaoke. With food, drinks, and a free Wednesday morning, it was a pretty awesome start to my first sem.

6. Data Structures and Algorithms

Three things: The heap data structure, Time complexity, Cpp

What do I remember about DSA? Probably that it was significantly easier than I expected. It was in C++ instead of C which only has a stepper learning curve as there are more tools at your disposal (than in C) such as classes and smart pointers that you have to get used to. C is the language used famously by UNSW for teaching DSA and I prefer it as the emphasis should be on teaching algorithms and data structures themselves instead of OO and cpp. We went through exactly two data structures: heaps and linked lists, both of which were really simple. In fact we had taught the implementation of linked lists in C to cadets just days prior so the only new content was heaps and I picked it up so easily. I remember my friend challenging me to do the linked list assignment in a single train ride home, and while I actually couldn’t do it I wasn’t far off. The only algorithm I remmeber learning was Dijkstra’s (if you can only teach one it is not a bad choice, but why only one?) and I’m not actually sure how we applied it to anything since we didn’t do much with graphs. We also did the hare and tortoise algorithm for cycle detection in linked lists, but that was trivial.

The concepts we were tested on in weekly quizzes (were there weekly quizzes? I think there were) were things like the ref feature using & and time complexity, along with some technical questions about how certain algorithms worked. It was all multiple choice. DSA was the first subject I attended at uni where I legitimately did not attend a single class nor watched a single lecture. My friend told me halfway through the first week that while the teacher tried to make it engaging with sorting algorithms (we did sorting too I remember now) he didn’t learn much and from then I decided it wasn’t worth the time, so I can’t evaluate the tutor. The lecturer was the real deal though, his name was Troy and the way he split up the content was so nice, easy to understand, in bite sized chunks (5 min yt vids) and grouped by the subject, by the week. He was super active on Ed and gave out extensions frequently, that I very much used.

This subject gets a moderately high rating because I think it is important and it was conducted well. If I were less experienced with C style languages or was a newbie to programming and DSA as a whole, it would have been very accessible and friendly.

7. Programming 2

Three things: Java fx, Event driven communication, Variable bindings

I wrote the review for prog 1 first, so go read that (right below) and come back to this. I took prog 2 after prog 1 and the fact that there is so much content overlap + I took them so long ago means I can’t really distinguish where prog 1 ended and prog 2 started. I remember there were quizzes (I forgot to do one of them), a CLI flight management application assignment and a GUI version of the same with some minimal interactivity. I think this subject is quite similar by design to prog 1, content-wise there was less and the difficulty was comparable or maybe a step down. It was also in Java and Python. This subject ranks higher than prog 1 for no particular reason, I attended more classes and enjoyed it more and found the assignments more fulfilling and lasting than the corresponding ones in prog 1. I also think the general topics of UI and the MVC pattern is higher-order and harder to learn on your own. In retrospect I also like the “programming patterns” that were taught. They were conceptually lower level than typical GoF patterns such as the factory or decorator- for example, one pattern was how to take input until input is invalid- but it was a good warm up to learning the real patterns at work later.

8. Programming 1

Three things: Java, Generics, OO principles (SOLID, pillars of OO)

Not much to say, and I did it so long ago and have been doing programming so frequently since then that I hardly remember what was even covered. I definitely didn’t know everything- in fact, I wasn’t even comfortable using classes so I was still an OO beginner taking an OO subject. I think the subject is a good, easy introduction to programming. It is very popular, and due to this popularity there is a lot of support available for students coming from non-technical backgrounds, which is awesome. The subject is easy to HD and the labs are pretty short. The assessments are generally easy and well-specced. I think the final task for the second assignment was very confusing, it is hard to remember because it was so long ago. It was one task in the entire assignment as a bonus and I feel like I just changed one line of code and it automatically passed all the test cases, and then I sent an email to the coordinator complaining about how it didn’t make sense. The other assignments were pretty standard “add classes and minimal logic to get the test cases passing”, for example the second assignment was just making battleships in the CLI.

The subject also did include some pretty interesting things like generics and principles of OO, classic things you learn at uni. In my head one of the typical questions that entry-level software engineers are asked is “what are the principles of OO” so it is cool to know that that is actually something that is taught. Luke Matthieson was the lecturer and he is generally pretty popular. I prefer him to lecturers who can’t speak English fluently. Although he didn’t really exhibit a passion or give captivating lectures (they were online) he was generally pretty engaged, showed up to class on time, had funny weekly habits where we would guess his tea (I hope I’m not misremembering another lecturer). I think programming is a pretty restrictive subjects when it comes to being creative with the lectures since you’re pretty locked in to basically doing an extended demo with very little teaching, your students simply aren’t at the level where oral lectures are more valuable than a live code demo coupled with scattered commentary and occasional tangents.

Altogether I put this subject somewhere in the middle, no strong feelings.

9. Discrete Math

Three things: Equivalence relations, Logic, Induction

The first maths subject on the list and it’s in the bottom 5- did I make a mistake?

No. As I explained to my friends, I’m not grading the field inherently but the subject I sat at UTS, and maths subjects are naturally disadvantaged because I’ll find them easier and therefore less exclusive and also less rigorous than I would like, pushing them down the chain.

The professor constantly alluding to more complex ideas and proofs but refraining to go into detail and the tutor who was pedantic about the things he had been told to be pedantic about and nothing else made a nice pair. It’s almost as if every week he was looking for a use of induction that would forget the base case, without even bothering to think about how semantic descriptions of sets are non rigourous.

I loved how the subject firstly forced us to firstly be there in person as we had quizzes every second week. Secondly, that it rewarded a good understanding of maths since we had to demonstrate working on the board. It would be better if it required proofs in front of the tutor instead of just writing a single line on the board and pretending to think hard to get the attendence marks. Thirdly, that the tasks were non trivial. I thought they were easy in the moment, but in retrospect it was about the hardest technical assessments ever got, aside from the bonus questions in prog 2.

Next time my advice for coordinator is make the subject content harded, make the exams larger, more frequent and more difficult, include all the theory of comp sci content and make a score of 100% inaccessible to everyone except those that are able to prove some ridiculous lemma or demonstrate extensive prior knoweledge in the subject.

10. Theory of Computer Science

Three things: Chomsky’s hierarchy, Parsers, Turing Machines

I consider this Discrete’s annoying little brother. The content featured in this subject should have been included almost entirely in Discrete like in the UNSW course. The subject should have been expanded to complexity theory and other more advanced conepts. The assignments look easy. I’m only 2 weeks into this subject, so I’m rating it prematurely based on Discrete.

Edit: looking over this previously shelved post, I want to leave a few more comments here. I’ve since finished this subject and I am still comfortable leaving this here. Firstly this subject does have a practical, but still on the theoretic side of practice, use: constructing compilers and interpreters, as a large portion of this depends on lexical analyzers (assignment 1) and parsers (assignment 2) which are built on the theoretical computer science concepts of regular languages and grammars. This subject was ok, I didn’t attend too many classes as I was just really busy over Summer when I was taking it. But the classes I did attend were really boring (aside from the first which was run by Dr Luke Mathieson, who is awesome), the tutor I’m sure is a smart guy but he gave the impression of being just a comp sci student who happened to have done well at this subject, not someone truly passionate about math or academia, and this is definitely a theoretic subject. Sometimes he answered questions incorrectly or just admit that he didn’t know the answer to tricky questions- which is fair enough ig, maybe my standards are just high.

In other unis a large amount of the content of this subject is merged with discrete math and goes over less- in USYD they cover basic CF grammars in discrete, and their dedicated computability subjects go through a lot more. Compared to them- and even compared to subjects like web sys, progress is really slow and it felt like we spent weeks just talking about regular languages/grammars/expressions. Combined with the Summer semester’s shorter duration, it felt like we missed so much important stuff, barely scratching the surface of computability and neglecting complexity altogether. Neglecting complexity is probably my biggest complain about this subject- if you don’t have time to teach it just release the content early, a recording from last year and test us on it anyway.

Everything was too handheld, while I used the notes that were provided about parsing and parsetables, I think it would have been more challenging and true to the subject if they were not provided. If you must share the resource, don’t do it as an 11 page excerpt and instead do it as a full 300 page recommended reading. Even when it came to the assignments, assignment one was extremely simple regular expression parsing (5 states and a tiny report, it took an afternoon), for assignment two they put us into groups and already gave us the grammar rather than make us build it ourselves- furthermore they already left factored it and removed left recursion, at which point what even is there left?? 3 people on writing a parsetable was overkill. Finally, the exam was a bit too short and pretty obviously reused questions from previous exams, as evidenced by the final question which asked almost word for word what this stack exchange question asked, and guess who answered it…

One last thing is theory of computer science seems more of a nice to know subject rather than anything that will be seriously used in software development, aside from some very niche language-construction applications. Even there, work has been done by the nerds to remove the “low-level” technical requisites (using tools such as LLVM and yacc) from the process of creating languages, freeing up your time as a software engineer to work on the more important high level things like making the language easy to learn and use. On the other hand, this is as hand wavey as maths gets and I’m still not comfortable even calling it maths- it gets its own dedicated stack exchance because many pure mathematicians won’t go near it. So both in terms of utility and mathematical exclusivity I have to put it far, far down.

11. Software Architecture

Three things: C4, SaaS, Secure Software Development Lifecycle

I am strongly of the opinion that the subjects that are of the most value are not the easy ones (of course not), or the most technical ones (you can learn that on your own), or the hard ones (again, on your own) but a rare combination of practical and experience-oriented subjects that you just cannot learn to do “the right way” at home with a laptop. Arch is one of those.

So why then is this subject so far down on the list? For starters, I didn’t actually learn much- while I understand that only so much can be tested, it is foolish to test absolutely 0% of the content covered in the lecture. Even a 5% or 10% quiz puts having to know lecture content in my mental space, and guarantees at least some minimal interaction with the subject content beyond the assessment page on canvas. Instead, treating the content and assessments as distinct is a mistake because it means students who put little effort into their studies either due to general laziness or external circumstances are able to do really well without having watched the lectures. This is actually my biggest qualm with Australian comp sci degrees as a whole. Even if the assessments are supposed to be based on the content, it clearly is not working as it was designed to if I am able to get essentially 100% with barely any effort. I feel like there is a bigger lesson hidden here somewhere about general intelligence vs legitimate understanding but we can explore that later. I also found the subject poorly structured and delivered. Neither the lecturer nor tutor were particularly engaged, and I can’t blame them- it’s hard to find beauty in architecture the way people find beauty in philosophy or math.

With that out of the way, let’s get onto the summary part of the review. Fundamentally this subject is about what it means to design a software system with multiple components in a way that makes it scalable, flexible and extensible at a high level. Technical implementation is beyond the scope of this subject and covered by plenty of others. In the first 6 weeks we covered architecture at various levels such as system context, containers, components and code. This is called the C4 model, and a huge component of our assignment included building the diagrams for it. In addition, we studied various domains of architecutre- architecture of the application, of the data, of the security and finally of systems that are hosted in the cloud. And then… the content just sort of finished. Or maybe there were more lectures, but I was so out of touch that I never realized. For 4 of weeks 7-12 (idk what happened in the other 2), we would join online zoom meetings and pitch our architecture over the domains to other groups, who would then grade us. We would write feedback for them and they for us, and in between then and the next week we would start preparing for the following section. All of these presentations were building up to the final report in which we needed to explain at length our implementation plan for a fictional application, which for us happened to be a university course management system (UCMS) such as canvas/my student admin.

The premise of this assignment is not totally garbage, but it has a few problems. For one, Chat GPT seriously fucks with students’ abilities to learn. Other groups autogenerated the text on their slides. I know because I use GPT too (much more selectively!) particularly to sort of get an idea about some things I could write about. But I could never blindly copy paste without understanding what I’m “writing” first. Unlike these buffoons, who might have given it a prompt very similar to what I gave it, but unlike me were not able to think critically enough to realise they didn’t know what they were writing. I know because they copy pasted the exact same results I was reading earlier without realising that the privacy and security standards they were describing that they planned to adhere to were not even legally binding in Australia, they were European/American standards because that’s where GPT thinks they live I suppose. You can’t force people not to use GPT. But by having the meetings in person, you ensure they aren’t reading from a script, that they can defend their ideas (as opposed to just remaining muted with cameras off) and that they know what they’re talking about when you ask nonspecific open questions. For problems with the presentation assignment, I wasn’t a big fan of the “getting to grade other groups” idea. I don’t trust the other idiots who take the subjects to be capable of a sincere evaluation and they weren’t, often judging us incorrectly based on what they could see on the slides instead of what we were actually saying- so sometimes we would forget to make a slide for a subtopic and despite saying the content in our speech, the first question the other group would ask would be “why didn’t you include topic X” when we literally did.

I also did not like how the final report was split between 6 people, imo it was a one person job and would ensure individuals had to do at a bare minimum investigation into all the areas of software architecture- instead of what we did, which was what most groups did (and was totally allowed and even recommended!) which was delegating the tasks based off the architectural domain, which resulted in, for example, me sticking to application architecture and not knowing or caring about any other components. In reality I was conscious of this deficiency (in general it is a bad idea to segregate like this with no overlap because noone is capable of reviewing or helping anyone else, you are essentially artificially introducing several single points of failure into the system) and tried to reach out to understand what others were doing and help with little tasks in the diagram section, or the AI and ML section. Sure, it is more work for one person but it is a surefire way to confirming students really know the contents of the subject, as they should.

So the TL;DR is: I didn’t like this subject because I still don’t really know what it was supposed to be about beyond a short description of what software architecture is and I regret that.

12. Business Requirmenets Modelling

Three things: User Story, Use Case Diagram, Data Flow Diagrams

Funny story about this one. I was talking to my work friends about the most useful and least useful subjects they did (in their opinion), an example of a horrible one being BRM. My team lead at the time interrupts asking what we’re talking about, and when we pose to him the question he immediately replied with- you guessed it- the same subject. The catch though, was he misunderstood us. He thought we were asking about the most useful subject! This is a 50+ year old man who joined the industry long before I was born, I sincerely trust his opinion- which he then explained. His POV was that it gives you an excellent foundation for using previously acquired skillsets for scoping business rules and laying the foundation for information systems to be developed- indeed, it can be considered a derivative of InfoSys (the subject, not the company). Why then is it so far down?

Well for starters I had a bad time. Taking it in sem 1 and being too dumb to link up with my HS friends already put me on a failing trajectory when it came to enjoyability. My team was cool but we never clicked, and that already made me sour since my actual friends were having amazing times with their newfound uni groups. I also found the content boring, as every lecture slide felt simple and obvious, totally undeserving of an explanation (something like: “you must talk to stakeholders to identify their needs”) but by the time we got to the in-class labs I was totally lost! I feel ashamed to admit it, but genuinely didn’t know how stuff could go wrong between the lec and lab. It would have been stuff like constructing diagrams or writing user stories, where it is one thing to look at a contrived example and go “duh” but then struggly when the open question is put back on you. Even using the word “contrived” in that last sentence is opinionated, putting it off me but I assure you it was wholeheartedly my incompetence and lack of preparation which only made me feel worse.

Let me analyse this subject a little objectively. UTS for some ridiculous reason does not have DB Funds as a prereq for this subject where half the terminology is derived from relational databases. Terms like “primary key” and “ERD” were tossed around with no context and honestly no clue why I didn’t just ask. In retrospect, I should have been a better learner and I feel horrible that I was/did neither. Please always ask. Also, I have never ever had a situation where content has been assumed that was legitimately not covered. I see and hear people complain about it, and I see stuff like this:

This never happens

posted everywhere although I have experienced it NEVER. It usually goes the opposite ways- vectors for example were taught to me in Advanced, Ext and Ext II Math independently, Phys and Chem and Engineering. It was never assumed. In uni we’ve been over basic programming concepts like variables and control flow in Prog 1, 2, DSA and .NET. This has gotta be the single exception to the rule. Although maybe it had something to do with IDeA cadetship interfering with prereqs, it shouldn’t be allowed to happen.

The other problem is this subject introduces (what to me are) high level concepts very early in a CS degree. This one could be me, again a rare moment when I acknowledge this might be wrong, but the same way software architecture only makes sense after you’ve built a software business requirements only makes sense after you’ve seen a consultation, or understood what business rules are for and why it is so important to communicate with stakeholders. Only now, entering my third year, have I actually had enough experience constructing software and designing systems both at work in developer and non-developer teams and outside of work (in uni student teams) to realise when I need things like use cases and user stories. It will never make sense to a clueless first year first semester student learning technical skills at the level of “what is a variable”. Similar thing with studying a “data flow diagram” without knowing what it means for data to flow, I was just learning advanced things too early.

A lot of this talk hasn’t been about my experience in the subject- it was dry and boring. Our tutor wasn’t great, she wasn’t able to adequately teach many of us. The assessments were not my style, mostly reports and diagrams. So many diagrams. Use case diagrams, ERDs, class diagrams, DFDs, state diagrams, UML. Definitely requires skill to teach, and I’ve made a special point in my head to come back to it later. I still believe it is important, although 100% not up my alley, and students retain access to old canvas subjects even after semester.

13. Fundamentals of Interaction Design

Three things: Nielsen’s Heuristics, Storyboarding, Usability Evaluations

They say that designers get paid a ton in the industry. They say that a lot of technically competent developers shy away from the creative and subjective aspects of the job, such as design, due to its difficulty. I say it’s ridiculous that people need professional qualifications to decide that light blue is nicer to look at than dark blue.

In Funds UI just about the only valuable thing I learnt is that a flat, knee-high flat, rigid and extended surface is ‘sit-on-able’ and I quote that shit 4 times a week.

In this class, students waste time as the PhD who can barely string together a grammatically correct sentence in English reads from the slide, occasionally varying his pace and straying from the content of the slides maybe twice over the entire hour. By the time your ten minutes of ‘Assignment time’ are over you would have questioned if the nintey minute trek out to the city was worth it like 8 times.

The lectures were equally painful to sit through. It doesn’t help that the lecturer was constantly unenthused and taking breaks from the content which is dry, repetitive, and painfully common sense to talk about his latest modern art project. Although in his defense, I would also do anything I could to avoid explaining for the 18th fucking time what the Nielsen Heuristics are.

The assessments are marked so incredibly harshly. Two of my friends who have no problems writing reports or otherwise engaging in non-developer activities barely passed this subject with 60s. I remember their warnings to us as they received their grades to take it more seriously than they did. But it is hard to! Between exams with drawing components, canva posters and possibly the worst university assignment I have done to date- a massive report, composed with a storyboard, 10 figma wireframe screens on a paper prototype, a 5 minute video of a user interacting with the app followed by a lengthy analysis of the interactiveness and a redrawing of the prototype- taking this subject seriously requires so much more work I’d rather just do the minimum and take a low pass. Keep in mind, unlike technical subjects, merely completing the task is no guarantee you’ll be getting decent marks (in prog based subjects all you need to do is press run and get green ticks to get a 100%). Here, marks are judged by the quality of the report, which is a euphemism for saying the report will be copied and pasted into Chat-GPT and your results will be rng. The assessments will make you paranoid about things you didnt believe it was possible to be paranoid about, like how big an image is when you put it on a poster.

Altogether the combination of a lack of interesting content, an insane marking criteria, and no effort from the tutor’s side landed this subject the rank it did.

Final List

  1. Network Fundamentals (Year 2 Autumn)
  2. Application Development with .NET (Year 2 Winter)
  3. Database Fundamentals (Year 1 Spring)
  4. Web Systems (Year 1 Summer)
  5. Communications for IT Professionals (Year 1 Autumn)
  6. Data Structures and Algorithms (Year 2 Autumn)
  7. Programming 2 (Year 1 Spring)
  8. Programming 1 (Year 1 Autumn)
  9. Discrete Math (Year 1 Autumn)
  10. Theory of Computer Science (Year 2 Summer)
  11. Software Architecture (Year 2 Spring)
  12. Business Requirments Modelling (Year 1 Autumn)
  13. Fundamentals of Interaction Design (Year 2 Spring)

Thanks for reading!

This post is licensed under CC BY 4.0 by the author.