COMP6721 - Informal Methods

4 minute read medium

Difficulty: 4/10 · Time Commitment: 6/10 · Enjoyability: 10/10 · Mark: 94

Summary

I did COMP6721 (Informal Methods) in Term 2 2023. The subject is a great introduction to formal verification, focusing on high level concepts and their practical applications and providing a solid foundation for future mathematically heavy verification courses. Overall, the subject has a moderate workload and great potential for high marks when consistent effort is made to stay up-to-date and revise the content throughout the term. I would highly recommend this course to anyone who wants write better code and be more aware of the fundamental logic of basic control structures.

Positives

  • Passionate lecturer (Carroll) who delivers content clearly and understands his field really well
  • Interesting content with becomes progressively more complex throughout the term
  • The course highly rewards consistent effort throughout the term and the assessment structure that helps consolidate lecture content and is very relevant to the course itself

Negatives

  • Each week weighs heavily towards the overall course mark meaning missing a week can set you back significantly
  • Some content is fast paced towards the end of the term (this is a positive because it’s interesting but a negative if you don’t have a solid grasp of the theory as it can be quite difficult to understand) so make sure to keep up weekly

In-depth

Structure

When I took the course, it consisted of two weekly lectures which totalled to 3 hours of lectures. There was an additional tutorial, however, the main purpose was to consolidate lecture theory rather than teach extra content. The assessments consisted of weekly quizzes on the lecture content, weekly assignments which consisted of multiple choice questions, and participation. There was no final exam and the course did a great job of maintaining consistent weekly workload requirements throughout the term.

Lectures and Tutorials

Lectures in this course are important to attend. They are all taught by Carroll and roughly follow his textbook on the topic. They start off really basic in the first few weeks but eventually apply that basic content to solve complex algorithmic problems elegantly. I highly recommend taking detailed notes of the content to look back on when doing the assignment. Tutorials consolidated lecture content, primarily consisting of small exercises and discussions on the lectures of the week. I found it more helpful to skim through the tutorial recordings and do the questions from the textbook to focus on harder content rather than attending tutorials. However, both lectures and tutorials are well thought out in this course and I recommend attending them when possible.

Weekly Quizzes

The course consists of weekly multiple choice quizzes that consist of questions based around the content from the previous week. If you understand and revise the lecture content, they are mostly straightforward and you get two attempts which makes it easy to score high marks if you are up-to-date.

Assignment

The entire term has one big assignment and each week is one segment of this that slowly builds up to a really elegant final solution. The assignment walks you through everything you need, laying out a set of premises and asking you what the conclusion would be. For example, some assignment questions give you a template for a program to achieve a specific purpose and ask you what the loop guard or invariant is that results in it achieving its purpose.

Overall, the assignment is quite complex. It requires deep understanding of the theory and also the ability to apply it to difficult problems. However, if you allocate a few hours over several days of the week, you can attempt the questions and also redo them to double check they work. Additionally, programmatically checking your code is very helpful (ie. writing Python scripts and ensuring your solution correctly converts different inputs to the correct outputs).

Participation

This aspect of the course is very easy if you have been interacting with the course. You need to submit proof of work you have done during the week outside of the assessments. I simply completed the set of exercises from the textbook relevant to each week and submitted my working out. In some difficult weeks I did additional work beyond this.

Advice

  1. Stay on top of lectures. To get the most out of this course, it is essential to watch lectures. The slides are useful but the thought process in solving each problem is what makes the content really useful. I would recommend not falling more than half a week behind and also ensuring that you attend/watch every lecture.
  2. Ask for help when you’re stuck. It’s very obvious advice but sometimes solutions to complex problems become too simple and it can be hard to understand how the solution was reached. In this case, ask questions and don’t let the ambiguity compound into bigger problems.
  3. Don’t leave the weekly quiz until the end of the week. You get two attempts at each quiz. The first attempt is a great way to know if you need to revise more content. By doing your first attempt early in the week, you can use the remainder of the week to revise any content you’re struggling with before your second attempt.

Updated:

Comments