In addition to this FAQ page, this course has a dedicated help page.

Getting started

What do I need to do when I start the course?

Here’s a checklist:

  1. make sure you can log in to the COMP1720 forum (let me know asap if you can’t)

  2. read the course policies page carefully

  3. work through the week 1 lab material (anytime!)

  4. sign up for a lab group

What’s expected of me in this course?

As well as the usual stuff (attending labs & lectures), to keep on top of this course you’ll need to:

  1. watch & ask questions on the COMP1720 forum

  2. read the weekly lab material ahead of time, and attend your scheduled lab session (which is where you’ll present your visual diary)

  3. start the assignments early

  4. ask questions (in lectures, during labs and on the COMP1720 forum) if you don’t understand anything—there are no dumb questions in COMP1720, and if you’re ever made to feel this isn’t the case then let me know

This is normal—your account should already be active (we activated it for you automatically when you enrolled in the course).

You should try and log in to the forum with your usual ANU uni ID & password, it should just work. If it doesn’t, get in touch asap.

When is the first assessment item due?

Your first assessment item is your first visual diary entry in your week 2 lab. I know that’s kindof early, but it’s only worth 2 marks and it’s redeemable. Still, you can actually start thinking about it now—you don’t even have to wait until the course starts.

Why do you keep calling it COMP1720 when I’m in COMP6720?

Sorry about that—it’s nothing personal, it’s just that it’s too much hassle to write the full COMP1720/6720 each time. If there’s any information which is specific to one course group or the other, I’ll make it really clear.

Is there a textbook for this course?

There’s no physical textbook for this course, but there’s a list of good online resources on the Books, links and other good things.

What are the assessment deadlines, late penalties, etc?

Good question! It’s important to know this stuff in any uni course, so have a look at the policies.

What programming language will I use in this course?

You’ll write JavaScript code to run in the web browser. There’s more info on the software setup page.

Forum/message board

Where’s the class forum/message board?

In 2017 COMP1720 used Piazza to host the class forum. This year we’re using a special COMP1720 version of discourse (an open-source platform for “civilised discussion”) instead. This will allow us to do a bunch of cool code-art-y things which just aren’t possible in Piazza.

I can’t access the forum—what should I do?

The COMP1720 discourse forum is part of the official CECS teaching infrastructure, so you can ask for help at the CECS Teaching & Learning support office on the ground floor of the CSIT building (near lab N116).

That’s the place you need to go for help, because we don’t administer the forum ourselves (and can’t easily give you access, fix issues etc).


Where are the lectures held?

The venues are listed on the lectures page.

Will the lecture slides be updated over time?

The lecture slides below are part of this website, so (like any other website) they can be updated. There won’t be major changes after the lectures have been delivered, but I’ll correct any errors, add any new examples/analogies which come up in class.

Are the lecture slides the textbook for the course?

It is expected that you attend every lecture and make your own notes. The lecture slides aren’t a textbook—they’re visual aids to help explain the concepts in the lectures. This is a good thing—there’s nothing worse than a lecturer who just drones on reading the textbook from the slides. We’re gonna have more fun than that :)

However, this means that taking notes (in addition to the lecture slides) is an essential part of the learning process. You can’t just download the slides the night before exam and expect to be able to memorise a bunch of facts and pass the course.

Will the lectures be recorded?

The lectures will be recorded, although some elements of the lecture (including live coding sessions & in-class discussion/demonstrations/activities) may not make it onto the recordings. We’ll try our best, but some things are just hard to capture with the recording tools we have in lecture theatres.

As is always the case with technology, the lecture recordings don’t always work. Mostly the problems aren’t my fault (Echo360 is pretty flaky, as you’ve probably noticed from your other courses) but no system is perfect. So while every attempt will be made to provide you with a lecture recording, the only way to guarantee you’ll see the lecture is to see it with your own eyes.

Will I (as a student) be recorded as part of the lectures?

COMP1720 lectures are fun, interactive times of sharing and discussion (at least I hope). This means that if you answer a question in the lecture you might be captured on the audio recording. Just a heads up. If this is an issue, then let me know.

Why do you do your own recordings?

A few reasons:

  1. echo360 is pretty flaky, and I don’t want you to miss out when it doesn’t work (like in the first lecture)

  2. so that I can add my own “in lecture” camera recordings (especially when we do in-class activities)

  3. so that I can provide both clear, high-res recordings (for those who want it) and lower-quality ones (still large-ish files ‘coz they’re video)

I have a lecture clash with another course—what should I do?

That’s a bummer, but unfortunately the uni’s a big place with lots of students & courses, so this happens from time to time. It’s a tricky situation. The COMP1720 lectures will be recorded, so you could always watch the videos later (although I do think it’s usually better being there in person).

You should talk to the other lecturer anyway (especially to see if those lectures will be recorded). You could alternate between them, and watch the video of the one you missed. I hope that the COMP1720 lectures will be so good that you’ll want to attend those ones, though :)

The most important thing is that you attend your lab group—if you do that (and engage while you’re there) then I think you’ll be ok and able to keep up.

Why is there only one lecture?

The Thursday 10am code & design lecture is a normal(ish)1 lectures—we’ll start at the beginning, and gradually level-up your knowledge of the key concepts as you go, with plenty of explanation and examples along the way.

In addition to the code & design lecture, in COMP1720 we’ve (for the last couple of years, at least) had the privilege of having a bunch of artists/designers/code performers give a weekly artist talk guest lecture.

This year (2018) the artist talk is not going to be an on-campus lecture. Instead, we’re recording a series of artist talk interviews—kindof like a “flipped” lecture, but with higher production values, better editing and fewer webcam shots up my nostrils2.

When will the artist talk videos be released?

No set timeline—we’ll release them through the semester as they’re ready. We’ll always announce when a new one is up on the COMP1720 forum.

Do I have to understand everything that’s going on in the artist talks?

