Ben’s guide on choosing the right electives!

As a second year Engineering Science student, you are given the option to take two elective papers. An elective course is a course that you choose to take as part of your programme of study. As a conjoint student, you can choose one of your conjoint papers to take up one of the elective slots therefore you take one conjoint paper and one engineering paper. In my semester two, I ended up taking MECHENG270 as my engineering elective and FINANCE251 as my commerce elective.

I would like to personally thank Charlotte Cordwell for sharing her perspective on COMPSCI 230, Emily Hacket Pain for sharing her perspective on STATS210, Sebastian Thomas for sharing his perspective on SOFTENG281 and Grace Little for sharing her perspective on ENGSCI205.


MECHENG 270: Software Design


  • Two lectures per week (2 hours each)
  • Four assignments (60% total)
  • Two tests (20% each)


MECHENG 270 teaches you the key concepts of Object Orientating Programming in C++. The first half of this paper is really well taught and goes through many examples guiding you through the process. Nasser relates to a lot of the students and teaches us the basics principles of OOP such as classes, methods, inheritance, and polymorphism. The two assignments in this section were relatively straight forward where most people got near full marks however the test was a disaster. Don’t be fooled in thinking that an online 20MCQ test will be easy because if you don’t know the content like myself then you’ll do poorly!

The second half was essentially the same as the data structures and algorithms in ENGSCI 233. The assignments were hit or miss in terms of difficulty but all of them took some time to finish. These assignments taught you how to apply the OOP concepts taught in lectures. We looked at stacks, queues, and different ways to search such as insertion sort, merge sort and bubble sort. There is no exam for this paper which is a relief and it will hopefully reduce the stress come exam time. This paper teaches you a lot about how coding works and will most likely be straight forward if you like coding.


  • Get stuck into assignments early
  • There are open hours and assistance centres available to help you unlike ENGSCI 233 where you are alone
  • First test is hard as it looks at inheritance and polymorphism while the second test is easier as it is just a recap of ENGSCI 233


COMPSCI 230: Programming Techniques

Charlotte Cordwell


  • Three lectures per week (1 hour each)
  • One lab per week (2 hours)
  • Two tests (15% each)
  • Weekly coding labs (total 15%)
  • One test (20%)
  • Final exam (50%)


COMPSCI 230 is an Object Oriented Programming course taught in Java. If you passed ENGSCI233 you will definitely pass this course, although that is not to say that it is a cop-out. Java is a bit harder to learn than Python, but it is a very popular language and is used in a lot of back-end development. From experience Java makes learning other compiled languages such as C and C++ a lot easier than coming from a strict python background.

First half of the course is just learning the basics of OOP and Java. The course goes a lot slower than 233, but faster conceptually than MECHENG 270. I learnt from the very basics of Java up to more complicated OOP structures very easily as the course has weekly labs which makes it really easy to stay caught up, and I am not usually someone who is on top of their course work…

In the second half you will not be learning any new coding principles, but you learn about good software design and get to go further than just learning how to code in OOP style, but actually how to implement them in a good way. Some extra things that I enjoyed about 230 was that we got to design GUIs and coding was more end-user based compared to other coding in Engsci where it is more about producing a tool to help ourselves solve a problem — such as LU factorisation (ew). All in all, after this course I feel super comfortable with Object Oriented Principles and coding in Java. I recommend this course 100x over taking MECHENG 270.


  • The mid-semester test is on code-runner and was relatively straight forward
  • Stay on track with your lectures
  • Added bonus: Badges. 230 has this neat thing where if you get over 75% on the extra exercise on code runner you get 0.1%. This adds onto any percentage that you have lost in course work (not extra percentage)


STATS 210: Statistical Theory

