- Class Number 5273
- Term Code 3360
- Class Info
- Unit Value 6 units
- Mode of Delivery In Person
- Shoaib Akram
- Prof Tony Hosking
- Class Dates
- Class Start Date 24/07/2023
- Class End Date 27/10/2023
- Census Date 31/08/2023
- Last Date to Enrol 31/07/2023
This course is based on the foundations set by the previous course on computer organisation. It expands particularly into all forms of concurrent programming including aspects of massively parallel programming.
This course introduces all basic mechanisms to analyse, design, and manage concurrent, single computer-node (multicore) as well as distributed applications (e.g. as performance or dependability enhancements).
Following on from the previous course, the fields of operating systems and networking will also be expanded on. On the operating system side aspects of security, scheduling algorithms and memory management are discussed. More specific networking aspects follow on from message passing as a core concurrency construct. These include the basics of routing and dependable protocols.
Upon successful completion, students will have the knowledge and skills to:
- Model, design and program concurrent systems.
- Select appropriate modeling techniques, tools and mechanisms to solve a range of problems in concurrent and distributed systems. This includes the appropriate programming language and runtime environment for the task at hand.
- Analyse and debug concurrent programs.
- Understand the aspects of an operating system concerning scheduling, protection and memory management.
- Employ message passing locally and over networks to construct distributed systems
- Distinguish as well as connect conceptual concurrency with physical parallelism at all levels of a distributed system.
- Identify core aspects of operating systems and networks irrespective of the specific system at hand.
- Reflect critically on current concurrent and distributed systems tools and their limitations.
This course will give students the background and understanding to understand, and serves as a pathway to, research in computer systems.
Textbook: Computer Systems: A Programmer's Perspective, Randal Bryant and David O'Halloran, 3rd edition, ISBN 978-9332573901.
Reference: Effective C: An Introduction to Professional C Programming, Robert C. Seacord, ISBN 978-1718501041
Whether you are on campus or studying online, there are a variety of online platforms you will use to participate in your study program. These could include videos for lectures and other instruction, two-way video conferencing for interactive learning, email and other messaging tools for communication, interactive web apps for formative and collaborative activities, print and/or photo/scan for handwritten work and drawings, and home-based assessment.
ANU outlines recommended student system requirements to ensure you are able to participate fully in your learning. Other information is also available about the various Learning Platforms you may use.
Students will be given feedback in the following forms in this course:
- written comments
- verbal comments
- feedback to whole class, groups, individuals, focus group etc
ANU is committed to the demonstration of educational excellence and regularly seeks feedback from students. Students are encouraged to offer feedback directly to their Course Convener or through their College and Course representatives (if applicable). Feedback can also be provided to Course Conveners and teachers via the Student Experience of Learning & Teaching (SELT) feedback program. SELT surveys are confidential and also provide the Colleges and ANU Executive with opportunities to recognise excellent teaching, and opportunities for improvement.
|Week/Session||Summary of Activities||Assessment|
|1||Introduction to computer systems. Modern computing abstraction/transformation hierarchy. Anatomy of a modern computer system with support and need for concurrency, parallelism, and networking. Machine level representation of x86 programs. Control flow. Procedures. Arrays and array indexing. Structs. Alignment. C to x86 assembly. Debugging programs with GDB.|
|2||Compiler optimizations. Limitations of optimizing compilers. Measuring the performance of programs. Understanding modern processors. Exploiting parallelism.|
|3||Memory hierarchy. Storage technologies. Disk and NAND Flash organization. Locality and its exploitation. Writing programs for modern cache hierarchies. Virtual memory. Address spaces. Address translation. Memory mapping and memory mapped I/O.|
|4||Basics of linking. Static and dynamic linking. Object files and their formats. Shared libraries. Position-Independent code. Processes and threads. Execution environment. Using fork and execve to run programs||Assignment 1 is released|
|5||Dynamic memory allocation. The malloc and free functions. Allocator design and implementation. Understanding and handling fragmentation. Free list design. Allocator optimizations.|
|6||Automatic memory management and garbage collection. Mark-sweep and mark-compact collectors. Frameworks for implementing modern garbage collectors. Read and write barrier design. Concurrent collectors.|
|7||System-level I/O. Unix I/O and files. Opening and closing and manipulating files. Reading file meta-data. File sharing. Standard I/O||Assignment 1 is due|
|8||The OS buffer cache. Buffered and direct I/O. Writing programs for sequential I/O. Performance implications of random I/O.|
|9||Concurrent programming with processes and threads. Synchronization primitives. Hardware and software support for writing concurrent programs. Mutexes and semaphores.||Assignment 2 is released|
|10||Introduction to networking. The client-server programming model. The Global IP internet. The Socket interface. Web servers|
|11||Introduction to the Rust programming language. Rust memory management. Concurrency in Rust.||Assignment 2 is due|
|12||Advanced topics (optional)|
ANU utilises MyTimetable to enable students to view the timetable for their enrolled courses, browse, then self-allocate to small teaching activities / tutorials so they can better plan their time. Find out more on the Timetable webpage.
|Assessment task||Value||Due Date||Learning Outcomes|
|C Checkpoint||5 %||11/08/2023||1,2|
|Assignment 1: Memory Allocator||20 %||*||1,2,3,4,8|
|Assignment 2: Web Proxy||20 %||*||1,2,3,4,5,6,8|
|Quiz 1: Lab 4||3 %||*||1,2,3,4,8|
|Quiz 2: Lab 7||3 %||*||1,2,3,4,5,6,8|
|Checkpoint 2: Concurrency||5 %||*||1,2,3,4,5,6,7,8|
|Final Exam||45 %||*||1,2,3,4,5,6,7,8|
* If the Due Date and Return of Assessment date are blank, see the Assessment Tab for specific Assessment Task details
ANU has educational policies, procedures and guidelines , which are designed to ensure that staff and students are aware of the University’s academic standards, and implement them. Students are expected to have read the Academic Integrity Rule before the commencement of their course. Other key policies and guidelines include:
- Academic Integrity Policy and Procedure
- Student Assessment (Coursework) Policy and Procedure
- Special Assessment Consideration Guideline and General Information
- Student Surveys and Evaluations
- Deferred Examinations
- Student Complaint Resolution Policy and Procedure
- Code of practice for teaching and learning
The ANU is using Turnitin to enhance student citation and referencing techniques, and to assess assignment submissions as a component of the University's approach to managing Academic Integrity. For additional information regarding Turnitin please visit the Academic Skills website. In rare cases where online submission using Turnitin software is not technically possible; or where not using Turnitin software has been justified by the Course Convener and approved by the Associate Dean (Education) on the basis of the teaching model being employed; students shall submit assessment online via ‘Wattle’ outside of Turnitin, or failing that in hard copy, or through a combination of submission methods as approved by the Associate Dean (Education). The submission method is detailed below.
Moderation of Assessment
Marks that are allocated during Semester are to be considered provisional until formalised by the College examiners meeting at the end of each Semester. If appropriate, some moderation of marks might be applied prior to final results being released.
While not mandatory, we strongly recommend that you attend all the lab sessions. In the lab sessions, you will get hands-on help in applying the concepts we cover in the lectures. They also provide a chance to get to know your tutors and get feedback on in-progress assignment submissions.
Every lab has various “exercises” which you should do on your machine and push up to GitLab. Not all lab submissions contribute to your final grade, however, you are expected to push your work to GitLab so that the tutors can see your progress and give you feedback. If you do not engage with the lab material by submitting the lab exercises, then you seriously weaken your case if you want last-minute help with assignments.
Material from labs will be assessed in checkpoints, quizzes, and assignments.
Final exam is comprehensive on all course material.
Assessment Task 1
Learning Outcomes: 1,2
Covers x86 and C labs.
Assessment Task 2
Learning Outcomes: 1,2,3,4,8
Assignment 1: Memory Allocator
Implement a memory allocator, which allows users to malloc() and free() memory as needed. Their allocator will request large chunks of memory from the OS, and efficiently manage all the bookkeeping and memory.
Assessment Task 3
Learning Outcomes: 1,2,3,4,5,6,8
Assignment 2: Web Proxy
Implement a Web proxy.
Assessment Task 4
Learning Outcomes: 1,2,3,4,8
Quiz 1: Lab 4
Comes after lab 4, mostly covers contents of lab 4 and lecture content to that point.
Assessment Task 5
Learning Outcomes: 1,2,3,4,5,6,8
Quiz 2: Lab 7
Comes after lab 7, mostly covers contents of lab 7 (mmio) and lecture content to that point on storage devices.
Assessment Task 6
Learning Outcomes: 1,2,3,4,5,6,7,8
Checkpoint 2: Concurrency
Comes after concurrency labs at end of week 9.
Assessment Task 7
Learning Outcomes: 1,2,3,4,5,6,7,8
There is only one examination in this course. The final exam will be held during the exam period. It is comprehensive covering all content of the course: lectures, labs, assignments.
Academic integrity is a core part of the ANU culture as a community of scholars. The University’s students are an integral part of that community. The academic integrity principle commits all students to engage in academic work in ways that are consistent with, and actively support, academic integrity, and to uphold this commitment by behaving honestly, responsibly and ethically, and with respect and fairness, in scholarly practice.
The University expects all staff and students to be familiar with the academic integrity principle, the Academic Integrity Rule 2021, the Policy: Student Academic Integrity and Procedure: Student Academic Integrity, and to uphold high standards of academic integrity to ensure the quality and value of our qualifications.
The Academic Integrity Rule 2021 is a legal document that the University uses to promote academic integrity, and manage breaches of the academic integrity principle. The Policy and Procedure support the Rule by outlining overarching principles, responsibilities and processes. The Academic Integrity Rule 2021 commences on 1 December 2021 and applies to courses commencing on or after that date, as well as to research conduct occurring on or after that date. Prior to this, the Academic Misconduct Rule 2015 applies.
The University commits to assisting all students to understand how to engage in academic work in ways that are consistent with, and actively support academic integrity. All coursework students must complete the online Academic Integrity Module (Epigeum), and Higher Degree Research (HDR) students are required to complete research integrity training. The Academic Integrity website provides information about services available to assist students with their assignments, examinations and other learning activities, as well as understanding and upholding academic integrity.
The assignment submission will be through the teaching Gitlab. You will be required to electronically sign a declaration as part of the submission of your assignment. Please keep a copy of the assignment for your records.
For some forms of assessment (hand written assignments, art works, laboratory notes, etc.) hard copy submission is appropriate when approved by the Associate Dean (Education). Hard copy submissions must utilise the Assignment Cover Sheet. Please keep a copy of tasks completed for your records.
Late submission not permitted. If submission of assessment tasks without an extension after the due date is not permitted, a mark of 0 will be awarded.
The Academic Skills website has information to assist you with your writing and assessments. The website includes information about Academic Integrity including referencing requirements for different disciplines. There is also information on Plagiarism and different ways to use source material.
Assignments will be submitted, assessed and returned via GitLab (gitlab.cecs.anu.edu.au).
Extensions and Penalties
Extensions and late submission of assessment pieces are covered by the Student Assessment (Coursework) Policy and Procedure. Extensions may be granted for assessment pieces that are not examinations or take-home examinations. If you need an extension, you must request an extension in writing on or before the due date. If you have documented and appropriate medical evidence that demonstrates you were not able to request an extension on or before the due date, you may be able to request it after the due date.
Distribution of grades policy
Academic Quality Assurance Committee monitors the performance of students, including attrition, further study and employment rates and grade distribution, and College reports on quality assurance processes for assessment activities, including alignment with national and international disciplinary and interdisciplinary standards, as well as qualification type learning outcomes.
Since first semester 1994, ANU uses a grading scale for all courses. This grading scale is used by all academic areas of the University.
Support for students
The University offers students support through several different services. You may contact the services listed below directly or seek advice from your Course Convener, Student Administrators, or your College and Course representatives (if applicable).
- ANU Health, safety & wellbeing for medical services, counselling, mental health and spiritual support
- ANU Access and inclusion for students with a disability or ongoing or chronic illness
- ANU Dean of Students for confidential, impartial advice and help to resolve problems between students and the academic or administrative areas of the University
- ANU Academic Skills and Learning Centre supports you make your own decisions about how you learn and manage your workload.
- ANU Counselling Centre promotes, supports and enhances mental health and wellbeing within the University student community.
- ANUSA supports and represents undergraduate and ANU College students
- PARSA supports and represents postgraduate and research students
Computer Systems. Memory and storage systems.