The artist talk in week 1 isn’t necessarily any easier/harder to follow than the one in week 10. Instead, think of the artist talks as a chance to see how different people make cool things with code. As T. S. Elliot (probably) said, good artists copy; great artists steal. So watch the videos as they’re released, see new things, and ask questions on the forum.


Is there a lab in week 1?

Sort of; there’s a “pre-lab” lab in week 1 (it’s listed on the labs page with all the others, though). So there’s stuff you need to do in week 1, but you should work through the content in your own time. Regular labs start in week 2 (make sure you sign up).

If you get stuck with the week 1 content, you should attend one of the week 1 drop-in lab sessions.

When will lab sign-up open?

As stated on the course website since before the start of semester, lab sign-up opened immediately after the end of the first lecture. So it’s open now—you should sign up right now if you haven’t already.

How do I sign up for labs?

Lab sign-ups happen through streams—you just log in with your usual uni ID and password and it’s pretty straightforward.

I can only attend (insert specific lab time here)—can you move me into that lab?

If you email me before lab signup opens and explain your situation then I’ll do my best to accommodate you. I know that there’s lots of competing demands on your time these days, and I want to help you out if at all possible.

However, after labs are full-up I can’t move you into a lab if it’s full, for several reasons: there aren’t enough seats (even if you bring your own laptop), it’s against fire regulations and things like that, and it’s also not fair to the other students who have moved things around in their timetables to fit their labs in.

My advice is to work things around in the rest of your life as best you can so that you can attend your weekly lab session. Attending the labs is even more important than attending the lectures, since that’s where the visual diary is assessed and the lectures are (mostly) recorded. Although obviously the more in-class stuff you miss the more work you’ll have to do on your own time.

None of the lab times suit me, can you schedule a new lab time?

I realise that the lab schedule this year has a couple of 8am starts (not good for early-birds). Timetabling is done by the ANU central timetabling process, we don’t have very much control over it. Sorry about that—it’s especially bad in 2018 due to the union court redevelopments and just general shortage of teaching spaces on campus.

Why isn’t COMP1720/6720 showing up when I log in to streams?

If this course isn’t listed for you when you log in to streams, that means you’re not enrolled in the course. You need to talk to student services as soon as possible to see why; it might be because you don’t satisfy the prerequisites, it might be because you only just enrolled and you haven’t showed up in the system yet, it might be for a whole bunch of other reasons. We can’t enrol you in the course directly, so head to student services ASAP (probably best to go in person) to figure out what’s going on.

Can I pick which tutor I want to have/want to avoid?

Not without a good reason—it’s really hard to schedule everyone into lab groups as it is, so there’s really no room for “I only want to be with this tutor…” or “I want to be in a lab with my friends” constraints. We don’t separate people deliberately, but we just can’t promise to keep people together.

However, if you’ve got a legitimate reason, then contact Ben and we’ll try and sort something out.

Can I attend a different lab session?

No, you must turn up to your own lab session—these aren’t “drop-in” labs (except for week 1). The reason for this is so that you can get to know your tutors and labmates—they’re your primary support community for this course. In addition, the labs for this course (in fact, for all courses) are going to be pretty full this semester, so if you turn up to a lab session other than your own you’re depriving the students in that lab session of their support time.

If you’re not sure which lab you’re in, have a look on streams.

Are the labs assessable?

The lab content isn’t assessable, but the labs are the only place to get your weekly visual diary marked.


So are there really no late submissions allowed?

Yep, really. If you hand it in even a couple of minutes late, you’ll get zero for the assignment. So push early and push often!

If you’re a CS student, then you’re probably used to this (it’s the School policy). If you’re from somewhere else on campus—and I’m super pumped that you’re here, and will do everything in my power to help you succeed—you really need to hear and remember this. You should probably get a neck tattoo.

it should say 'no late submissions for COMP1720 in some cool gothic script

Does this include the Statement of Originality?

Yes, the “no late submissions” policy applies to every aspect of your submission—the code, the assets, the artist statement, the statement of originality. If it’s part of your submission, you must push it before the deadline.

Here’s a tip: whenever you add some code/assets to you project that isn’t yours, write it (and commit it) to your SoO file straight away. This will save you having to do it all in a rush at the end, and might save you from a painful academic misconduct process.

But it’s 5 minutes before the deadline and my git push isn’t working—can I email you the files?

No. Only submissions through GitLab will be accepted, and only according to the rules described on this assignment page. We won’t accept submissions through email, or on other git branches, or through any process other than the one described.

This rule is necessary because there are 350 assignments to mark, and so there’s a lot of automated infrastructure involved in preparing your assignment & getting it to/from the tutors in the marking process. Every “special case” adds significant time, and stops us being able to provide the quality feedback that you need to improve.

The only way to ensure that this process runs smoothly is to enforce the rules around the submission process—no exceptions.

Seriously, don’t leave this stuff to the last minute. Use the checklist to make sure that you’ve followed the rules.

I pushed things, but not until after the deadline—can you please accept my submission?

See above.

p5.js/VSCode/Git/etc. stopped working on my laptop for no reason just before the deadline—can I have an extension?

No. If you’re working on your own machine, you really need to understand the course own machine policy.

My actual assignment code was in another commit (i.e. not in HEAD), can you mark that instead?

No, sorry. Again, this is a fairness issue—at uni you’re not allowed to submit multiple assignments and then pick the mark you like best. The last commit on the GitLab server is your submission (as described above).

I’ve just realised there’s a tiny bug/typo in the assignment I submitted—can you just apply this small fix?

The course own machine policy is pretty clear, as is the environment in which it will be marked (that your submission will be judged based on how it works when viewed on Chrome at the test URL).

If we’re marking your assignment and it’s buggy or otherwise doesn’t seem to work right we will do some basic debugging to try and get it to work. If there’s just a very small fix required to get something to work then you won’t get zero, although we will apply a penalty depending on how far the project falls short of the requirements. If we can’t get it to work (and unfortunately we can’t spend all day trying to figure it out) then we must mark what you submitted.

