Hi everyone,
The supplementary exam is next Monday (5th February).
If you have been granted a supplementary exam, you should have received an email last week containing your assigned time and location. If you have been granted a supp but haven't received an email, please contact us as soon as possible.
Please remember to bring a valid photo ID (student ID preferred) and aim to arrive early.
Good luck! 🍀
Hey everyone,
We've been hard at work marking the past few weeks, and results are now finalised! In a few days, you'll receive your final results by email. Depending on your situation you'll get one of these grades:
I hope you get the results that you've been aiming for! I'm also looking forward to reading your feedback, which we'll receive at about the same time :)
Hey everyone,
The final exam is tomorrow!
Before the exam:
During the exam:
You got this, good luck! 🎉🎉🎉
Hi everyone,
In total, 465 students completed the myExperience survey, which is a response rate of 59.7%. That's incredible for a course of this size, and I believe it's the most responses we've ever received for this course. A big thank you to everyone who responded 😊
Since we passed 58%, this means we'll reveal some details about three randomly chosen exam questions. These details will be posted on the forum shortly.
I hope your revision is going well! Make sure to take breaks every once in a while 😴
Hi everyone,
Just a reminder that there is a pre-exam consultation today from 1-3pm. You can come to the session in person at CSE Help, or you can join online via Blackboard Collaborate.
myExperience update:
The current response rate is 52.8%, which means our initial goal of 50% has been reached! As promised, we'll reveal the topic and mark value of a randomly chosen exam question tomorrow, but you can discover more about the exam if more of you complete the
survey
, so please do so ASAP, as the survey closes today!
Note:
Make sure you actually complete the survey so that it says
Completed
- some of you have started the survey but not completed it.
Hi everyone,
The sample exam solutions are now available, you can find them at the bottom of the sample exam page.
myExperience update:
The current response rate is 38.0%. If you haven't completed the
survey
, please do it soon - the survey closes on Thursday!
Hey everyone,
We've reached the end of term! Well done for all the hard work you put in these past 10 weeks.
Now you have just one thing in your way - the final exam! But before that...
Please fill in the myExperience survey ! The survey closes on Thursday 23rd November.
I'm very interested to hear what you thought about the course, as we've made quite a few changes this term in a continued effort to improve the maturity of the course. This was my first time lecturing a course, so I'm interested to hear what you think I can do to improve lecture delivery in case I teach this course again. Your tutors would also love to know what you thought of their teaching and how they can improve. Your feedback will be used to improve future iterations of the course. Thanks!
The response rate is currently sitting at 29.9% - thanks to everyone who has completed the survey so far. Starting from a response rate of 50% (and every 4% after), we'll reveal the topic and mark value of a randomly chosen exam question!
If you have the time, we especially appreciate specific feedback - for example, if you thought some quiz questions were unclear, letting us know which specific question(s) and why is much more valuable and actionable than saying "some quiz questions were unclear".
The final exam is on Monday 27th November.
There is detailed information about the final exam on this page , and I also talked about the exam in the final lecture - please check these out!
You can expect to receive an email with your exam time and room early next week.
The sample exam was released at the start of this week. The purpose of the sample is to show you how the real exam will be formatted, and also show you the style of questions that you could expect. We'll release the solutions at the start of next week, but please attempt the questions yourself before looking at the solutions!
We'll be running a few consultations next week to answer any lingering questions you have about the course content:
You can join these consultations online via Blackboard Collaborate. To join, go to the
Moodle page for this course
, click on the "Online Tutorials, Help Sessions and Consultations" link and then join the session.
Happy studying!
Hey everyone,
This week, we covered the last of the content for COMP2521. Now you can take a moment to reflect on what you've learned and what skills you've gained!
Here are the important updates for now:
Since we have finished covering all the content, we will only be running one lecture next week on Monday to review the course and talk about the final exam.
Next week, we'll be running a short demo exam in each of the in-person labs to let you try out the exam environment. If you're enrolled in an online class, you are welcome to attend any in-person lab. The demo exam will run during the first ~45 minutes of the lab, so if you want to see what the exam environment is like, please make sure to show up on time! Week 10 is the only time you'll get to try out the exam environment.
Tomorrow, you should expect to receive an email from the CSE exams unit with a form where you can indicate which exam session you would prefer to sit. If you have a strong preference for either session, please keep an eye on your email! If you have another exam on the same day, don't worry - you'll be automatically allocated to the session that doesn't clash.
Our tutors are currently working hard to complete the style marking for assignment 1. You can expect to get your style feedback by middle of next week.
I'm aware that automarking ran slowly during certain times, which caused some tests to time out when they otherwise wouldn't have. If you were affected by this, please don't worry - we'll rerun the tests several more times over the next week and manually update your mark if you pass more tests.
See you on Monday!
Hi everyone,
We're now on the home stretch! Only two more weeks to go.
Here are some updates:
CSESoc will be holding a COMP2521 revision session (date and time TBA). To prepare, they would like to know what parts of the course you would like to be covered and/or are struggling with the most. Please let them know by filling in this form . Thanks!
Assignment 1 has been automarked! More details will be posted on the forum soon.
This week, we learned about hash tables, how they are implemented, and how we can use them. This is an important topic not just for this course, but for your learning, as they are so commonplace in computer science. To help you get more familiar with them, next week's tutorial and lab exercise will be all about hash tables.
Note that in the future, you will only be using hash tables, not implementing them, but in this course, it's important to understand how they work, in particular different methods for resolving collisions, so please pay attention to that!
We have just two more topics to go! One of them is priority queues , which have been mentioned earlier in the course when talking about Dijkstra's algorithm and Prim's algorithm. We'll finally see what they are and we'll learn about a cool data structure for implementing them called a binary heap. The other topic is tries which are efficient data structures for storing and searching strings. We'll cover both of these next week. See you then!
Hey everyone,
We have now reached the end of week 7! Only a few more weeks to go!
Here is a recap and some important info:
Assignment 2 was released earlier this week. Make sure to watch the part of the lecture where I introduced it, and start working on it soon! Also make sure to check the changelog regularly for updates.
Next week, the final exam timetable (non-provisional) will be released. I've released some provisional information about the exam here . We'll talk more about the final exam in week 10, so please hold your questions about the exam until then.
This week, we finished our exploration of graphs by looking at some algorithms on directed and weighted graphs. The most important of these is Dijkstra's algorithm, as you'll need to use it in the assignment. However, you'll still get a chance to explore minimum spanning tree algorithms (and related problems) in the lab next week!
We only have a few topics left!
The most important topic remaining is
hash tables
, which we'll be covering next. So far, the most efficient data structure we've covered which supports general insertion, search and deletion of items is an AVL tree, which provides O(log n) performance in the worst case. Meanwhile, hash tables provide O(1) performance on average! Hash tables are used pretty much everywhere because of how efficient they are. So next week we'll see what they are, how they work, and how we can solve problems with them. See you then!
Hi everyone,
A few of our wonderful tutors have offered to run an extra help session tomorrow from 10am to 12pm in the CSE Help space. Feel free to come along if you need help with assignment 1!
Hey everyone,
We are now halfway through the term! Well done :D
There are no lectures or tutes next week, so you have more time to rest 😴, recharge and revise.
We will still be running
help sessions
throughout the week to help you with assignment 1.
I hope you've been making progress on assignment 1!
There have been a few updates to assignment 1 this week (see the changelog ):
This week, we learned about two important graph traversal methods: BFS and DFS. BFS lets us find the shortest path between two vertices (in an unweighted graph), while DFS can be implemented recursively, which allows for backtracking, and we saw the usefulness of backtracking when we solved graph problems on Wednesday.
In Week 7, we will continue our exploration of graphs and check out algorithms on directed and weighted graphs. See you then!
Hey everyone,
We've reached the end of week 4! Here's a recap of the week:
Assignment 1 was released, so you should start working on it soon! Please make sure to check the changelog regularly for important updates.
We learned about operations and methods that we can use to balance BSTs, and a special kind of BST called an AVL tree which is guaranteed to be height-balanced. With that, we have finally found a data structure that performs better than ordered arrays or linked lists!
Later in the course, we will discuss another data structure that provides even more efficient insertion, search and deletion on average, but for now, O(log n) will do :)
We started learning about graphs, which are general data structures which let us represent many scenarios in the real world where we have entities and relationships between pairs of entities.
Over the next few weeks, we will be covering various algorithms to solve different problems on graphs. It'll be fun!
At this point, lab01 and lab02 have been automarked, and lab01 and (for most of you) lab03 should have been handmarked. All of these marks can be found on your View Submissions page . The table at the top of the page lists the automarks, handmarks and late penalties for each lab. For example:
The fields ending with
_auto
are the automarks, the fields ending with
_subj
are the handmarks, and the fields ending with
_latepen
are the late penalties. Obviously, the lower the late penalty, the better. If a lab was automarked, you can see the details of the automarking by clicking the
View Marking
buttons in the table at the bottom of the page.
Please check this regularly (at least weekly) to make sure your marks are in the system. If something is wrong, let us know as soon as possible. The marks on this page are updated overnight, so if you got your lab handmarked on Tuesday, then you should be able to see the marks on the page by Wednesday.
Also, please remember that each lab that has a handmarking component must be handmarked within two weeks of the lab. If you're planning to show up in week 10 to get all your lab work handmarked, your tutor won't be able to enter your handmark for the labs in week 7 or earlier. If you still haven't gotten lab03 handmarked, make sure to do it by next week. lab04 can be handmarked in week 5 or 7.
Hi everyone,
Assignment 1 was released yesterday. Please watch the part of the lecture where I introduced the assignment, and get started on it soon!
PS - The tests for Task 4 have just been released. There is a separate download for them in the Task 4 section.
Hi everyone,
Just one last update for the public holiday!
We will actually be running two online classes tomorrow:
To join these classes, go to the
Moodle page
for this course, click on "Online Tutorials and Help Sessions" to open Blackboard Collaborate and then select the class.
Hi everyone,
We are now a third of the way through the course! Keep up the good work :D
Firstly, I just want to remind you that due to the public holiday tomorrow, we'll only be running one online tutorial from 4-7pm. I'd like to know how many students are planning to attend so we know how many tutors we'll need to help with marking - if you are planning to attend, please answer the poll on the forum . Thanks! The lecture will be running as normal.
Here's a recap of the week:
We introduced ADTs, and talked about why we use them and how they are defined in C. We also explored a few examples of ADTs - stacks 🥞, queues 🚶🚶🚶, and sets 🍱
Make sure you understand how to use an ADT! When a user uses an ADT, they must only access it through the functions in its interface. In the past, many students have tried to access the ADT struct directly and got a compilation error 😭
In this course, you can recognise ADTs by their filenames and function names - ADTs are defined in files whose names start with an uppercase letter, and the names of all their interface functions are in PascalCase, so if you have been given any of these, watch out. You'll get some practice with using ADTs in next week's lab!
We finally learned our first new data structure - binary search trees! 🥳
We introduced BSTs as a way to solve the issues of ordered arrays and linked lists, and then implemented some fundamental operations on BSTs, such as insertion and search.
You'll get plenty of practice with binary search trees next week. But if you want more practice, we have some extra exercises on the Practice Exercises page.
We aren't done with BSTs yet! Unfortunately, BSTs are only as efficient as how balanced they are, which depends on the order of inserted values. Next week we'll examine different methods to improve the balance of a BST, and we'll look at special kind of BST which always remains balanced, called an AVL tree.
Next week, we'll also start on a very important and applicable topic: graphs. We'll also release assignment 1 👻
See you soon!
Hey everyone,
As next Monday is a public holiday, a few things have been affected:
There is no officially scheduled lecture on Monday.
However, I will be delivering and streaming the lecture as normal, so you can watch the lecture live if you'd like to, otherwise you can watch the recording later.
There are no officially scheduled tutorials/labs on Monday.
However, we will still be running one online class on Monday from 4-7pm, so if you are enrolled in a Monday class, feel free to attend this class and get your week 3 lab marked here. The class will be held on Blackboard Collaborate, which you can access via Moodle. Otherwise, please consider attending a class
later in the week
. You are also allowed to go to a
help session
to get your week 3 lab marked.
The week 3 lab and quiz have been extended to 9am Tuesday (3rd October).
Hey everyone,
CSESoc is hosting a workshop for COMP2521 students this Thursday to cover some fundamental topics such as recursion, ADTs and debugging. If you would like to get some advice and extra practice on these topics, I encourage you to come along!
📅 Date: Week 3 Thursday 28th September
⏰ Time: 2-4pm
📍 Location: H13 Lawrence Theatre (Red Centre)
If you can't make it, the materials (including recordings and practice problems) will be uploaded to CSESoc's learning platform after the event :)
Hey everyone,
We've reached the end of week 2! Here's a recap of what we covered:
You got a lot of practice with recursion in this week's lab exercise, so hopefully you now have a better idea of how to use recursion, especially with linked lists. We will see more examples of recursion this week in the lectures.
I have heard that some students needed to use helper functions for tasks 1-5, and that's acceptable, but these tasks do not intend for you to use helper functions. So if you are one of these students, there may be some holes in your understanding of recursion, and I would recommend talking to your tutor or going to a help session or consult. There is no handmarking for the week 2 lab, so your tutors have a lot of time to help you this week. Remember - if you're struggling with something, you should get help with it sooner rather than later!
We learned about many sorting algorithms and analysed their time complexities and properties.
In week 3, you will put your knowledge of sorting algorithms to use in an interesting lab exercise ! There is no coding in this lab exercise - rather, you will be measuring the performance behaviour and characteristics of some mystery sorting algorithms and deducing what they are! You will also be allowed to work in pairs for this lab - I highly encourage you to find someone from your lab to work with so that you get to know more of your peers :)
Next week, we'll be discussing abstract data types and we'll start on our first new data structure - binary search trees! See you then!Hey everyone,
I hope you enjoyed your first week of term! This week, we covered some important topics that will be relevant in the rest of the term, so here's a recap:
We introduced recursion, which is a technique where we solve problems by solving smaller versions of the same problem, and showed how we can apply it to linked lists. This can be a tricky concept to wrap your head around at first, but don't worry, you'll get plenty of opportunity to practice recursion next week in the tutorial and lab exercise . I've also created walkthroughs of some of the functions we went through in the lecture, you can find them on the Lectures page. If you think you need more help understanding recursion, feel free to come to a help session or consult :)
We also covered the basics of analysing the efficiency of algorithms. We will be analysing many algorithms in future lectures, so you don't need to feel like you need to have mastered it now - just make sure you understand the analysis of linear search and binary search in the lecture.
We weren't able to livestream Monday's lecture, but Wednesday's lecture was fine. I didn't make any changes for the Wednesday lecture, so hopefully Monday's mishap was a one-off problem. I'll still put a backup Zoom link on the lectures page in case YouTube doesn't work.
In the lab exercise, you learned about sanitizers and how to read and interpret the error messages that they produce. Hopefully this will help you debug any errors that you encounter in future lab exercises and assignments! You also learned how to use the
make
command. It's important that you know how to use
make
because we will rarely compile by typing out compilation commands - we'll usually just use
make
.
In terms of coursework, remember that lab01 and quiz 1 are both due
tomorrow 12pm
.
Next week, we'll be discussing sorting algorithms, which will give us a good chance to practice our algorithm analysis skills.
See you on Monday!
Hey everyone,
The lecture on Monday couldn't be livestreamed to YouTube due to some error which didn't occur during our testing. Sorry to those who were waiting in the YouTube livestream. It appears to be an intermittent issue, because the livestream worked when I tested it in the same theatre about an hour later.
I'm determined to get livestreams working though! We're not quite sure what the issue is yet, but we'll try to figure it out the next few days. Today, I'll put up both the YouTube link and a link to a Zoom meeting as backup in case the YouTube stream doesn't work. The links will be on the Lectures page.
Hi everyone,
This is just a reminder that help sessions start this week!
The first help session is today from 12-1pm. See the schedule for the other times.
They will be held in the newly allocated space called CSE Help (walk into the K17 building and it'll be right there). It's best to bring your own laptop, as there are very few computers there.
This is a great opportunity to get help with revision topics such as pointers and linked lists if you aren't completely comfortable with them yet. You can also get help with this week's lab.
Remember: if you have any confusion or misunderstandings it's best to try to get them resolved as soon as possible - if you are still confused about pointers/linked lists in the middle of term or later, it'll be harder to help, as many topics later in this course use them.
See you there!
Hi everyone,
Welcome to COMP2521 23T3! 🥳
Firstly, I'd like to congratulate all of you for getting through your first few computer science courses . I imagine that for many of you, it was your first time programming, and it wasn't easy. But your hard work paid off, and here you are now!
So this course is called Data Structures and Algorithms. What is it about?
In this course, we're going to be exploring the various ways that computers organise and process data to solve different problems. On top of that, we will be examining how well these different methods
scale
. Computers are extremely fast, so our simple COMP1511/COMP1911-informed algorithm may work well for 100 items, but what if there are millions or billions of items? How feasible will it be then? That's the question we will keep asking throughout this course.
What have you heard about COMP2521? Have you heard that it's easy? Maybe. Have you heard that it's hard? More likely. But no matter who you've talked to, I'm sure that you've heard that this is one of the most important courses you'll do in your growth as not only a programmer, but as a computer scientist. I tend to agree. I also believe that you'll get out of this course what you put in - if you put a lot of effort into this course, you're bound to leave a much more knowledgeable and resourceful programmer.
I have been involved with COMP2521 for a long time, as both a tutor and an admin. However, this is my first time lecturing COMP2521, and my first time lecturing a course ever, so I am low-key terrified. If you are afraid of this course, don't worry, the person at the front of the theatre might be more scared than you! We'll get through this together.
Working with me is our
overlord
course convenor John Shepherd, our course admin Ethan Brown, and a team of 37 wonderful tutors. I've worked with almost all of our tutors in the past, so I know how awesome they are and I'm excited for them to teach you this term.
I look forward to seeing you all on Monday!