## Exam finished

2022-12-06 12:00:00

The exam is now finished (unless you have approved extra time).

As an important reminder:

Please do not discuss the exam for at least 24-hours after the conclusion. Recall that just because the exam is over for you, it does not mean that the exam is over for everyone.

Further submissions will no longer be accepted.

Congratulations everyone for completing COMP6991. It's been a tough course, and I'm sure a lot of you felt the exam may have been too -- I promise that we will be doing our absolute best to make sure every one of you gets a mark that accurately reflects the work you've put in.

I'd like to thank you all for giving this new course a go, and I hope to see you all around in future.

I'll be sending an email out at some point in the next few weeks to get expression of interests for any of you students that would be interested in helping us teach this very course in 23T1, so keep your eyes out for that if you're interested!

Thanks again everyone for an awesome term!

Cheers, Zac.

## Exam finishing soon

2022-12-06 11:50:00

The exam is finishing in approximately 10 minutes (unless you have approved extra time).

As an important reminder:

Please do not discuss the exam for at least 24-hours after the conclusion. Recall that just because the exam is over for you, it does not mean that the exam is over for everyone.

Make sure you've submitted with give all questions you've attempted.

Submissions timestamped after the deadline will not be accepted.

## Exam typos

2022-12-06 09:20:00

Hi everyone,

We've fixed a couple of typos in the exam, and we'll probably fix a few more as the exam progresses and students point them out to us.

This is just a quick reminder to refresh your exam paper every now and then, and especially to refresh your paper before sending an email about an issue you've found -- as it might already have been fixed.

I'll maintain a changelog in this post, updating each time we make a fix.

### Changelog

• Question 4.4:

- Explain to Patel three features of Rust's macro system which his macro does not
+ Explain to Patel three features of Rust's generics system which his macro does not

• Question 2:

- fill in both todo!() statements, as well as to modify the
+ fill in the todo!() statement, as well as to modify the

## Final exam commencing in approx. 1 hour

2022-12-06 08:00:00

Hi everyone!

Your final exam will be commencing in approximately one hour. I will release the exam at 8:55am to give everyone a chance to load the paper before the official starting time at 9:00am. You may read the paper as you access it, but please do not commence working on the exam until the official start time at 9:00am.

The exam will be accessible at https://cgi.cse.unsw.edu.au/~cs6991/current/exam/ at 8:55am. The URL will 404 until 8:55am.

The exam is three hours, and so will conclude at 12:00pm. If you have extra-time from your ELP, it has been applied.

Please do not submit any questions after the deadline. Run give as you go in order to avoid having to submit everything right near the end, when servers are sure to be slow.

If anything goes wrong for you during the exam, please send us an email at . DO NOT POST ON THE COURSE FORUM DURING THE EXAM.

Please do not discuss the exam for at least 24-hours after the conclusion. Recall that just because the exam is over for you, it does not mean that the exam is over for everyone.

Following this will be the exam conditions found at the top of the paper. I urge you to read these either before or at the beginning of your exam. Of additional importance currently is the note about AI assistants.

Cheers! Zac.

## Exam Preamble

### Exam Condition Summary

• This exam is “Open Book”
• Joint work is NOT permitted in this exam
• You are NOT permitted to communicate (email, phone, message, talk) with anyone during this exam, except for the COMP6991 staff via cs6991.exam@cse.unsw.edu.au
• The exam paper is confidential, sharing it during or after the exam is prohibited.
• You are NOT permitted to submit code that is not your own
• You may NOT ask for help from online sources.
• Even after you finish the exam, on the day of the exam, do NOT communicate your exam answers to anyone. Some students have extended time to complete the exam.
• Do NOT place your exam work in any location, including file sharing services such as Dropbox or GitHub, accessible to any other person.
• Your zpass should NOT be disclosed to any other person. If you have disclosed your zpass, you should change it immediately.
• The use of AI assistants is strictly prohibited in this exam. This includes services such as Github Copilot and OpenAI ChatGPT.
As a remark, I have personally pre-emptively fed the entire exam through ChatGPT. It has a very distinct linguistic flavour to its responses, and often incredibly confidently gives an entirely nonsensical answer. Please don't mistakenly believe you won't be caught if you opt to violate these conditions.

Deliberate violation of these exam conditions will be referred to Student Integrity Unit as serious misconduct, which may result in penalties up to and including a mark of 0 in COMP6991 and exclusion from UNSW.