This isn’t a licence for to submit incomplete work and then send an email later saying “oh, can you just apply these changes and it’ll all work great”—that would be a violation of the spirit of the course’s policy on late submissions. What it means is that if there’s a really small error (a last minute typo committed by accident, etc.) that’s easily discoverable and fixable, you won’t get zero for the submission. Still, don’t rely on this being the case—test, double-test and re-test your final submission at the test URL to make sure this doesn’t happen to you.

I know I haven’t followed the submission rules, but can you please make an exception just for me, just this one time?

No, sorry. I really can’t.

One of the things I’m most committed to in this course is being fair to all students. After every assignment I get emails asking for special treatment outside of these rules. At this point I have two things in mind:

  • I have to be fair to the students who did follow the rules
  • I have to be fair to other students who have received penalties for not following the rules (and who I’m sure would have liked special treatment themselves)

Look, I don’t enjoy enforcing these policies and giving penalties when students have obviously put in a lot of hard work, and I really want you to do well in this course. However, for the reasons above the only way to be fair is to say no to these requests every time (with the exception of legitimate reasons as described on the policies page).

Again, I really can’t stress this enough—read the assignment page carefully, start the assignment early, check that the files you want are on the GitLab server, and most importantly don’t leave your final push to the last minute!

When will assignment marks & feedback be released?

We’ll try3 to release marks & feedback for all assignments within two weeks of the submission deadline.

Where can I find my marks & feedback for my assignment?

Assignment marks and feedback will be released through GitLab: a new branch called master-feedback4 will be pushed to your GitLab repo. There will be a feedback.yml file in the top-level directory—this file contains your feedback.

You can either pull the latest changes to your Git repo yourself, or you can view it through the GitLab web interface (note that the feedback branch is selected in the drop-down in the top-left of the picture).

I’ve got write access to the *-feedback branch, can I change my mark and push it up?

Ha—nice try. When we release the marks we also upload them to streams, and that’s the “source of truth” for your marks when we’re adding things up at the end.

How can I get more feedback and figure out how to do better next time?

For any assessment item, the feedback is the most important part—not the mark (although I know it doesn’t feel like it sometimes).

The main purpose of the feedback is to help you improve for next time. If you get lots of feedback that doesn’t necessarily mean that there were lots of things wrong with your assignment—it’s just that it’s more useful to give suggestions about how to do things better than to write pages and pages of non-specific “well done” comments.

Your tutor has worked hard to give you actionable feedback, which might include:

  • things you did well
  • things which you could have done better
  • ideas to consider for next time

If you want more detailed feedback, you can ask your tutor a follow-up question. Don’t ask during the lab time—that’s for doing the lab work—but you can either hang around after your tute, ask them a question via email, or set up a time to get more feedback. We really do want to help you get better at making interactive art in this course, and we’ll give you the feedback you need to do that.

I don’t understand/am unhappy with my assignment mark, what should I do?

First, remember that marks aren’t everything; (I hope) you’ll remember the things you learned in this course long after you’ve forgotten your marks.

You should talk to your tutor (at a time which is convenient to them) about your assignment and get more feedback on how to improve for next time. We want you to do better in the future, so we work hard to give good feedback when you ask.

Remember that the tutors and I mark a lot of assignments, and we work hard to make sure things are fair for all students. The information on this page has been clear all along that this isn’t a “tick the box, get 100%” assignment.

Can I get my assignment re-marked?

See the appeals policy.

Why is the comp1720-2018-marker user listed as a Developer on my repo?

This user is added automatically when you fork the template repo. It’s there so that we can mark your submission. Developer (rather than Reporter) permissions are required because (as described above) we actually push your marks & feedback as a new file in your repository, and we need to be able to push that feedback file to your repo on GitLab.

So even after the submission deadline has passed, don’t remove this user.

Course website

Why isn’t COMP1720 showing up in my Wattle?

COMP1720 doesn’t use Wattle for anything. The course should still show up in your course list in Wattle, but the course page on Wattle should just have a link to the main course website.

If it’s not showing up for you and you’ve just enrolled, wait a day or so. If it’s still not showing up, then check with student services that you’ve enrolled properly.

Why don’t you use Wattle for this site?

Because Wattle makes it really hard to put together a well-organised website. There are a few little things, for example I want to be able to add interactive widgets into my pages and other cool things like that.

But the main reason is that web sites work best when they’re linked together. If I need to refer to the lecture content on a lab page (or vice versa) I don’t want to just tell you “go see the lab 4 content” and then make you find your own way there—that’s a dumb way to make a website. Instead, I want to have a clickable link, so that when I tell you to go and see some other part of the site then I know you’ll actually do it.

I put heaps of time into making an informative and well-structured course website, which means that I expect you to use it—but I make it as easy as I can to find things.

If anything on here is confusing or you have any ideas for how to make the content better, then ask a question on the COMP1720 forum and we can make it even better.

I’ve found some inconsistent info between the website and some other place—which one is correct?

Firstly, you should raise the issue on the COMP1720 forum—this is the sort of thing we need to get fixed up right away.

If in doubt, the information on the course website is the authoritative version.


What’s with the arty bollocks in this course?

This course isn’t like other programming courses—just look at how often art is mentioned in the learning outcomes. Getting a good mark isn’t just a matter of writing a program which successfully passes a bunch of unit tests.

To do well in this course, you need to create compelling interactive art. For some people, that’s incredibly liberating, but for others it’s incredibly frustrating.

This means that you must think through all your work from a viewer’s perspective—what do you want to communicate, how do you want them to feel, what questions do you want to leave them thinking about? We’ll explore techniques for doing this throughout the course.

In terms of assignment marks, you won’t get a separate mark for your artist statement (in fact, you won’t get separate marks for any part of the assignment). However, your artist statement is crucial for showing us what you’re aiming for with your sketch, and therefore your overall mark.

But I hate how vague that is…

