# FAQ

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

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

### I want to enrol, but I’m waiting on the result of a supplementary exam—what should I do?

You need to get in touch with the lecturer as soon as possible. If you do this before the course starts (or perhaps in week 1) then we are willing to give you temporary access to the course materials, etc. so that you can participate in the course as normal. If you don’t end up passing the supplementary exam for one of the prerequisite courses, then you can unenroll in this course before the census date without having to pay any fees.

If you don’t let us know about the situation until later in the course (i.e. from week 2 onwards) then even if you do pass your supp. exam it’s too late to enrol in COMP2300. You’ll start too far behind, and it’s not fair to you or the other students to put you in that difficult and stressful position. You can always take the course next year.

### 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!)

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

## Discoboard

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

### Can I have another discoboard?

If you want another discoboard to give one to a loved one as a present (or any other reason) then you can purchase it on the internet using money. They’re not that expensive—probably around 40AUD+shipping.

You can get them from these places (or others—just make sure you’ve got the correct model, because ST actually make a few different discoboards).

### I’ve lost my discoboard—what do I do?

If you lose your discoboard it’s your responsibility to get another one. So be careful!

## Lectures

### Where are the lectures held?

The venues are listed on the lecutres page.

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

### 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 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).

## Labs

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

### 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).

Unfortunately, the lab groups are almost all full by now, and I can only squeeze people in wherever there’s room.

If you’re not in a lab group, you need to email Ben with a list of 3 lab times that you could possibly attend. I can’t make any promises (you might have to just go in whatever lab slot is left) but I’ll try and fit you in to at least one of the three that you send through.

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

I can’t move you into that 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 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.

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

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

### Can I attend a different lab session?

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

## Software

### Can I use my own laptop/desktop machine?

Yep, you can, although make sure you’ve read the course “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.

If you’re looking for help, then the CSSA runs InstallFest in N101 on Monday 5th March, 6-11pm, which is a great place to get help for this stuff. Also, ask your labmates—getting help setting up the software environment is the one thing where you don’t have to worry about plagiarism stuff.

Finally, there’s always Piazza, although when you ask on Piazza 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. 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.

## git

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

Anyway, you’re doing a Computer Science course so it’s not unreasonable to expect you to use standard Computer Science tools. Git version control is taught in COMP1100 (one of the main prerequisites for this course), and we mentioned in the first lecture that it was expected background knowledge for this course.

### 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 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).

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
• 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

## YAML

### 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

• getting the indentation wrong
bad_array:
- one
- two
- sevenish

good_array:
- 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 :)

### 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

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

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

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

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. I worked with my classmate/found some code on the internet/etc. but I forgot to reference it
4. my classmate must have copied off me without my knowledge
5. I didn’t know it wasn’t allowed
6. I understand how the code works, so it’s not plagiarism
7. 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)

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

The deferred assessment for students in this situation will be a 3hr written exam (covering the same topics as the regular final exam, but with different questions) early in Sememster 2.

For details about when & where this exam will be held, see the final exam page.

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

The supplementary exam for this course will be a written exam (15mins reading, 90mins writing).

For more details, see the final exam page.

### …I got an NCN grade

This means that either:

1. you enrolled in the course, but didn’t participate in the course at all
2. you failed one of the hurdles and your final mark was lower that 45

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

Yep.

### …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 S2). 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).

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