• You are allowed to use any resources from the course during the exam.
• You are allowed to use small amounts of code (< 10 lines) of general-purpose code (not specific to the exam) obtained from a site such as Stack Overflow or other publicly available resources. You should attribute the source of this code clearly in an accompanying comment.

Exam submissions will be checked, both automatically and manually, for any occurrences of plagiarism.

By starting this exam, as a student of The University of New South Wales, you do solemnly and sincerely declare that you have not seen any part of this specific examination paper for the above course prior to attempting this exam, nor have any details of the exam's contents been communicated to you. In addition, you will not disclose to any University student any information contained in the abovementioned exam for a period of 24 hrs after the exam. Violation of this agreement is considered Academic Misconduct and penalties may apply.

• This exam comes with starter files.
• You will be able to commence the exam and fetch the files once the exam commences.
• You may complete the exam questions using any platform you wish (VLab, VSCode, etc). You should ensure that the platform works correctly.
• You may submit your answers, using the give command provided below each question.
• You can use give to submit as many times as you wish. Only the last submission will be marked.
• Do NOT leave it to the deadline to submit your answers. Submit each question when you finish working on it.
• Please make sure that you submit all your answers at the conclusion of the exam - running the autotests does not automatically submit your code.
• Autotests are available for all practical questions to assist in your testing. You can use the command: 6991 autotest
• Passing autotests does not guarantee any marks. Remember to do your own testing!
• No marks are awarded for commenting - but you can leave comments for the marker to make your code more legible as needed

### Language Restriction

• All programming questions must be answered entirely in Rust. You may not use any other programming languages.
• You are not permitted to use third-party crates other than the standard library (std).

### Fit to Sit

By sitting or submitting an assessment on the scheduled assessment date, a student is declaring that they are fit to do so and cannot later apply for Special Consideration.

If, during an exam a student feels unwell to the point that they cannot continue with the exam, they should take the following steps:

1. Stop working on the exam and take note of the time
3. Immediately submit a Special Consideration application saying that you felt ill during the exam and were unable to continue
4. If you were able to advise us of the illness during the assessment (as above), attach screenshots of this conversation to the Special Consideration application

### Technical Issues

If you experience a technical issue, you should take the following steps:

• If you are using VLab: Try exiting VLAB and reconnecting again - this may put you on a different server, which may improve your connection. If you are still experiencing problems, you can try changing how you connect to the CSE servers. Consider:
• If you are using VSCode remote-ssh: Try disconnecting VSCode, and then changing the URL from vscode.unsw.edu.au to vscode2.unsw.edu.au.
• If you are using SSH: Try disconnecting SSH and reconnecting again.
2. If things are still NOT working, take screenshots of as many of the following as possible:
• error messages
• timestamped speed tests
• power outage maps
3. Contact should be made immediately to advise us of the issue at cs6991.exam@cse.unsw.edu.au
4. A Special Consideration application should be submitted immediately after the conclusion of the assessment, along with the appropriate screenshots.

## Assignment 1 Marking Released

Week 9 Saturday 22:00:00

Hi all!

Assignment 1 Marking is now (mostly) released. 7 students have not yet received marks; but we're going to try and get those finished off (or let those students know the reason for the mark delay) by the end of the weekend.

If you don't have your marks, and don't hear from us by the end of Monday, please just shoot us an email so we can follow up :)

You can access the marks here or with the following command on a CSE machine:

\$ 6991 classrun -collect assign01_adventurers

Cheers! Tom.

## Week 9 Exercises

Week 9 Wednesday 01:00:00

Hi all! The week 9 exercises are now released.

Since they're appearing a little later than usual, we're extending your deadline for them to Week 10 Thursday 21:00:00.

This gives time between the due date of the exercises and your assignment 2, which remains due Week 10 Friday 17:00:00, so hopefully you aren't stressed about getting the deadlines confused.

If there's strong consensus that a majority would prefer a Friday deadline for the week 9 exercises, I would be happy to extend as needed. We've generally found students prefer distinct deadlines, but we're perfectly happy to be wrong in this case!

Enjoy playing with unsafe and FFI, and best of luck working on your assignments! See you in the lecture tomorr-- today? It's getting late...

Cheers! Zac.

## Exam Details, Assignment 2 release

Week 8 Tuesday 09:00:00

Hi everyone - welcome to week 8!

