University Subjects

COMP10002: Foundations of Algorithms

COMP10002: Foundations of Algorithms

University
University of Melbourne
Subject Link
View Subject

Subject Reviews

Tau

2 years ago

Assessment
- 2 assignments (15% each)
- 1 Mid Semester Test (10%)
- Exam (60%)
Lecturers
Shaanan Cohney & Jianzhong Qi
Past Exams Available
Yes, sample exam with solutions, a handful of others without.
Rating
4.5 out of 5
Textbook Recommendation
Programming, Problem Solving & Abstraction with C by Alistair Moffat. Excellent textbook imo, definitely worth reading.
Workload
- 3 one-hour lectures
- 1 two-hour workshop
Year & Semester Of Completion
2021 Semester 1
Your Mark / Grade
H1

Did you find this review helpful?

kiwikoala

5 years ago

Assessment
15% Assment 1, C programming project. Implement +, * and ^ operators that work over 100 digit numbers. There was a template that covered the main loop, you just had to fill in the logic. Around 350 lines.

10% Mid semester exam. Task was to write 3 functions of ascending difficulty. Being comfortable with basic C syntax and language should be enough to score decently, after that marks will be lost based on how lucky/skillful you are at handwriting code.

15% Assessment 2, No template, analyse the sentence fed using data that was also fed in. The open ended bonus mark (can't get higher than 15%) could take up a lot of time if you fully went for it. I just implemented what Jianzhong hinted and that gave me the mark. I had 400 lines.

60% Exam. Quite fair, around 20 marks on more theoretical based questions with the rest (40 marks) on writing functions and code that are testing C language skills or algorithms taught. There is always a tough last question apparently but this semesters was straightforward and the difficulty was just implementing the logic of the question rather than any conceptual "aha"
Comments
The first 5 weeks of learning C was almost exactly like learning the equivalent construct from Python, a cruise if you were half decent at Python. Then it will spike in difficulty if you aren't careful when the heavier content such as pointers and algorithms are covered.

2 projects really depended on your programming skill could stretch from 5 (literal hackerman) - (when you give up) hours. I crunched as much of the specification as I could in 1 day (gave up cause I hit a bug or an design problem), completed it (fixed the problem but not neatly) in another day and fine tuned/cleaned the code when I felt like it until the due date. It can be done in a weekend.
Just stay up to date with the content in class because it builds on top of each other.

People did pretty decently in assignments, on average ~12/15, marked quite leniently according to tutor. Mid sem average was 6.5/10.

In this subject every mark is 1%. There are half marks though.

Common feedback was that the pace is much too slow at the start and too fast for the harder algorithmic/theoretical content. Otherwise I had fun writing code in an interesting language such as C.

To score well you need to find time to do exercises and play with the content taught in class. This is like math.

I did about 8/14 chapters of the textbook which covered most of basic stuff learnt in Python in about 2/3 weeks in the Summer. This made my life a lot easier and gave me more time to be settled into C and allowed me to cruise the first 5 and lesser so for the next 3 after that. I really recommend people dive into the language taught for any programming based subject you pick up.

The tutorials weren't very beneficial if had done exercises already, but I attended them all and the tutor and helper were very knowledgeable and helped deal with everyone's bugs and questions about C's nuances or lecture content. Alex Zable had Kahoots which was a blast!
NOTE: I didn't do COMP10001.
Lectopia Enabled
Yes, with screen capture.
Lecturer(s)
Jianzhong Qi, I like him. His jokes made me laugh even though they're terrible. His accent wasn't a problem for me personally but if you are really concerned take this class in semester 2. He was very knowledgeable and had an uncanny ability to understand the point of questions his students asked him when they made no sense to me.
Past Exams Available
No, 2 sample exams were provided.
Rating
3.5+ depending on how much you like programming = 5/5
Textbook Recommendation
Alistar Moffat's book, Programming, Problem Solving and Abstraction with C, it's a stripped down textbook of C designed for this subject with some algorithms at the end. Not necessary but is quite handy as it is the most concise C language textbook out there for this subject.
Workload
3x 1 hour lectures, 2 hour tute (1st half mini lecture on lecture of the week/last week, 2nd half working on assigned exercises or assignment with tutor + helper on hand)
Year & Semester Of Completion
2018 Semester 1
Your Mark / Grade
High H1

Did you find this review helpful?

e^1

9 years ago

Assessment
  • 10% mid-semester test
  • 15% x 2 programming assignments
  • 60% final written examination
Comments
Contrary to the other reviewers of this subject, I found this subject unexciting and dull for the first initial weeks. I was more interested in the algorithms he had to teach, but as an introductory course it is understandable that a lower level programming language (ie. C, and specifically ANSI C) would also be taught in order to get a glimpse of the process behind computers. So if you are new to these kinds of things, then you will probably have an intriguing time.

Alistair Moffat, as you might have heard is a very enthusiastic, engaging and (tries to) humorous lecturer. If you needed an answer from him via e-mail, he would usually respond within less an hour if he wasn't busy. Sadly, I did not bother to come to his lectures after the third week because I found the introductory C content to be in some way, like teaching Python again (from COMP10001). In learning C, you learn its programming constructs, including arrays and pointers. Certain problem solving techniques (divide and conquer, generate and test) are also revised in this subject. I can't say much about workshops either since I stopped attending them from the second week, but surprisingly I found Alistair's textbook to be immensely useful. Initially I was sceptical about buying a textbook which could have been made free (if he gets so little profit from it, and if the content can be found anywhere on the internet), but the book contained almost everything that you need to know for this subject. When I mean the textbook does not cover everything, this includes pattern searching algorithms, like the Knuth-Morris-Pratt string search algorithm and the Boyer-Moore-Horspool algorithm; watch the lectures then. Otherwise, reading its pages alone allowed me to keep up with the content.

Computing algorithms--as you would expect--is the meat of this subject. After all, Alistair's motto is "Algorithms are fun!". Despite this, I found some of his explanations to be unclear (possibly because I was behind) even if I used the textbook. As a supplement I would use other websites to learn how they worked. If it helps, here are the websites that I used:

  • HackerRank: A competitive programming contest website. Aside from that there were exercises about algorithms, including Quicksort, insertion sort and some other mini practice exercises, including an exercise about the running time of an algorithm.
  • Some other PDF lecture slides on the KMP algorithm: The Comic Sans font makes it seem silly, right? That is why it was useful in understanding the KMP algorithm. Some nice pictures help too :D
  • The KMP algorithm in my own words: This was also useful in observing the process of the KMP algorithm.
  • Plain English explanation of Big O: Thought it was a good basic explanation behind the Big-O notation. Although I thought Alistair explained it in a clear way.
  • Boyer Moore Algorithm Understanding and Example?: Thought the second answer to this Stackoverflow question provided a clear explanation about how the Boyer-Moore algorithm worked (not the BMH algorithm! The BMH algorithm is actually a simplified version of the Boyer-Moore algorithm so be aware of that). Alistair's lectures slides about the BMH algorithm, combined with this webpage also served useful in understanding it.
  • I also used "online judges" (Google it) for mergesort and KMP problems as further practice.
  • If you want more practice websites, I found this top Quora answer to be helpful.
With this clarification, I found to appreciate algorithms and what Alistair really meant (although he should change his motto, how long has he held that for?). It gave computing more than just mere "instruction-telling" to a computer expressed as a programming language.

Mid-semester test:
As the name says, it isn't worth much (10%) but you should do well if you've have studied up to this point. For us, I believed we had ours in week 5 or 6. Topics covered included using basic programming constructs of C (iteration statements, pointers, arrays, control statements etc.) as well as the Big-O notation. I didn't particularly do well in this but it wasn't hard either.

Assignments and exam:
The assignments were fairly interesting (not as fun as COMP10001 was imo). The first assignment involved finding the relevance of a text file based on a query, like a Google search for instance. Simple use of algorithms were encouraged, and so was more of a C programming exercise than anything else. The second was creating a program which could hold a binary search tree, and I found this to be more slightly "algorithmic". These assignments I believe will help you practise on your C language, although I wished the assignments involved the use of more complex algorithmic approaches to solve a problem. Moreover, I found these assignments to be a bit straightforward and thus lacking in creativity. When I say this, I compare them to the COMP10001's Daifugo assignment for example.

Now, the exams. Although there was only a sample exam, doing exercises in the textbook or gaining programming proficiency in some other ways sufficed to prepare you for most of it. As Alistair had mentioned, there would be a few last questions which very few could answer, so this shouldn't surprise you too much when you go to your actual exam. Otherwise, the rest seemed fair and reasonable.

Note that I have rated this subject 3/5, and could have rated it lower. The main reason for this being the appreciation of algorithms that I found through the semester. I wished the subject had provided a greater density towards teaching algorithms, but as I have mentioned teaching a language like C would help those pursuing computing majors into learning C++, as well as getting a closer grip behind computers etc. Regardless, I had some initial familiarity with C# and a tiny bit of C before the start of this subject.


Fun.stuff.goes.here():
Thought bubble-sort was bad? Then you might not have heard of Bozo sort...
Bozo Sort
Lectopia Enabled
Yes.
Lecturer(s)
Alistair Moffat.
Past Exams Available
No past exams, just a sample exam.
Rating
3/5
Textbook Recommendation
Moffat, A. (2012). Programming, Problem Solving, and Abstraction with C, Revised Edition. You can buy either the hardcopy or e-book version of it (e-book is somewhat cheaper).
Workload
3 x 1-hour lectures and 1 x 2-hour workshop per week.
Year & Semester Of Completion
Semster 2, 2014
Your Mark / Grade
H2B

Did you find this review helpful?

silverpixeli

9 years ago

Assessment
  • 10% Mid Semester test in week 5 or 6, pretty fast make sure you brush up on handwriting code!
  • 2 x 15% assignment, you're given 2-3 weeks of time for each and they took me about 15 hours each to complete (to full marks standard)
  • 60% 2h exam in exam period.
Comments

Overall, an awesome subject providing a thorough intro to lower level programming (with C) and into algorithmic thinking. Topic covered include:
  • Writing, compiling and running C programs and all the basic control/data structures associated with learning C from scratch
  • Advanced C stuff like dynamic memory allocation and binary representation of some of the data types
  • Algorithms for searching, sorting stuff, string matching and a few more, with an emphasis on asymptotic costs (Big-Oh stuff)
  • Advanced C structures like Linked Lists, Binary Search Trees and Priority Queues
  • General problem-solving approaches and when they are appropriate
The assignments were challenging and fun, with about 15 hours work needed to complete each to a high standard, possibly more or less depending on how many times you get stuck on an elusive bug. If you can understand all the programs shown in the lectures, you'll have no problem nutting out the assignments over a weekend. Remember, 3 hours debugging saves 15 minutes of planning, so avoid making rough program sketches on paper before you start coding ;)

The mid semester test was a killer, nobody got full marks this semester because it's so easy to screw something up when writing it by hand. Use a pencil and remember to bring an eraser (oops) to save years of re-writing lines. If you've done the exercises up to date you'll have no trouble with the actual content of the test, it's just the writing.

The lectures were awesome and Alistair is really passionate about what he's teaching, and it shows through the care he puts into his explanations. He is prompt to respond to emails and always clear about what is required of students.
We had Ben Rubinstein for 3 lectures near the start of the semester and he seemed alright too.

The workshops were okay, the demonstrators/tutors are really experienced IT students and are more than capable of helping you set anything up or sort out any bugs you're having. I did the exercises/reading of the book at home so I didn't really need the workshop time, but it's a good 2 hour practice block if you don't have the time outside of uni. I found the workshops more interesting because when nobody needed help, me and a few others would just talk about cool computing research stuff with, or get course advice from the demonstrators.

And finally, the exam was fair. Alistair gives a list of things to study if we wanted a good/great mark, and after spending a few days before the exam going over these concepts I was rewarded by an accessible exam that was clear with no surprises. He says he always includes a few marks/60 that are supposed to be only achievable by 2-3 of the 100 or so students. In the sample this was a really tough question out of nowhere, but in the exam, everything was well balanced and there was enough time to have a good think about the hard ones.

Really great subject overall, so glad I decided to take it!
Lecturer(s)
Alistair Moffat (or Ben Rubinstein if you take it in semester 1)
Past Exams Available
None, but a sample exam and solutions is provided. PM me if you want the 2014 sample exam too, idk how much it changes from year to year though.
Rating
5 Out of 5
Textbook Recommendation
Programming, Problem Solving and Abstraction with C Textbook written by Alistair, I high recommend!
Workload
3 x 1h Lecture + 1 x 2h practical per week. Worth also spending a few hours on exercises if there isn't an assignment to do.
Year & Semester Of Completion
2014 Semester 2
Your Mark / Grade
94 (H1)

Did you find this review helpful?

Badoa

10 years ago

Assessment
Two major assignments, each worth 15% of the overall mark, and one mid-semester test worth 10%. The assignments are individual programming projects taking ~30 hours of work each to get full marks.
Comments
The content was so rich and in-depth, and explained so thoroughly and in detail that it was always interesting. Learning the C language for the first half-or-so of the semester with its direct application to algorithms was at the perfect pace for covering fundamentals, with later weeks of the semester being nearly entirely focused on the study of algorithms. Alistair is an excellent lecturer, and his explanations really stick, especially those written in the book. That was one of the best parts of this course, if you needed to follow up on something in the lecture, just read that topic in the book. Or pre-read and then solidify it in the lecture. The concepts proved to be difficult to master, especially when applying them in the midsem test or exam, but definitely do-able.

The projects during the semester were a lot of fun with extremely well designed specifications. The first was to modify a pre-written integer calculator program. This involved changing the data type from a basic integer to a more complex data structure you design yourself to circumvent the limitations of an integer data type. The second was to develop from scratch a program that takes electoral candidate and vote data as input, and perform the preferential voting process to elect a winner.
Much of the applied theory is about algorithm performance and comparison, being time, space, and a lot of working with big-O notation. The most popular data structures are covered in detail, and examined is also binary representation of data in memory.
Lectopia Enabled
Yes, with screen capture
Lecturer(s)
Alistair Moffat
Past Exams Available
No. One sample exam provided at the end of the semester, with answers provided in swotvac.
Rating
4.5 Out of 5
Textbook Recommendation
Programming, Problem Solving, and Abstraction with C written by the lecturer, HIGHLY recommended.
Workload
3x 1 hour lectures, 1x 2 hour tute
Year & Semester Of Completion
2013 semester 2
Your Mark / Grade
H1

Did you find this review helpful?

Australia Treasury

Help shape the future for all Australians

Want to make an impact to your local community and across Australia? Join Treasury, the Government’s lead economic advisor and be involved in developing policies and providing well informed, innovative and sound advice on key issues that impact Australians.

Find out more