"Computer Systems: A Programmer's Perspective" 3rd edition, R.E. Bryant and D.R. O'Hallaron, Pearson 2015.
You are required to purchase a copy of the unit text and read the set sections each week.
"The C Programming Language" 2nd edition, Brian W Kernighan and Dennis M Ritchie, Prentice-Hall 1988.
This small book is the classic reference on C programming.
iLearn Web Site
All learning materials will be published on iLearn including lecture slides, practical tasks and tutorial questions.
You are required to check the iLearn website at least once a week to ensure that you are aware of the latest materials available there.
Lectures are a core learning experience where we will discuss the theoretical underpinnings and concepts that are essential to this unit. Key ideas for the practical assignments will be discussed from time to time in lectures. Attendance at lectures is not required but is highly recommended. Lectures will be recorded on echo360 but some lectures will include interactive components that may not be adequately captured by a recording.
Each week you should prepare your solutions to the set tutorial questions and attend your enrolled workshop. Workshops provide an opportunity to ask specific questions related to any aspect of the unit: the lecture content, the practical tasks and the set tutorial questions.
Workshops provide an opportunity for you to develop your skills in systems programming and your understanding of the key concepts of the unit. Practical work will consist of set assignment tasks, each of approximately 4 weeks duration, which are assessed and contribute to your final mark. The assessment criteria for each practical assignment will be explained in the asignment specification along with the due date. The assignments will be posted on iLearn.
Your practical demonstrator will provide you with individual assistance and may also from time to time address the entire class to provide useful information to assist with the practical assignment.
The practical assignments are set as individual work and each one is personalised for a particular student. The University's academic honesty policy will be enforced. You may assist your fellow students with general concepts, pointers to resources and useful tools or commands. You may not become involved in any way in helping a fellow student to find the solution to their particular assignment, nor may you share with them any aspect of the solution of your particular assignment. Each practical assignment will include specific instructions to help you understand what is acceptable and what is not.
Each practical assignment must be the sole work of the student turning it in. Any cheating will be handled under the University's Academic Honesty Policy.
The following are guidelines on what collaboration is allowed for laboratory exercises and what is not [adapted from CS:APP website]
What is Cheating?
- Sharing code or other electronic files: either by copying, retyping, looking at, or supplying a copy of a file from this or a previous semester. Be sure to store your work in protected directories, and log off when you leave any lab computer, to prevent others from copying your work without your explicit assistance. Don't use a public repository (such as github) for your assignment files.
- Sharing written assignments, quizzes or exams: Looking at, copying, or supplying an assignment, quiz or exam.
- Using other's code: Using code that you did not write yourself. You may not use code from courses at other institutions, or from any other non-202 source (e.g., software found on the Internet). You may, however, use Internet and other sources to learn useful concepts, ideas, and programming idioms. If you find helpful ideas on the Internet or in other sources, you should acknowledge them in comments in your code. For Internet sources, a URL is sufficient acknowledgement.
- Looking at other's code. Although mentioned above, it bears repeating. Looking at other students' code or allowing others to look at yours is cheating. There is no notion of looking ''too much,'' since no looking is allowed at all.
What is NOT Cheating?
- Clarifying ambiguities or vague points in class handouts or textbooks.
- Helping others use the computer systems, networks, compilers, debuggers, profilers, or other system facilities.
- Helping others with high-level design issues.
- Helping others with high-level (not code-based) debugging techniques.
- Using code from the CS:APP website or from the class Web pages.
- Learning programming idioms and techniques from examples.
- Reading Unix manual pages, forums, etc in order to find out how to perform particular tasks (e.g. set a breakpoint in a debugger) or use programming language/library features (such as printf).
- Asking for help from the practical demonstrator, tutor or lecturer.
Be sure to store your work in protected directories, and log off when you leave any lab computer, to prevent others from copying your work without your explicit assistance.
A forum for unit discussions is provided on iLearn. Students are free to post questions, comments or hints in relation to any aspect of the unit, except that you should avoid posting any questions, hints, comments or solutions that could be interpreted as cheating (see Workshops, above).
If you see a post fom another student that appears to be cheating, please notify your demonstrator, tutor or the lecturer as soon as possible and we will remove the offending post.