This announcement contains details about the COMP6991 final exam, an introduction to assignment 2, and a goobye from me.

### Final Exam

The UNSW final exam timetable has been released, and the COMP6991 exam is scheduled for Tuesday 06 December 09:00:00 - 12:00:00. To see what this looks like in your timezone, you can use this link.

The final exam will:

• be online, hosted on COMP6991 infrastructure
• be open book
• be three hours long
• contain a mixture of practical (writing rust code), and theory (written answers).

There will be a practice exam as the week10 weekly exercises.

This practice exam will be on the same platform as the final exam.

### Assignment 2 - IRIS

Hopefully by the time you're reading this - assignment 2 has been released!

Assignment 2 (IRIS) is a chance to implement an IRC chat server!

The goals of the assignment are

• To experience concurrent programming in rust.
• To practice designing and structuring a larger rust program.
• To focus on skills and design patterns that would actually be used when solving modern programming problems (i.e. writing a pull request, writing re-usable code, etc.)
• To have fun making a useful application.

As always, if you have any questions - ask away on the course forum!

You can also find Tom giving an overview of the assignment below:

### Goodbye!

I'll be heading overseas on break for the next two months, which unfortunately means I'll no longer be working on COMP6991.

No need to fear, as I have left you with a present of some week 9 exercises and a final exam question :D

Jokes aside - it's been a pleasure to work with you all to build what I believe to be an awesome course. I say build, rather than teach as student feedback and comments have been critical to how we continue to design and run this course, and shape it for future sessions.

This course has been been in the works for almost two years now - from an initial idea, to drafting the proposal, proposing it to CSE, and then the many many hours of admin meetings and writing course content. It's crazy to see how far it's come!

The first offering of any course is always the hardest (for us, and especially for you) - so despite the hiccups (looking at you, give) thank you for trusting us and coming with us on this journey, and I hope you have walked away with some newfound appreciation for Solving Modern Programming Problems with Rust.

See you around,

~shreys

P.S - go easy on Zac and Tom while I'm gone 😆🦀

P.P.S - do your myexperience 😝 (what, you thought I would forget myexperience?)

## Enrollment Capacity for 2023 T1

Week 6 Wednesday 23:00:00

(If you're a current COMP6991 student, you can ignore this post!)

Hello, budding COMP6991 students. We're grateful you're interested in taking this course in 23T1.

We know there aren't many spots currently available in COMP6991 in 23T1. We plan on increasing enrollment capacity!

There are two reasons we haven't yet increased capacity:

• Week 6 has been an opportunity for course staff to both take a break, and work on making this current offering of COMP6991 as great as it can be.
• We're not sure what the maximum capacity of this course can be in T1, and the capacity depends on questions we don't have the answers to yet!

Regardless of how long it takes us to update capacity, you can expect to hear from us around Week 9 with a progress update.

~Tom, on behalf of cs6991 staff

## Submission Fixes

Week 5 Tuesday 18:30:00

The submission for the modularity exercise has been "fixed". There wasn't a necessarily elegant fix for the issue, so instead we expect you to tar up any files relevant to your work (probably just your two crates) and submit that manually with give.

Due to the late notice of the submission fix here, I've also extended the deadline of just the modularity exercise by one day. This means that modularity is now due at Thursday 13 October 21:00:00 2022. However, the remainder of the lab04 weekly exercises are still due at the usual time: Wednesday 12 October 21:00:00 2022.

Furthermore, the submission issues for week 5 should (hopefully) also be fixed. This was due to a bug in the current nw-k17-login1 CSE servers which has now been reported, so we appreciate your patience up to this point!

If you have any problems with submissions from now (including confusion around using tar for modularity), please make a course forum post ASAP!

Cheers! Zac.

## Week 1 + 2 exercise automarking

Week 4 Tuesday 20:15:00

Automarking of the weekly exercises released weeks 1 + 2 is now complete.

You can access your automarking results with 6991 classrun -sturec.

If you have any questions about your marking results, please either send an email to the course account, or make a post on the course forum.

Note that lab02_collections has not been marked, as it is not an automarked exercise. Instead this exercise will be manually marked, which can be performed in one of two ways.

If you attend one of this week's workshops, you will have a chance for a teacher to sit with you, mark your manual activities (lab02_collections, lab03_pusheen), and provide you valuable feedback and discussion (likely in small groups)!

If you do not attend a workshop this week (or would rather not discuss your answers individually with a teacher) your work will be marked offline sometime during week 5, where it will be graded, but without further feedback.

You will, of course, be given opportunity to dispute or discuss marks in either case if you do not feel that you have been assessed fairly.

Cheers! Zac.

## Assignment 1 Released

Week 4 Tuesday 10:00:00

Hi All,

Assignment 1 has been released (slightly later than expected, hence the message this morning rather than last night!).

You can find a link to the assignment here.

The promised "Mini Lectures" have been uploaded to the lectures page, and you can find them here. The videos are about 20 minutes each. The last video is an assignment intro video to help you get started!

We've also already gotten some feedback on the assignment; which we've posted and replied to on the forums.

~Tom

## Week 4 Notice

Week 3 Sunday 21:00:00

Hi Everyone, we just wanted to share four quick notices:

• Assignment 1 will be releasing tomorrow. We'll have more to say about it when it's released, but it will be due Wednesday Week 7; and we hope you'll plan your calendars accordingly.
• There will not be a live lecture tomorrow. Instead, we'll be producing three shorter videos you can watch asynchronously. They are all designed to be helpful with the assignment. The first will be an assignment walk through; the second will be a quick discussion on impl Struct blocks (which we have already seen in the workshop last week); and the third will be a quick discussion on impl Trait for Struct.
• There will be a Wednesday Lecture as usual, at the usual time (6pm).
• On Thursday and Friday, we'll have workshops with a slightly different format. We'll go through answers to theory questions in the Weekly Exercises, and do some code review. We'll also spend some time looking at how to build a library that would be helpful for Assignment 1.

We'll be back in touch tomorrow once the lecture-replacement videos and assignment are released. In the mean-time, we hope you enjoy your long weekend!

All the best :)

