Systems, Networks, and Concurrency
Welcome to the 2022 website of COMP2310/6310 Systems, Networks, and Concurrency.
Zoom Webinar Links for Remote Participation
Semester 2 2022 Details
Mode of Delivery: | Hybrid (In-Person and Zoom Webinar) |
Lectures: | Tuesday, 15:30 and Thursday, 11:00 (Kambri Cinema) |
Lab: | Please check/sign-up via the MyTimetable website. |
Prerequisites: | COMP1110/1140 and COMP2300 |
Incompatible Courses: | None |
Course Convenor: | Dr. Shoaib Akram |
Lecturer: | Shoaib Akram |
Office: | CSIT N319 |
Office hours: | TBA |
Forum (edstem): | https://edstem.org/au/courses/8921/ |
Tutors: | Abhaas Goyal Anson Thai Jon Connor Julian Crosby Mitchell Moore Ratmir Mugattarov Thomas Willingham Xiangyu Hui |
Outline
This course first aims to teach how application programmers can use their knowledge of modern computer systems to write correct programs that deliver the best performance and efficiency. We will touch upon enduring and emerging features of computer hardware, including how it is managed by the operating system. You will learn the subtle way in which programs interact with the operating system and the underlying hardware. A key outcome of this course is to help you become skilled in how you can affect the utilization of hardware resources from the user level as an application programmer.
This course also teaches systems programming, which is the practice of writing low-level systems software. We will use the C programming language as a vehicle for learning systems programming. We will study Linux API for managing process execution, including parallelism and concurrency, memory and storage management, and networking basics.
We recommend the following textbooks to aid the learning in this course
- Computer Systems: A Programmer’s Perspective, 3/E
(Randal Bryant & David O’Hallaron) - Effective C: An Introduction to Professional C Programming (Robert C. Seacord)
Assessments
- Two assignments (50%)
- Final Exam (50%)
Assignments
Memory allocator assignment (25%)#
In this assignment, students will 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.
Proxy cache assignment (25%)#
The second assignment in this course requires students to implement a HTTP server that will allow a HTTP client (a web browser like FireFox or Google Chrome ) to connect to it and download files.
Final exam (50%)#
There is only one examination in this course. The final exam will be held during the exam period.