If you hate thinking artistically/creatively then I really suggest you don’t take this course (you can’t say that you weren’t warned). However, I hope that you learn to enjoy the fact that this course is more open ended than the other CS courses you might take at uni, and use that freedom to make stuff not just to get good marks in assignments, but to express yourself creatively and make things you’re really proud of.

Is there a specific marking rubric?

I’ll say it again: this course isn’t like other CS courses (although it is like some arts courses). There are no unit tests to pass, and your mark will be based on the quality of your artwork, using the following general ANU marking guide (you can find it in Table 2 on this page).


Letter Grade

Numerical Mark (%)


High Distinction



Work of exceptional quality, as demonstrated in the attainment of learning outcomes at or above the relevant qualification level




Work of superior quality, as demonstrated in the attainment of learning outcomes at or above the relevant qualification level




Work of good quality, as demonstrated in the attainment of learning outcomes at or above the relevant qualification level




Work of satisfactory quality, as demonstrated in the attainment of learning outcomes at or above the relevant qualification level




Work in which the attainment of learning outcomes at or above the relevant qualification level has not been demonstrated


Can I use my own laptop/desktop machine?

Yep, you can, although make sure you’ve read the course’s “own machine” policy.

I’m having trouble getting everything working on my own computer—can I bring it to the labs for help?

The labs are one of the most important times for learning the course material, and there’s lots to learn! This means that while you can bring your own computer to labs, and the tutors might be able to give you some advice if you’re having trouble, the labs aren’t a time where we can troubleshoot all the install issues on your machine. I’m sorry that we can’t do this (I want you to get the problems sorted out as well!) but there’s just not enough time in the labs and it’s not fair to the other students.

Finally, there’s always the COMP1720 forum, although when you ask on the COMP1720 forum it’s really important to provide as much information as possible about what’s going wrong, what you’ve tried already and what you think might be the cause (otherwise it’s hard to figure out what the problem might be).

Do I have to use my own laptop/desktop machine?

Nope, you’re welcome to just use the computers in the CSIT labs and the Peter Karmel building. We’ll make sure they’ve got all the software you need.

In which software environment will my assignments be marked?

See the course’s “own machine” policy for details.

Can I use a different web browser/toolchain/text editor?

You can, although I’d advise against it (unless you have a strong reason to). If you do go down that route, check out the “own machine” policy; basically you’re marked on how it works in the labs—no exceptions.

GitLab Continuous Integration (CI)

What’s continuous integration?

Continuous Integration (CI) is just a fancy name for a bunch of commands which are executed on the GitLab server every time you successfully push a new commit to your repository. This can be used to do all sorts of things, for example to check that you haven’t forgotten to commit a file (e.g. thumbnail.png), or to copy all your files (html, js and the whole assets folder) somewhere so you can visit your sketch at the test URL. These commands are called “CI jobs”.

The reason these CI jobs runs is because there’s a .gitlab-ci.yml file in the top-level directory of your project. This name is special (so don’t change it, or it won’t work) and the stuff in this file (specified in YAML format) tells the GitLab server what commands to run after you push your code to the server.

Why am I getting “Pipeline #xxxx has failed…” emails from GitLab?

In this course we’ve enabled GitLab’s Continuous Integration (CI) feature. This means that every time you push to your fork of the GitLab template repo, the GitLab server will check things like:

  • your originality statement is properly formatted
  • you have submitted your artist statement

This isn’t a guarantee of the “correctness” of your submission (it doesn’t actually run your code), it’s a just a checklist of the very basic things your code must do (like compile successfully).

So if all the CI tests pass, do I get 100% for the assignment?

No. It just checks the “bare minimum”.

Should I be worried if my submission fails the CI checks?

Not initially. What you need to do is have a look at what has failed and make sure that you’re working towards fixing them up. As the submission deadline approaches and you finish off your assignment you should see fewer and fewer failures.

If your final push before the deadline still doesn’t pass the checks, then that is a problem. It means that there was something seriously wrong with your submission, e.g. one of the parts didn’t compile, or you didn’t commit your artist statement to the repo. There’s nothing you can do about it at that stage, so make sure you heed the warnings early and give yourself plenty of time to fix them.

How long does my CI job take to run?

Each CI job should take around 30 seconds. However, there are a lot of students in the course, and we’ve only got a limited number of servers to run the CI jobs on, so it’s quite likely that your job won’t start straight away if the servers are already busy.

Your CI job goes into a queue and will run as soon as possible. So if a lot of people are pushing (e.g. if it’s close to the deadline) then you might have to be a bit patient.

Another reason to submit your work early :)

If the CI job takes ages to run, does that mean my code hasn’t been accepted before the deadline?

No. The CI checks are just there to provide helpful feedback to you—they have no impact on whether your code is submitted (or the time of submission).

Can I see whether my submission passes the CI checks through the GitLab web interface?

Yes. Go to the web interface for your repo, and click on “CI / CD” in the sidebar. You’ll see a view which gives you info about the last CI run (which should have happened last time you pushed).

I’m sick of getting these CI emails, can I disable them?

Yes—if you want to disable this email notification, go to your account setting in GitLab (click on your profile picture, then select Notifications). Change the notification level of your assignment repo to “Custom”, then in the pop-up window de-select “Failed pipeline”.

Can I modify the .gitlab-ci.yml file?

Yes, if you’re modifying the cp command to move your files to the test URL server (as described on the major project page).

Other than that, you cannot modify the .gitlab-ci.yml file without permission. If you do (e.g. for CI server shenanigans), then the convenor reserves the right to apply penalties for bad-faith use. So don’t touch the .gitlab-ci.yml file unless you’ve got explicit written permission from Ben.

How do I check if my submission has been pushed to the GitLab server properly?

You can check through the GitLab website. Look at the GitLab page for your fork of the assignment repo: the files shown there are the ones we’ll mark.

If the files you want us to mark aren’t there, that might be because:

  1. you haven’t added that particular file to git yet
  2. you might have committed the files to git locally, but not pushed them to gitlab

Whatever the reason, only the files on the GitLab server count as your submission. Any other files will not be marked. No exceptions.