~Tom

## Gallery Released

Week 3 Sunday 15:30:00

Hi all, the gallery for lab01_van_gogh has now been released!

You've collectively made some pretty fun stuff! Try and spot your own picture and have a browse at what the rest of the cohort managed to come up with!

You can access the gallery via the sidebar, or here: https://cgi.cse.unsw.edu.au/~cs6991/22T3/gallery.

Cheers! Zac.

## Week 2 Announcement

Week 2 Thursday 19:00:00

Hey all! Just a quick announcement for week 2...

As mentioned during the lectures, today's workshops have been rescheduled due to the public holiday to tomorrow (Friday).

We are offering two additional in-person workshops for tomorrow only:

• 12:00 - 14:00 -- Tabla Lab K17 G07B

• 16:00 - 18:00 -- Strings Lab J17 302

Please feel free to attend one of these make-up workshops tomorrow if you missed out today, and would like to join.

If you can't make either of these slots, you may join the online workshop at 18:00 - 20:00 hosted on Discord.

If this also doesn't suit, we don't have a good recourse unfortunately (although do note that workshops are not compulsory / marked).

Tom will be trying out recording the online workshop this week, but there may be technical difficulties and we're not sure how much value it may really offer as a recording.

Furthermore, as a reminder (and as mentioned during the lectures), next week's Monday lecture will be held from 16:00 - 18:00 instead of the usual time. Note that this is a one-off change -- not permanent.

Cheers all! Zac.

## Lecture 2 Starting Soon

Week 1 Wednesday 17:30:00

Our second lecture for COMP6991 is starting soon at 18:05 on YouTube: https://youtu.be/a0gOAeGDQa0.

Today we'll be doing lots of Rust live-coding to help familiarise everyone with the language a little better!

Live-chat is available, and strongly encouraged throughout the lecture. I will be posing questions to the audience, and joining in on the discussion is a great way to bolster your education!

The lecture recording should be available at the same URL above afterwards... a dedicated page for lecture links will join the course website sometime this week.

Post-lecture discussion is welcome on the course forum -- please use the "Lectures" category, or "General" if the question / discussion is more broad.

Cheers, Zac.

## Online Workshop Information

Week 1 Wednesday 14:00:00

As noted in the Lecture, the Online Workshop will be held on Discord.

Therefore, if you are a student in the Online Workshop (F18A), or you need to attend the workshop online because you cannot make your in-person workshop; please follow the instructions below.

1. Create a Discord Account here. Of course, you can use an existing account if you have one, but we don't want to pressure you to use your personal account for uni work.
2. Use this invite link to join the server.
3. Once you've joined, verify yourself using this link. You cannot participate until you have verified.

