COMP2041 - Software Construction: Techniques and Tools
Difficulty: 4/10 · Time Commitment: 6/10 · Enjoyability: 9/10 · Mark: 90
I did COMP2041 (Software Construction: Techniques and Tools) in Term 2 2022. This is definitely the best subject I have taken in computer science so far and teaches vital skills related to scripting. The first half of the course focuses on scripting in Bash whereas the second half is strongly focused on Python. Everything learnt in the course is integrated really well and has vast real-world applications. This is apparent in the assignments which are completely focused on designing real-world tools through scripting, making this course both extremely useful and fun.
- Really applicable to real-life scripting
- Teaches two extremely useful scripting languages: Bash and Python
- Fun and engaging assignments
- Low workload labs complemented with high workload assignments
- A bit of a steep learning curve from a first year course but it’s much better than other second year subjects in this regard
COMP2041 consists of weekly labs, two assignments, and a final exam - very similar in structure to most first year computer science courses. The labs and assignments have autotests and there is a lot of support in the form of tutorials, ed forum, and the general format of the coding exercises. The labs are typically a low workload and most can definitely be finished in the 2 hour lab time allocated each week. However, assignments are high workload and getting a good mark does require significant effort compared to any first year course.
Lectures and Tutorials
Personally, I found that reading lecture slides was much more time effective than watching lectures completely. The lectures aren’t too dense and skimming to find important sections is quick and easy making learning fun and simple. Additionally, there is a lot of content that is applicable in different parts of the course such as regular expressions which are taught at the start of the course but are useful all the way until the end. For concepts like this, it is handy to have lecture slides downloaded for quick reference or to build a cheatsheet every time a new concept is introduced.
In terms of tutorials, it is really interesting to go to tutorials in the first few weeks as Bash has a steep learning curve and there are some ambiguities in the first few weeks. However, once the course shifts to Python there is almost no reason to go to tutorials if you already have some Python coding experience. Otherwise, it could be useful to tune into the lab sections but skip tutorials as it saves a lot of time and doesn’t compromise your learning.
The assignments in this course are really cool - when I did the course the first assignment was to remake a simplified version of Git using Bash, and the second one was to remake a basic version of sed with Python. These assignments seemed really cool and not only helped me learn scripting, but also gave me a deeper understanding of how Git and sed work.
Both assignments in this course were split into 3-4 stages when I did the course, and what I found was that there wasn’t a big increase in difficulty between stages. This means that the first stage can be a hurdle to doing well but after setting everything up, fully completing assignments is definitely possible. That being said, I found the assignments in this course to take much longer than any first year course and I was not able to finish either of them simply because they took too long and I did not have enough time to fully complete them. THe best way to overcome this is to start early and work on the assignments a bit everyday.
The final exam for this course is a mix of Bash and Python questions, each with some sort of autotest and likely some sort of exam hurdle. Apart from the last few questions, the exam is not ordered by difficulty and does not favour either Bash or Python. Because of this, it is a good idea to be comfortable with both as some consecutive questions even ask to implement the same thing in each language.
The exam has a much lower difficulty curve than subjects like COMP1511 and COMP1521. Those subjects typically have much harder questions towards the end of the exam which are almost unsolvable for most people within the time constraints. However, in COMP2041 the final exam carries the expectation of getting a high mark to do well in the course and it’s a good idea to revise well for it!
- Have fun and learn what you enjoy. This is a fun and useful course so try to find things in the course that look interesting and spend more time on them beyond the course.
- Start assignments early. As mentioned before, assignments are really long in this course so starting early is the best way to make sure you can put in your best effort.
- Ask questions in tutorials. Tutorials for this course cover mostly topics that are difficult to understand and it’s really easy to ask specific questions in the tutorials to properly understand what is being taught. When I first learnt Bash in this course, it was incredibly difficult and I didn’t understand how to do any of the lab questions in the first few weeks. However, by asking questions consistently, I became much more confident working in Bash!