If you need a refresher, then lab 1 is probably a good place to look.

What’s the COMP1720 test URL?

Every time you push your code to GitLab for one of the labs or deliverables the latest version will also be visible (on campus only) at the following URL (with uXXXXXXX replaced by your own uni ID and major-project replaced by e.g. assignment-3 or lab-7 depending on which project you’re actually trying to look at):


This is helpful for a few reasons:

  1. you can check that your commits have been pushed to GitLab successfully

  2. you can see that it works correctly (and that you’re not having any “only works on my machine” issues)

  3. if you like, you can send the link around to share it with others

This is exactly what you did all the way back in lab 1 when you put a circle on the internet.

Note: this isn’t on the public internet, so you can’t just tweet it out to the world and have them see it. However, as long as someone has a login to the ANU campus network (i.e. they’re a student or staff of the university) then they can see it off-campus using the ANU reverse proxy.

What’s the ANU Reverse Proxy?

The ANU reverse proxy sounds pretty scary, but it’s just a way of accessing ANU only resources when you’re off campus or on mobile internet. You’ll probably use this tool a lot during your degree to read online journal articles and papers in the ANU’s collection. All the sketches you make in the labs and assignments will be automatically put online, but only within the university network. This means if you want to look at your labs or assignments from home you’ll need to first login via the reverse proxy with the following steps;

  1. go to ANU’s reverse proxy login
  2. enter your anu id and password then click log in
  3. paste the URL you want to visit into the text box and click go


What is git?

git is a version control program, which means that its job is to help you take “snapshots” of your files as you work on them. If you’ve ever had to manually make “Save As…” copies of something (e.g. a Word document) with -version-1, -version-2… suffixes, you’ve used “version control” (a ghetto version of it, anyway). git is just a program to do this sort of thing automatically—to easily make (and keep track of) a bunch of snapshots of the files in a directory over time. That way you can fearlessly try things out when you’re programming, knowing that if it doesn’t work out you can just go back to a previous snapshot.

The one final piece of the git puzzle is that git allows you to keep these snapshots in sync across multiple computers. These can be any computers—your laptop might be one, but it you might also use another computer in the cloud (which is a good idea, since it doubles as a back-up). The idea is that you can change your files (i.e. create new snapshots) on whatever computer you happen to have handy at the time, and git helps you keep everything in sync.

Do you have any videos demonstrating how to use git?

Absolutely, we’ve made a series of screencasts explaining exactly how to use git and gitlab for this course.

Am I expected to know how to use git before I start this course?

No, we’ll walk you through it—and there will be plenty of help in working on and submitting your assignments as long as you reach out ahead of time.

If you’re not a CS student and you’re freaking out about this, then you can even get in touch and discuss your concerns. I’m happy to run extra labs give extra support if you think you’re gonna need it. Again, there’s heaps of help available, just let me know so that we can help you out.

Can I submit my assignments some other way, e.g. by emailing them to you?

No—no special cases, no exceptions. Sorry, it’s the only way to run a course of this size.

How do I open a terminal window?

On a Mac, the terminal program is called Terminal.app. It’s in your Applications > Utilities folder, or you can just search for “terminal” in the spotlight search bar (which you can bring up by hitting cmd+space or clicking on the little magnifying glass in the top-right of the screen).

On Linux (like in the CSIT labs) the program is also called Terminal, an you can find it by going to the menu in the top left hand corner of the screen—it’s in System Tools > Terminal.

On Windows the easiest way is to open the explorer, right-click the folder you want to work in and select the Git Bash Here menu item.

The GitLab help page has some more info if you get stuck (it uses the term shell, which is just another name for terminal).

What’s the difference between git & GitLab?

git is a program (like Microsoft Word) for keeping track of files (see what is git? above). The GitLab server is a website (running on a computer at the ANU) which uses git to keep track of your snapshots somewhere other than your own computer. The GitLab server never adds any new files to your snapshots, it just keeps track of the changes (commits) you’ve made once you push them to the server.

So git is the program, and GitLab is the website, although you can interact with the website both directly (e.g. with a git push) or indirectly (through the GitLab user interface in the web browser).

Why do we have to do all this GitLab stuff, anyway?

Using version control software (and git in particular) isn’t just a skill which is useful in this course, it’ll also help you in other courses and also in the real world (e.g. places like GitHub). You may never use it again (hey, I don’t know what you’re planning to do with your life after uni) but I suspect that most of you will.

Everything’s stuffed! Why is git so painful?

Take a deep breath, it’ll be ok. If everything really is stuffed, then the question to ask yourself is are there any changes on my local machine (i.e. things I’ve done since I last pushed to the GitLab server) that I really can’t do without? If the answer is no, then perhaps the simplest solution is to just delete the whole folder and re-clone from the GitLab server.

As always, if you get stuck, ask a question on the COMP1720 forum.

I cloned the “template” repository by mistake instead of my own fork—what do I do?

It’s ok. You just need to change the remote (the repository on the GitLab server which your local copy of the files “points” to when it tries to push them back up to the server).

Do I have to type in my password all the time?

No, if you set up SSH keys then you can do all the git stuff without having to put in your password. This step isn’t necessary, but it is super-handy.

The basic idea is this: when you have trusted friends, you leave a key out for them so that they can get in to your house when you’re not home. git allows you to do sortof the same thing.

This is so that the GitLab server knows that it’s you (you don’t want someone else submitting something on your behalf). Added bonus: no more passwords.

I’ve borked my git repo somehow, how do I fix it?

There are lots of things which could have gone wrong, and without knowing what the exact error message is it’s hard to say how to fix it.

If you ask a question on the COMP1720 forum then make sure you clearly state what the situation is, what behaviour you expect, and what behaviour you see (including any error messages).

Where can I learn more about git?

