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

Getting started

What’s expected of me in this course?

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

  1. watch & ask questions on Piazza

  2. read the weekly lab material ahead of time, and attend your scheduled lab session

  3. start the assignments early

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

It’s really important to attend the labs. If you’re struggling later on in the course (or if you’re unhappy with e.g. your assignment marks) but you haven’t been attending your lab group, then you’ve only got yourself to blame.

I don’t meet the course prerequisites—can I have a permission code to enrol anyway?

In general, prerequisites are there for a reason, and you certainly won’t get a permission code just because you ask for one. “I need to finish my degree by date” also isn’t a valid reason: in fact if you take this course without the required background knowledge and fail it (a definite possiblity!) then you’ll be even further behing in your completion plans.

However, in some situations you might be eligible for a permission code. You need to email Ben and explain:

  1. why you think you already have the required knowledge for the missing prerequisite course (perhaps you’ve done a similar course, or perhaps you can point to some other reason that you believe you satisfy the prerequisites)

  2. that you understand that it’s your responsibility to catch up—if you fall behind (and fail) because you don’t know the prerequisite material then it’s on you—you’ve been warned

If you can’t answer those questions, then you won’t get a permission code. If you do get a permission code, it’s up to you to make sure you do the extra work to catch up on any background knowledge you might have missed.

Remember that there’s an hurdle oral exam in week 4, so if you do ask for (and receive) a permission code then you’ll need to make sure you can pass that assessment task (otherwise you’ll fail the course).

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

Here’s a checklist:

  1. make sure you can log in to the Piazza forum (let me know 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

Why do you keep calling it COMP2300 when I’m in COMP6300?

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

Why isn’t there much stuff up on this website at the start of the course?

The web content (e.g. lecture notes labs and assignments will go up as the course progresses. So you really need to bookmark the course website and check it regularly.

If there’s any information on this website which is confusing, then let us know on Piazza and we can update it.

Is there a textbook for this course?

There’s no set text for this course, but there’s a list of good resources (some textbooks, some online) listed here.

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.


Is the discoboard mine to keep? For reals?

Yep, for reals. The only catch is that if you unenroll before census date you have to give it back.

If you want to give one to a loved one as a present, then they’re not that expensive—probably around 40AUD+shipping. You can get them from Digikey, or other places.


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.

Where are the lectures held?

The venues are listed on the lecutres page.

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 COMP2300 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 COMP2300 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.

Is Uwe co-teaching the course in 2018?

It was a blast to have Uwe as a co-lecturer in 2017, and I (Ben) really enjoyed being able to tag-team with him in giving lectures. Especially because he did the “boring” stuff so I could focus on writing & performing songs for you guys about ARM assembly programming.

Sadly, Uwe wears many other hats in the Research School of Computer Science, and he can’t be present in this course to quite the same degree in 2018. However, he’ll still pop into lectures from time to time (so make sure you attend).


Why do labs start in week 1?

The first lab is pretty gentle, it’s mostly a chance for you to meet your tutor, pick up your discoboard, and plug everything in to see if it works. You don’t have to have attended the first lecture to do the first lab—which is a good thing because the first lab happens before the first lecture anyway.

How do I sign up for labs?

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

Why did lab signup open before the start of week 1?

The short answer: because the first lab starts at 8am on Monday morning (before the first lecture).

This was a balance between not opening too early (disadvantaging students who sign up late) and opening too late (disadvantaging students who don’t have time to sign up for the earlier labs).

I can’t get into my preferred lab group—what do I do?

This is always a problem, for every course. We’ll try really hard to fit you in, but sometimes you might have to shift some other things around to make sure you can attend a lab time. There’s a good spread of times available (including a couple of late-afternoon ones if you’re studying part-time and work during the day) so make sure you’re ready to go at sign-up time.

Why isn’t COMP2300/6300 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.

What do I do if I missed the week 1 lab?

Don’t just attend any other lab—they’re all going to be really full as it is. Instead, I’ll organise a week 1 “board pickup session” (date/time/location TBC) where you can at least pick up your discoboard (although you’ll have to work through the lab material on your own).

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.

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

I realise that the lab schedule this year has a lot of 8am starts (not good for early-birds) and a bunch of 11am-2pm slots as well (hard to have lunch). 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.

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 regularly. It’s probably even more important than attending the lectures, since at least 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.

Can I attend a different lab session?

You must turn up to your own lab session—these aren’t “drop-in” labs. 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.

Course website

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 Piazza 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 Piazza—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.


Can I use my own laptop/desktop machine?

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

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

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

How will my assignments be marked?

On Ubuntu Linux, using the CSIT lab image, based on a fresh clone of your GitLab submission repo. See the course’s “own machine” policy for more info.

Can I use a different compiler/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.


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.

Am I expected to know how to use git for this course?

Yes—git & GitLab have been covered in the course pre-requisites (COMP1100 if you’re an undergraduate student, and your UG degree if you’re a postgraduate student). We’ll be using it a lot, and although the lab content will give you some help & tips where appropriate we’ll expect you to know what you’re doing.

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. And anyway, you’re doing a Computer Science course so it’s not unreasonable to expect you to use standard Computer Science tools.

Everything’s stuffed! I hate git.

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 Piazza.

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 Piazza then make sure you clearly state what the situation is, what behaviour you expect, and what behaviour you see (including any error messages).

I’ll also keep a list 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:


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.

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 misconduct

What happens if I’m suspected of academic misconduct?

If you’re suspected of academic misconduct, for example if there’s code in your assignment from another student or from the internet that you haven’t 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 an ANU-wide 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?

This doesn’t mean that you’ve been found guilty of academic misconduct—maybe there’s an innocent explanation. That’s why you get the chance to meet with the convenor to explain your situation.

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. Also, 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.

Ultimately, you need 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. my classmate must have copied off me without my knowledge
  4. I didn’t know it wasn’t allowed
  5. 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.

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 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 give the student 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 AM even for a first offence.

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.

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

If you did take code from somewhere else without attribution (or whatever the particular charge of academic misconduct is) 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.

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 attribute everything which isn’t yours in your statement of originality and you won’t have to worry about any of this stuff :)

The final marks & grades are out, and…

…I got a PX grade

As stated on the policies:

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.

…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.

Finally, there is an official ANU process for assessment appeals, see that page for more information. Note that any appeals will take some time to resolve (potentially sometime in S2).

…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 COMP2300 again next year. Again, it’s no big deal, but the earlier you start planning, the better.

Updated:  20 Feb 2018/ Responsible Officer:  Head of School/ Page Contact:  Ben Swift