Emily Hacket Pain


  • Three lectures per week (1 hour each)
  • One lab per week (2 hours)
  • Four assignments (5.5% each)
  • One test (10%)
  • Quizzes (total 8%)
  • Final exam (60%


STATS 210 is a great course to build and expand on the statistical theory you learned in the last module of ENGSCI 255. It builds on the knowledge from STATS 125 which as an engineering student you probably haven’t taken, however, the concepts from STATS 125 are easy enough to pick up even if you didn’t take statistics at school like myself. There are lots of places to go for additional help such as the daily help rooms (and Wikipedia). If you enjoyed stats at high school or are interested in taking learning more about stats then you will enjoy this paper.


  • Do the tutorials as the quizzes just ask you for the answers in the tutorials so are easy marks!
  • Staying alert is definitely tough during the two-hour lecture so I recommend bringing snacks or taking a walk during the 10-minute break halfway
  • Purchase the filled in coursebook (not the fill in the blanks one) – it makes it a lot easier to just listen and highlight during lectures and not have to frantically copy paragraphs of equations down (which I learned the hard way realising there were two copies…)


Sebastian Thomas

SOFTENG 281: Object Orientated Programming


  • Three/four lectures per week (1 hour each)
  • Two tests (20% each)
  • Four assignments (15% each)


SOFTENG 281 is a brand new course where you learn the fundamental principles of object-oriented programming and apply that in Java.

The first half was fun and easy. You get to meet your lecturer Nasser and learn about Java from the ground up. Seriously, except for the basic syntax you learn in ENGGEN 131, there is literally no requirement for you to understand the language before starting class (I’m looking at you ENGSCI 233!). The first things you get assigned are some short activities, which would be doing a bunch of mathematical tasks with if statements and adding your first commit to GitHub. Another activity you get to do is known as Blockly. This is like Scratch, where you have code placed as blocks and combine them in a way so that it all runs. The best part about these activities is that all you have to do is complete them and you get the points – they don’t have to be all correct!

Second half of the course is where things start to get a little confusing. You get introduced to sets, graph theory and test-driven development (TDD). It’s somewhat difficult to wrap your head around at first but Partha does a great job explaining it to you. The fact that the labs are optional and you only have four assignments over the entire semester makes it relatively easy to balance with the workload from other courses. Overall, 281 was an enjoyable course for me, and I highly recommend it!


  • Since this course is a required course for all ECSE students, they have limited seats for ENGSCIs. So, make sure you enrol early into it!
  • Although the labs are optional, I highly suggest that you make use of them during the second half. The TA’s are really nice people, and they sit down with you, talking you through the code to make sure you understand it
  • Don’t doze off during class – you’ll need that lecture content for your test. The assignments are nothing compared to the test, so make sure you study the content thoroughly before each one


Grace Little

ENGSCI 205: Special Topic


  • Two lectures per week (1 hour each)
  • One lab per week (2 hours)
  • Two tests (14% each)
  • Four labs (18% each)


As a new course this year, I wasn’t quite sure what to expect. However, this was a course I found really interesting and was a great option for me not knowing what electives I wanted to choose in second year. This course covered Geospatial Visualisation for the first half of the semester and Machine Learning for the second half. The first section introduced data formats and coordinate systems for GIS analysis in R, as well as other techniques to produce different visualisations. For example, in one lab task we modelled road networks in Auckland where we were able to use geospatial data to find and visualise the shortest route between any two locations. In other submissions, we modelled annual rainfall in California or plotted contour lines on aerial photographs. Although it was frustrating at times trying to plot things correctly, the end result was always satisfying and it was cool to see the variety of applications of the techniques we had learnt in class.

The second section focuses on Machine Learning and closely follows the Data Science process to participate in an in-class Kaggle competition, which judges the quality of your machine learning model to predict housing prices in Ames, Iowa. The first lab includes an introduction to scikit-learn, a module for Machine Learning in Python and some exploratory analysis of the Ames Housing dataset. This wasn’t overly difficult, especially as you most likely will have sat ENGSCI 233 prior, and will have some confidence in Python. The rest of the semester was spent exploring our dataset, short-listing models and fine-tuning these to produce a final model that could be used to predict future house prices.

The labs in this course proved crucial to attend as this is where you practice the majority of the techniques you need for your submissions. The tests incorporate more of the lecture material, but still reference techniques learnt in the lab, so it is really important you keep up with these. Overall, this course was super enjoyable and great in that you complete your assessments within the semester and don’t have to worry about an exam at the end of it!


  • Work on the lab tasks regularly so you can identify problems and prepare questions ahead of the weekly lab sessions
  • Ask questions on Piazza if you aren’t sure about the lecture content

Leave a Reply

Your email address will not be published. Required fields are marked *