Here’s a list (in no particular order) of git help resources on the web—if you find another page which is helpful then let me know and I can add it here:

  • main git docs page: always a good place to find things (there are even some videos)

  • a general list of tips for dealing with git problems: useful if you’ve got intro trouble and you want a one-liner fix to get you out (although copy-pasting git commands you don’t understand will sometimes fix things, and sometimes make it worse)

  • Using Version Control in VS Code: not git-specific, but it gives specific advice on using version control in VSCode (there’s a video version if you’re into that sort of thing)

  • using git reset: sometimes useful for “undoing” git stuff you don’t actually want

  • Five Key Git Concepts Explained the Hard Way: this has some detailed explanations, so it won’t make sense if you’ve never seen git before, but understanding this stuff in depth will really help you become a git master


What’s markdown?

From the commonmark website:

Markdown is a simple way to format text that looks great on any device. It doesn’t do anything fancy like change the font size, color, or type — just the essentials, using keyboard symbols you already know.

How do I write markdown?

Anytime you open a file in VSCode with a .md or .markdown file extension it’ll automatically detect that it’s a markdown file, and give you special highlighting of bold/italics/headings etc. You just write it and save it (and commit it to Git) just like any other file.

Is there a nice, gentle markdown tutorial somewhere?

There is indeed. Thanks, internet :)


What’s YAML?

It’s a structured file format, like csv or json or xml or many others that you’ve seen before.

Where can I learn the YAML syntax?

There’s really not very much syntax, so you’ll probably be able to figure it out as you go along (we’ll always provide a template to get you started). Still, here are a couple of good resources:

If you find any more helpful resources then let me know and I’ll add them to the list.

What are some common YAML “gotchas”?

  • not leaving a space between the key and the value
bad:no space

good: there's a space here
  • using a colon inside a string, e.g. in a url
bad_url: https://www.google.com.au/

# note the quote marks
good_url: "https://www.google.com.au/"
  • getting the indentation wrong
  - one
    - two
 - sevenish

  - one
  - two
  - sevenish

How can I check if my YAML file is valid?

There are a bunch of online YAML validators which can help you out here, e.g. https://yamlvalidator.com/. Copy-paste the contents of your file in there and see what it says.

Why is there so much YAML in this course?

Whenever you’re asked to edit & submit a yaml file as part of your lab/assignment submission it’s because we want some specific information from you. We could just get you to write it free-form in a text file, but then you might get confused about exactly what info you’re supposed to provide, and in what format.

By using a structured data format like YAML, you can check (validate) the information (using the provided YAML plugin for VSCode) on the fly—before you even push your code. For example, you’ll sometimes have to tell us your uni ID as part of your submission. We could just say “put your uni ID at the top of the file, you’ll lose marks if it’s incorrect/not present”. Or, we can have you enter it in a YAML file which is validated to check that it’s correct. So if you put:

uid: u12546548 # whoops! too many numbers!

you’ll get an error right there in VSCode (which you can fix straight away) rather than getting marked down for incorrect information on your assignment. Pretty cool, huh?

Ok, so structured data is good, but why YAML specifically?

All structured data formats suck, but some less than others. YAML is a pretty nice balance between human and machine writeability. This is important - to ensure that we validate the feedback files it’s necessary to process them and extract structured data.

Markdown is really nice for writeability, but parsing it results in a bunch of hacks and ad-hoc rules. Json & csv are nice for machine-readability, but pretty crappy for human writeability. YAML is a nice balance (and there’s editor support for validation in most text editors).

What does YAML stand for?

I reckon your Google-fu is probably strong enough to figure that out for yourself :)

Academic integrity

Can I use code I didn’t write myself in my assignment submission?

Yes, unless the assignment page forbids it. But you must reference it in your statement of originality—if you don’t, that’s academic misconduct (and neither of us want that).

For more details, see the instructions on filling out your statement of originality.

Will my submission be run though plagiarism detection software?


What happens if I’m suspected of academic misconduct?

If you’re suspected of academic misconduct, for example if there’s some code in your assignment which is identical to some code from somewhere else (e.g. another student’s submission or code from the internet) that you have not referenced in your statement of originality, then there’s a formal process which we have to follow:

  1. you’ll receive a “Potential Academic Misconduct” email—this is a template email that we are required to send in this situation

  2. (optional) you’ll get an opportunity to meet with the course convenor (in this course, that’s Ben) to explain why your code is the same/similar to code found on the internet (or whatever your particular situation is)

  3. the convenor will make a decision and inform you via email of the decision and any follow-up steps required

I’ve received a “Potential Academic Misconduct” email—what do I do?

You should read the full email carefully—it’s got all the details, including the proposed time for the meeting.

Receiving this email doesn’t mean that you’ve been found guilty of academic misconduct—maybe there’s an innocent explanation. You will get the chance to meet with the convenor to explain your situation. If you can’t attend the meeting, you’ll get a chance to explain the situation via email.

However, if you want to argue that there’s been a mistake (and that you’re not guilty of the academic misconduct charge) then you need to make a strong case. If your code is exactly the same as another student’s code (or some code from the internet) then “I’ve never seen that code before” isn’t a likely explanation. If your code is mostly the same but a few bits have been re-arranged/changed (e.g. variable names) then that’s even more suspicious, and you’ll need to have a good explanation for why this has happened.

I did plagiarise some code/words/assets, what can I do?

If you did take code or assets from somewhere else without attribution then the best thing you can do is admit it, apologise, take the punishment and make sure you never do it again. Apologising isn’t a magic “get out of jail card”, but it does make it more likely that you’ll received the lesser charge of poor academic practice rather than the more serious academic misconduct.

Why is the email so formal-sounding?

As described above, there’s a formal template for these emails. We’re required by the ANU to send an email which looks like that.

What should I say in the “Potential Academic Conduct” meeting?

If you have used someone else’s code or other assets (without acknowledging it in your SoO) then the best thing to do is to come clean and admit it.

If, however, there is nothing in your submission which isn’t yours (or is explicitly acknowledged in your SoO) then your job in the meeting is to answer the question: why is your code the same or similar to someone else’s code?.

