software: a semester two review (feat. chiikawa)

Hello everyone ❀⸜(˶´ ˘ `˶)⸝❀

Let us continue on our journey through part 2 software, where today’s topic is semester two courses and (as always) some general tips and advice on surviving the semester (ദ്ദി ༎ຶ‿༎ຶ ).

With the year ending soon, I thought it would be the most appropriate time to share my thoughts on semester two, and hopefully, that will be useful for you to gauge whether or not you think this specialisation is right for you :D!

Looking back, after completing semester 1, semester 2 is definitely more challenging – although not really in the sense of course content, but instead managing your time well. This is because semester two has fewer exam courses, as neither ENGGEN204 nor SOFTENG206 has exams. This sounds quite good, BUT the semesters get a lot more busy with assignments and projects.

Anyway, let’s dive deeper into each course, where I will use one of my comfort characters, Chiikawa, to represent my general thoughts on them:

SOFTENG 206: Software Engineering Design

This course was also basically an extension of one of the core courses in semester one, SOFTENG281, where we use Java, JavaFX, and Open AI API(ChatGPT) to build a project.

As the name suggests, this course primarily focuses on software design, where there is less coursework to learn but more focus on a semester-long project (so there is no exam). This year, the project was themed to make a private investigator training tool 🕵️🔍 (similar to Cluedo). Previous year’s projects included escape rooms, drawing games, etc.

This course has 3 parts: alpha, beta, and final. The alpha is done individually, and then you are expected to complete the beta and final in a group of 3 🧑‍💻🧑‍💻🧑‍💻. However, beware that you have no choice in your teammates, and they are assigned randomly, so try to get along with them and communicate well.

This course is definitely one of the most fun courses of the year, as you get to design a game from scratch and have a lot of creative freedom in the UI design and features. 🧑‍🎨🖼️ For this reason, it is probably my favourite course of this year.

General tips:

  • Learn the course content well initially – I feel like one of the most challenging parts of the project was getting to understand the starting code given and how all the files work together🤔. Similarly to 281, there are few lectures, and most course content is expected to be learned in your own time🧠. Especially when it comes to JavaFX, ensure you have the basics sorted out before starting your project. Making mistakes in the lab activities is better than your actual project repository.
  • For this course, I would actually encourage the use of ChatGPT. External sources are allowed, so make your life easier by using ChatGPT or Copilot to help handle simple and mundane tasks. However, beware that LLMs can often make mistakes.
  • Communicate well with your teammates. It’s important to note that the project is marked through a one-off presentation (one for alpha, one for beta, and one for final). If everyone is well involved in the project, when you present your game, everyone will have a good idea of what each person did and all the game’s functionalities. Communicating with your team about specific ideas will also help in making design decisions 🧑‍🎨🎨. Furthermore, there will be a teammate feedback form after each part of the project that can weigh the grade depending on a team member’s contribution, so it is good to ensure you and your teammates are all pulling your own weight.

SOFTENG 284: Data Structures and Algorithms

This course made my brain hurt😿🧠 but also strangely fulfilled🤓☝️. If you like a challenge, finding patterns, and optimising code, this course is probably for you! 🏃💨💨💨

It is undoubtedly one of the most challenging courses of the year – as an extension of SOFTENG282. The first half of the course focuses on running time and asymptotic (big O) notation, which is not easy to grasp if this is your first exposure to it. The course also teaches sorting (insertion/selection/merge) and, search algorithms(e.g., Hash, DFS, BFS) and various data structures (e.g., hash tables, maps, queues, arrays).

This course definitely challenged me, but at the same time, it is also one of the more rewarding courses as it is very sought after and valued in industry.🤝🤝🤝

General tips:

  • Stay on top of assignments. For this course, there are 3.5% weekly assignments for you to do, so you really don’t want to be the person who leaves it until the day before it’s due. To save your sanity, get them done as soon as possible. This way, you can also clarify anything with lecturers/friends and fill in any knowledge gaps well beforehand. 👍👍
  • Try the assignments before using ChatGPT. I always say this, especially if you have read my semester one blog post, although reliance on ChatGPT can take away the learning opportunity to learn the content well. Sure, ChatGPT can help, but you should use it more as a tool to help explain concepts rather than letting it complete your assignments.
  • Have a study group/friends to help. More likely than not, your friends will understand anything you did not quite catch in the lectures. They are also super helpful for assignments, where they can steer you in the right direction or confirm that your answers are correct.
  • Ask questions if you are confused. Honestly, I wish I did this more. When you need clarification about specific concepts to save time, sometimes it’s easier to ask someone for help, whether that be on Ed Discussion or to your friends and peers (as I mentioned above).
  • The assessments are multichoice, which is a blessing and a curse because it means there are no partial marks, but you have a 1 in 4 chance of choosing a correct answer if you don’t know 🤓.

ENGGEN204: Professional Skills and Communications

This is a general engineering course that all engineering students have to take. Topics range from teamwork to communication, ethics, etc. It is pretty much an extension of 140 (engineering and society) from part 1, so if you enjoyed that and group projects this might be for you! 🧑🤝🧑

I may be guilty of this too, but many people tend to put this course on the back burner. Although, I think it is an important course as it teaches us to collaborate, handle conflict, and more transferable skills that we will need in the workplace 🙂.

The course is comprised of a few large group assignments that you complete in teams of 8 (your tutorial group, which will remain the same for the rest of the semester). Firstly there is a video assignment, where you learn how to explain engineering concepts to people that do not have an engineering background and then a presentation/debate about a topic (e.g. my team went against “there is no such thing as safe nuclear energy this year.” The final assignment is a report – which I have yet to start so I can’t really elaborate much more on it.

This course also has no exam, which is a significant plus, but beware that this means the course has many more assignments and quizzes throughout the semester.

General tips:

  • Join the same tutorial as your friends – Despite groups being randomly assigned, if you have a group of friends you think are relatively reliable and hard-working, you can try and test your luck by enrolling in the same tutorial group.
  • Get along with your teammates – Even if you are placed in a group with strangers, you should still try your best to get to know them!😊 I think part of the reason why my group was pretty successful throughout the semester is because we could share some laughs and joke around
  • It’s what you make of it – honestly, 204 can be one of the most fun courses of the year, so long as you get along with your team members and all put in a decent effort. So, the course is what you make of it! Try your best to break out of your comfort zone and be open to meeting new people 😎
  • Beware of the quizzes – there are about 4 quizzes in the course, which are open-book, that do make up a pretty significant chunk of your grade (~21%), so make sure to tune in on lectures before each quiz and have some notes that you can easily ctrl F to find.
  • Ed-Discussion is your friend – This is a course shared by your whole engineering cohort, so it is often pretty helpful to look at what your peers are asking on Ed Discussion regarding course content or assignments

SOFTENG283: Software Quality Assurance

I think that this course overall is pretty chill 😎👍. The first half covers requirements engineering, working with clients, and software development methodologies like Agile 🏃💨. The second half of the course covers testing with JUnit (I am not expanding on too much since I am in the midst of this part of the course).

This is also an important course, as development frameworks like Agile and testing procedures taught in this course are often used in software development companies and testing practices, so it is valuable to go beyond reading lecture slides and actually understand the material. 🤓🤝🤓

General tips:

  • Assignment advice:
    • Start the assignments ASAP! I remember for the first assignment, there were about 3-4 weeks to do it (it was a large ~20% report), but most groups left it to the last week to finish. To save you from stress, I suggest dividing the work among your teammates (3-4 per group) and starting whenever possible.
    • Get together with some good friends to be in a group with. Unlike 206, you can choose who your teammates are, so it is a good idea to choose people you can rely on – like your friends – if you want a good grade.
  • Utilise the readings and lecture slides – Most content is pretty intuitive and can be searched on the lecture slides or are topics in the readings. If you are familiar with all that content, you should be ready for any test or exam.
  • Do the labs – I am also guilty of missing many labs, but especially for the second half of the course, you should go to the labs despite being optional as they are examinable, AND you can ask questions and get help from the tutors or lecturers in real-time.
  • There is a 50% invigilated exam, so it is best to know the content well before the exam, as you will not get access to online tools or resources as you do on the test.

My top 3 non-academic related advise:

As I did with my last semester review, I thought some non-academic advice would also help anyone transitioning to part 2 next year!

  1. Get out of your comfort zone and meet new people. Especially this semester, where there is lots of group work, you should branch out and actively seek to form new connections. In any engineering degree, the ability to network and communicate well is super helpful for your future career and often makes you stand out against others.
  2. Do some side-quests ⚔️ – there are so many cool and fun opportunities at university, whether it be club events, hackathons, or performances (like the engineering revue). Make sure to utilise these opportunities to learn something new, meet new people, and have fun! I promise you won’t regret it😉.
  3. Have fun and breathe 😌 – I wanted to keep this point from last time as I think it is one of the most important ones to remember. Having something you enjoy away from academics is very important for your well-being. Semesters, especially this one, will get very busy and can feel overwhelming, so be kind to yourself.

While this semester isn’t over for me yet, I hope this was useful and gave you more idea of what part 2 of software engineering looks like!

See you in my next (and final 😿) post!

Kimberley ( ദ്ദി ˙ᗜ˙ )

Leave a Reply

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