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)

Weekly Lecture Content

  1. Introduction and x86-64 Assembly
  2. C to x86-64 Assembly
  3. The process abstraction
  4. Memory hierarchy and virtual memory
  5. Virtual memory and dynamic memory allocation
  6. Garbage collection and storage I/O
  7. Log-structured merge tree
  8. Networking and sockets API
  9. Concurrency - 1
  10. Concurrency - 2
  11. Advances topics
  12. Revision

Weekly Lab Content

  1. Introduction to C, Part 1
  2. Introduction to C, Part 2
  3. Recursion and Data Structures in C
  4. Process control and signal handling
  5. Memory allocator design
  6. Storage I/O and memory-mapped files
  7. Log-structured merge tree
  8. Sockets
  9. Pthreads, Part 1
  10. Pthreads, Part 2
  11. HTTP server design
  12. Assignment drop-in

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. (To be released in week 5, due in week 7 after the teaching break.)

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. (To be released in week 8, due in week 12.)

Final exam (50%)#

There is only one examination in this course. The final exam will be held during the exam period.

bars search times arrow-up