If you have issues joining, please post on Discourse (our forum) so we can help you out.

As a reminder: this Discord will only be active during the online tutorials. It is not a "course discord", so please only use it during 6-8pm on Friday, during the tutorial.

All the best,

Tom.

## Lecture 1 Starting Soon

Week 1 Monday 17:30:00

Our first lecture for COMP6991 is starting soon at 18:05 on YouTube: https://youtu.be/RBNRVsy2gPw.

Once the course is introduced, we will start playing with some basic Rust and consider the Option type!

Live-chat is available, and strongly encouraged throughout the lecture. I will be posing questions to the audience, and joining in on the discussion is a great way to bolster your education!

The lecture recording should be available at the same URL above afterwards... a dedicated page for lecture links will join the course website sometime this week.

Post-lecture discussion is welcome on the course forum -- please use the "Lectures" category, or "General" if the question / discussion is more broad.

Looking forward to "seeing" / meeting you all tonight!

Cheers, Zac.

## Welcome to COMP6991

Week 1 Monday 12:30:00

Welcome everyone to the very first offering of COMP6991: Solving Modern Programming Problems with Rust! We are so glad to have you all here and sincerely hope you enjoy your time with us here in this course.

## Course website

The course website (where you will find this announcement) can be found at https://cgi.cse.unsw.edu.au/~cs6991/22T3/. This will also link you to the course outline, the course timetable, and the course forum. This course does not use WebCMS3 nor Moodle.

## Lectures

Our first lecture starts tonight! The lectures are from 6:00pm - 8:00pm on both Mondays and Wednesdays. We plan to examine not just Rust code, but hopefully many different programming languages during the lectures and through this set the scope of our studies for COMP6991.

The lectures will be live-streamed on YouTube, and I will email / announce a link later on today.

## Workshops

Through your myUNSW enrollment, you will have selected a workshop class to join each week. It may have shown up as LAB or something similar on the class registration -- this is what we're talking about. The workshops are held on Thursdays and Fridays -- please only attend the one workshop that you are enrolled in.

The workshops are heavily practical and involve code design, programming in Rust, and finally reviewing any code written and design decisions made, including considering what the experience may have been in other programming languages, etc.

I highly recommend all students to attend at-least your first couple of workshops -- I think you'll find them to be a fun and highly educational experience, and hopefully you won't need any further convincing after that point. If you make the effort to attend them and find this not to be the case, please tell us why and we'll do better!

As per the newly-instated week 2 public holiday that clashes with two of our workshops -- we're still figuring that one out. Will provide an update in an announcement once we've got more information.

## Our team

Our teaching team this term consists of:

• Shrey Somaiya: Course admin (focusing on weekly exercises)
• Tom Kunc: Course admin (focusing on workshops + assignments)
• Sage Barreda-Pitcairn: Teacher
• Kaiqi Liang: Teacher
• Jared Lohtaja: Teacher
• Zac Kologlu: Lecturer

Please show your respect at all times to our wonderful course staff, who I know for certain are all incredibly excited to be teaching this course with you all!

## Weekly exercises

On the course website you will find your first set of weekly exercises has already been released! These are due Week 2 Wednesday, and this due date structure (week n + 1 Wednesday) will follow similarly for later weekly exercises. These (usually) provide autotests, and are submitted with 6991 give. Weekly exercises will be released weeks 1-5,7-9 (inclusive), bringing a total of 8 weekly sets.

Note that we've also provided some week 0 exercises that are not assessed, and solely exist to help you make sure your Rust toolchain (whether working on CSE or at home) is working correctly, and get you started on some fundamentals.

## Revision Questions

You will also find some revision questions (hopefully) each week! These are similar to intro-COMP tutorial-style questions, which consist of small practical exercises with very brief specifications, and some theory to get you thinking. We will release answers consisting of (usually) both written and recorded explanations at the end of each week.

## Provisional course outline

2022-03-08 17:00:00

Welcome to all of the students that managed to fill up our 22T3 enrollment capacity in only a couple of days!

In order to allow you to understand a little more about what this course teaches and how it is planned to run, a provisional course outline has been created.

This outline is subject to change over time, but should hopefully give you a reasonable overview of the course as it is currently planned.

If you find any issues, please send an email to the course account -- you can find the email in the course outline.

Cheers!

Zac.