Here are a few answers which are not satisfactory:

  1. “I don’t know why it’s the same”
  2. “it’s a coincidence”
  3. “I worked with my classmate/found some code on the internet/etc. but I forgot to reference it”
  4. “I’m sure I referenced it, I don’t know why it’s not listed in my statement of originality”
  5. “my classmate must have copied off me without my knowledge”
  6. “I didn’t know it wasn’t allowed”
  7. “I understand how the code works, so it’s not plagiarism”
  8. “I’m an honest person, I’d never cheat!”
  9. “it’s only a few lines of code, it’s no big deal”

If you don’t have a good answer to the question then you’re unlikely to convince anyone that you’re not guilty of academic misconduct.

I was disorganised and ran out of time to fill out my statement of originality; can I email it to you now?

No, for three reasons:

  1. the course policy is really clear that the SoO is part of your submission, and you can’t submit it after the deadline any more than you can submit a late assignment

  2. there’s no way for us to know if you did genuinely forget or if you tried to get away with it and are just claiming that you forgot because you were caught

  3. it’s not fair to all the other students—the rules were really clear, and they took the time (which they could have spent on other assignments) to follow the rules. As with any other assessment item at university it’s up to you to manage your time and make sure that these things get done properly

However, if this is what happened, it’s still good to tell the truth, because that will work in your favour when it comes to determine whether it’s a case of poor academic practice (rather than the more serious academic misconduct).

I’m an honest person, this whole thing is really unfair—why do I have to go through it?

A charge of potential academic misconduct is never made lightly. If you get one of these emails it means that there is some specific evidence which suggests that you’ve done something wrong.

The purpose of this process is not to discuss your character in general, it’s only about this specific incident. So you need to focus on answering the question above: why is your code the same or similar to someone else’s code?.

Don’t come in saying things like “I’m insulted that you’d even accuse me of this…”, that’s just a general statement about your character (and that’s not what’s on trial in this process). Instead, you need to discuss the specific evidence in your case. We really hope there’s an innocent explanation for what’s happened, but the case will be decided based on the evidence (including any new evidence you can provide in the meeting).

What if I can’t attend the proposed meeting time (e.g. if I’m out of the country)?

If you can’t attend the meeting in person, then you can either:

  1. suggest an alternate time (must be within a couple of days of the suggested time—you can’t postpone the meeting for a month or more)

  2. submit your response via email

  3. (perhaps) conduct the meeting over Skype

All of these other options are only possible if they are suitable for the course convenor.

Do I have to attend the meeting?

No, you don’t have to even respond to the email. If you don’t, then the convenor will make a decision based on the evidence they have available.

What are the possible outcomes from a “Potential Academic Misconduct” email & meeting?

The possible findings from the convenor are:

  • no breach has occurred
  • poor academic practice (PAP) has occurred
  • it appears to be more serious than poor academic practice, and could potentially be academic misconduct (in this case the convenor doesn’t make the decision, it is referred to the registrar who will make the final decision)

What’s the difference between poor academic practice and academic misconduct?

The main difference between poor academic practice (PAP) and academic misconduct (AM) is that AM is a more serious breach of the academic integrity rules. Usually, a PAP finding results in an academic penalty for the assessment item (depending on the severity of the breach) while an AM finding would usually result in a grade of 0 for the entire course. However, all of the penalties are determined on a case-by-case basis.

The ANU website has more information on what counts as PAP vs AM.

One final point to make is that you don’t automatically get a PAP (rather than AM) finding if it’s your first offence. For example (from Grounds for potential academic misconduct) if

the student’s explanation is inconsistent with other compelling evidence (e.g. the student denies copying even though the assessment item contains material that is clearly copied from another identified source)

then this can be a reason for a finding of Academic Misconduct, even for a first offence.

What is the penalty if I’m found guilty of Poor Academic Practice (PAP)?

It depends on a bunch of things; whether you admit it and apologise, whether it looks like you tried to hide the fact that you were using someone else’s code (e.g. by changing variable names), whether it’s just one line or a whole function/class, etc. While the penalty for PAP is usually to get zero for that assessment item, there’s no mathematical formula—the penalty will be determined by the convenor on a case-by-base basis.

But I just forgot to reference that one thing, why am I still guilty of academic misconduct?

Because that’s what you already claimed in your Statement of Originality, which says right at the top:

I declare that everything I have submitted in this assignment is entirely my own work, with the following exceptions:

When you submitted your work with that statement you told us that everything else in your submission was yours.

This is the reason why there are so many reminders about the importance of acknowledging other people’s work in your SoO (and also so many reminders about checking and double-checking that everything has been submitted to GitLab). It sucks to receive the penalty for just forgetting to do something, but I really do feel like this course goes above and beyond to warn you of your obligations in referencing other people’s work.

Can I appeal the decision?

You can appeal any academic misconduct finding (although again, you’ll need to make a strong case why you feel there’s been a miscarriage of justice). Information on how to appeal will be in the email you receive notifying you of the finding.

Ben, do you enjoy dealing with academic misconduct cases?

No, I really don’t. It’s not fun to see students stressed out, it’s a whole bunch of paperwork, and it also makes me sad for the other students who did do the right thing (since I could be using that time & energy to help them out).

So make sure you correctly reference everything which isn’t yours in your statement of originality and you won’t have to worry about any of this stuff.

Statement of originality (SoO)

How do I fill out my statement-of-originality.yml?

As discussed in the course academic integrity policy, for every assignment you must submit a statement of originality (SoO) in the form of a YAML file called statement-of-originality.yml in your submission repo. There will be a “template” file in the assignment repo, you just need to add your own information (and commit and push it up)

Make sure you read the file so that you know what you’re committing to! If you’ve collaborated with a classmate or used some code written by someone else (e.g. from one of the COMP1720 lab “break it down” sections, StackOverflow, the p5 examples page, OpenProcessing, Dan Shiffman’s videos, or any other place) then you must acknowledge it in your SoO. Anything which isn’t explicitly listed there is assumed to be your own work, and if it turns out that’s not true, the usual academic integrity rules apply.

