University: Curtin University

Degree: Bachelor of Computing, Software Engineering

School Subjects: Literature, Mathematics Applications, French, Design, Photography, English

____________________________________________

Introduction

In high school, I had set on studying Architecture at university, and this was my goal through until the end of Year 12. In fact, I was already enrolled in the course, having received an early offer, and selected my units for 2024. However, prior to actually commencing, I began to have second thoughts, and after speaking with industry professionals and reading more about the field, I decided to withdraw.


In retrospect, I wish I had taken a gap year and researched more fields. Instead, I decided to find another course of interest that I could enrol in. Computers and technology had always been subjects of great fascination for me, so I centred my search around these areas.


Subsequently, I found Software Engineering, located within the Bachelor of Computing at Curtin University. Reading through the course outline and talking to current and past students, I decided to enrol in this degree. One of the primary attractions of the course was its balancing of theoretical and practical learning methods.

Positives


Most units are genuinely interesting and provide an enjoyable challenge; in 2024 Semester 2, I developed Android applications. While the unit was often difficult, it remains a highlight of my university experience. The tutors are also extremely helpful across the units, offering friendly advice and digestible clarifications when needed.

Challenges Faced


At times, assignment instructions have been fairly vague. While the lecturers can provide clarity when requested, it’s not uncommon to work through a portion of an assignment being unsure of ambiguous instructions.


Personally, organisation has been my biggest challenge. I never had the greatest study habits in high school, and I suffered the consequences of this in my first semester. Neglecting organisation has a snowball effect; it caused me to lose track of certain deadlines in favour of others, leading to higher stress as a result.

What The Course Entails


Programming languages are a significant factor of the course – you will be exposed to several, including Java, C, C#, and Kotlin, among others. I’ve used Java in every semester, though you’re encouraged to make use of others were allowed.


You will also learn various industry practices, such as Git (used for version control in a project), and effective testing methods. Furthermore, students may be required to properly map out the lifecycle of a project, ensuring deadlines are met and stakeholder requirements are satisfied.


In your final year, you will undertake capstone, wherein you either complete a project in a group, or intern at a company. The latter allows you to gain valuable work experience while counting towards your degree, whereas the former is more focused on working effectively in a group to bring a software solution to life (while adhering to industry practices).

Teaching


Lectures can vary in quality, in my experience. I have had some lecturers simply read off the slides, or worse, spend more time than needed over-explaining. Alternatively, other lecturers have effectively presented information in a digestible way. Some lecturers for programming units may even write and run code live, which is incredibly helpful.


Tutorials and workshops are more often helpful than not. The tutors who run these classes are – as mentioned previously – extremely helpful in clarifying confusing concepts (possibly having already taken the unit themselves).


Exams are not guaranteed for each unit (due to the nature of the degree). However, I have had at least one final exam for each semester. You may be expected to write code on paper, if applicable. The most difficult exams I’ve taken have been for the more theoretical units (unfortunately, a page of notes is not guaranteed for these).


Take-home assignments will form the bulk of your work. These aim to either expand on taught concepts, or enlarge the scope (or both). For example, in my unit studying databases, I had to construct a database of considerable scope, and then take it a step further by connecting to it using a programming language, and manipulating the records from there.

Recommend?


I would recommend this course to those with a genuine interest in some facet of the course; it’s inevitable that some parts may not be of curiosity, and that’s okay. Example topics could be programming language, application development, networking, and many more.

Study Advice


Organisation is key – properly scheduling tasks and staying aware of deadlines will allow you to balance your studies, work, exercise, and your social life.


Given the focus on take-home assignments, it is important to start these early; there’s nothing worse than getting stuck on a task mere hours before the due date. If you finish early, that allows you time to test more areas, and perhaps make some quality-of-life changes to your project.


That being said, there are several highly theoretical units where you will undertake in-class exams. Given that a page of notes is not guaranteed, it’s important to revise the concepts on a regular basis. Cramming is more often than not an impracticable strategy.


Do not use AI. Barring the obvious academic integrity concerns, it often outputs completely wrong and/or verbose code (which is painfully obvious, I might add). That being said, for certain theoretical concepts, Copilot/GPT/… can simplify the topic and explain it in a more digestible way.