Do I have to be specific about which files I’ve copied/taken inspiration from?

Yes. It’s not enough to say “I found some inspiration from OpenProcessing” or something equally vague—if you don’t indicate specifically the things you’ve used (with an author and title if it’s a book, a URL if it’s an online code resource or video, or a full name if it’s a classmate/other person).

If that specific information for a source isn’t in your statement of originality, then we’ll assume you haven’t used that source in any way.

See below for an example of how to fill out your statement of originality.

What if base my submission on someone else’s code, but I’ve made changes?

You must credit the original author in your SoO, even if you’ve made non-trivial changes. Otherwise, it’s still plagiarism—even though you’ve done some of your own work as well.

Do I have to reference images/music/words/videos from the internet as well as code?

Yes, of course! That’s why there’s an assets section in the Statement of Originality (see example below). The whole point of the SoO is that you’re claiming that everything in your major project is your own original work except for the things you explicitly list in the SoO.

What happens if I don’t change the SoO file from the version in the template?

We’ll assume that everything is your own work, and you’ll receive a small (10%) penalty for your overall assignment mark.

You really need to fill out your SoO correctly—it’s not fun to be involved in a plagiarism case because you ran out of time/forgot to fill out your SoO.

I’m having problems getting my head around this YAML stuff, what should I do?

It’s ok—you’ll get the hang of it. Read the YAML section in the FAQ, and ask a question on the forum if you’re still stuck.

Can I see an example of a completed SoO?


# put *your* name and uid here
name: Ben Swift
uid: u2548636

declaration: >-
  I declare that everything I have submitted in this assignment is entirely my
  own work, with the following exceptions:

# add as many "name+comment" entries as necessary
# (or remove it altogether if you haven't collaborated with anyone)
  - name: Alice McGuffin
    comment: >-
      Alice gave me some ideas for creating the animated ripple effect
      in the background , but I never saw her assignment code
  - name: Jerry Wang
    comment: >-
      Jerry painted the background artwork for my sketch

# add as many "url+licence+comment" entries as necessary
# (or remove it altogether if you haven't used any external code)
  - comment: the code in my "drawRandomImage" function is based on some code from StackOverflow
    url: "https://stackoverflow.com/questions/51233447/p5js-image-array"
    licence: CC BY-SA 2.5 # this is the standard StackOverflow licence

# add as many "url+licence+comment" entries as necessary
# (or remove it altogether if you haven't used any external assets)
  - comment: photo of potatoes by Scott Bauer
    url: "https://en.wikipedia.org/wiki/Potato#/media/File:Patates.jpg"
    licence: Public Domain
  - comment: boat photo by Aaron Wu on Unsplash
    url: "https://unsplash.com/photos/_8rjlHwN4uk"
    licence: "https://unsplash.com/license"

The final marks & grades are out, and…

…I got a DA grade

A DA grade means Deferred Assessment, which probably means that you were sick (with a medical certificate or other legit reason) for the final exam.

…I got a PX grade

As stated on the policies page:

If you receive a PX grade you are eligible for supplementary assessment. The assessment item may be an assignment, a written exam, an in-lab test, or an oral exam. If you pass this supplementary assessment item you will receive a PS grade and a mark of 50. If you fail, you will receive a grade of N and a mark of 44.

In many courses, the supplementary assessment is another exam. However, COMP1720 is not most courses. For example, if you did ok on the final exam but your major project wasn’t up to scratch, then you might be required to re-submit your major project as your supplementary assessment. Your supplementary assessment might be different to another student’s—it depends on what you need to do to demonstrate you’ve achieved the course learning outcomes.

You will receive an email from the convenor shortly with more instructions—including what your specific supplementary assessment task is, what the deadlines & process is, etc.

…I got an NCN grade

This means that either you enrolled in the course, but didn’t participate in the course at all.

More information on the policies page.

…I’ve failed—is my weekend/semester/degree/life ruined?

I (Ben) have failed courses in the past—it’s not the end of the world. Take it as a chance to come back again next year and really nail this stuff. And you can still keep your discoboard.

However, you should also talk to student services (either via email or by visiting the office on Level 2 of the CSIT building) about structuring your courses around taking COMP1720 again next year. Again, it’s no big deal, but the earlier you start planning, the better.

…I’m not happy with my mark

We work really hard to make sure the course grades are a fair reflection of your performance in the course and your attainment of the learning outcomes.

First, remember that grades aren’t everything, and (I hope) you’ll remember the things you learned in this course long after you’ve forgotten your marks.

There is an official ANU process for assessment appeals, see that page for more information. The tl;dr is that first you get in touch with the convenor as per the course’s appeals policy, and if you’re not happy with how that goes you can escalate it to a formal appeal.

It’s important to be clear that the purpose of the appeals process is to correct serious miscarriages of justice in the grading process—it’s not an opportunity to quibble about the marking of a certain question on the exam and try and get a couple of extra points. Again, it’s not that Ben doesn’t care about your learning (he does!) but he’s trying his hardest to be fair to all students, and so he won’t just give extra marks because you ask for them.

Note that appeals may take some time to resolve (potentially sometime in S1 next year). I know that you might be frustrated, but whatever the outcome I’d ask for your patience during this process (unless you’re graduating in July 2018 there’s no huge rush on getting marks/grades changed if that is the outcome).

  1. I actually think that all COMP1720 lectures are more fun than regular lectures, but I’ll let you judge that for yourself. 

  2. hopefully. 

  3. We’ll try really hard—but in large classes it’s not always possible to hit this two week deadline. 

  4. The “master” part of the master-feedback branch name is because your submission was pushed to the master branch. Some assignments require you to submit your work on multiple branches, and so this naming convention helps you differentiate between the feedback on different branches if this is the case. 

Updated:  17 Dec 2018/ Responsible Officer:  Head of School/ Page Contact:  Ben Swift /Licence:  CC BY-NC-SA 4.0