COMP30023 Computer Systems
COMP30023 Overview
- University of Melbourne
- S1 2027
- 13 chapters
- Computer Science
COMP30023 Computer Systems is the University of Melbourne's third-year subject in the School of Computing and Information Systems, and it splits cleanly into two halves.
- Assessed by Two programming projects (Project 1 + Project 2) 30% · Weekly tutorial participation activities (online quizzes) 10% + 2 more
- Key terms Process vs program, Kernel vs user mode, Dual hurdle, Page table / address translation
- How to prepare Treat COMP30023 as two linked skill sets — operating systems and networking — and rehearse both weekly rather than cramming through SWOTVAC…
- Most asked Where can I find past exam papers / practice for COMP30023?
How COMP30023 is assessed
| Component | Weight | Format |
|---|---|---|
| Two programming projects (Project 1 + Project 2) | 30% | Programming projects across the semester (C / socket-based servers); part of the non-exam hurdle |
| Weekly tutorial participation activities (online quizzes) | 10% | Weekly online quizzes; part of the non-exam hurdle |
| Mid-semester test (MST) | 10% | On-campus, closed-book, digital (Canvas + Respondus LockDown Browser); part of the exam hurdle |
| End-of-semester examination | 50% | On-campus, digital, closed-book except one double-sided A4 note sheet; 15 min reading + 2 hours writing |
What COMP30023 covers
COMP30023 runs across twelve teaching weeks in two halves: an operating-systems half (Weeks 1-5 — the OS role, processes and threads, IPC, scheduling, memory management, then cryptography and TLS) and a networking half (Weeks 6-12 — the OSI model, sockets, DNS, HTTP, UDP, TCP, flow and congestion control, addressing, routing and middleboxes).
It is assessed by two C programming projects (30%), weekly tutorial quizzes (10%), a mid-semester test (10%) and a final exam (50%), with a dual hurdle you must clear across the exam pair and across the coursework pair. This map walks each week's topic in teaching order toward that exam.
Operating Systems Overview
role of the OS · kernel vs user mode · system calls · (Week 1)Week 1 introduces what an operating system is — a resource manager and abstraction layer that turns raw hardware into a clean interface for programs — and the protection boundary between user mode and kernel mode crossed by a system call.
- The two core jobs of an OS: hardware abstraction (Process, Address Space, Files, Sockets) and resource management (CPU, memory, I/O)
- The layering User → Application → Operating System → Hardware, and the kernel as the part that runs in kernel mode
- Kernel mode vs user mode set by the mode bit in the PSW; privileged instructions and memory-boundary protection
- The fetch-decode-execute cycle, the PC/SP/PSW special-purpose registers and the register → cache → memory → disk hierarchy
- System calls: the trap instruction, the system-call table, and the user → kernel → user round trip
- Interrupts (external: clock, I/O; internal/exceptions: divide-by-zero, page fault) and the interrupt vector
Processes and Threads
process model · PCB · thread vs process · state transitions · (Week 2)Week 2 develops the process abstraction and the thread model — the process control block, what threads share versus keep private, and the running/ready/blocked state machine.
- Process = a running program; the elements it bundles (threads, address space, files, sockets)
- Multiprogramming and pseudo-parallelism: one core, interleaved execution chosen by the scheduler
- Process creation (fork clones the address space; execve replaces the image) and the four termination causes
- The three process states Running / Ready / Blocked and the four legal transitions (no Blocked → Running)
- The Process Control Block (PCB) and the process table; the saved execution context (PC, SP, registers)
- Per-process (shared) state — address space, globals, heap, open files — vs per-thread (private) state — PC, registers, stack
Interprocess Communication and Synchronization
race conditions · mutual exclusion · locks, TSL and yielding mutexes · (Weeks 2-3)Weeks 2-3 cover how cooperating processes and threads coordinate: race conditions on shared data, the critical-region problem, and the ways to achieve mutual exclusion — from naive lock variables and strict alternation to the atomic test-and-set-lock and blocking/yield approaches.
- IPC mechanisms (shared memory, pipes, files, sockets, signals) and the course focus on avoiding race conditions
- Race condition: outcome depends on the timing/order of execution of accesses to a shared resource
- Critical region and mutual exclusion; the four conditions a good mutual-exclusion solution must satisfy
- Why a naive lock variable fails: a context switch between the test and the set lets two threads enter
- Busy waiting and its costs (wasted CPU, priority inversion); strict alternation and why it violates condition 3
- Test-and-Set Lock (TSL): the atomic test-and-set instruction and the enter_region/leave_region pattern
CPU Scheduling
FCFS · SJF · Round-Robin · turnaround & waiting time · (Week 3)Week 3 covers how the scheduler picks which ready process runs — First-Come First-Served, Shortest-Job-First, Round-Robin with a quantum, priority and multi-level feedback queues — and how to compute waiting, turnaround and response times from a Gantt chart.
- Why scheduling is needed; context switch (thread vs process, including flushing the TLB) and its overhead
- CPU-bound vs I/O-bound processes; preemptive (quantum + clock interrupt) vs non-preemptive scheduling
- Metrics: turnaround = completion − arrival, response = first-run − arrival, and their averages; fairness and throughput
- First-Come First-Served (FCFS): FIFO order, simplicity, and the convoy effect
- Shortest-Job-First (SJF): optimal average turnaround when all jobs are ready together; risk of starving long jobs
- Round-Robin (RR): one quantum per turn, good response time, no starvation, and the quantum trade-off
Memory Management
virtual memory · paging · address translation · TLB · page replacement · (Week 4)Week 4 covers how the OS gives each process a private virtual address space: base-and-limit relocation, paging and page tables, virtual-to-physical address translation, the TLB, and page-replacement policies.
- Why memory management: multiprogramming, isolation/security, and running processes larger than physical RAM
- Base-and-limit registers (dynamic relocation): check logical address < limit, then physical = logical + base
- Contiguous allocation, the free-hole list, first-fit / best-fit / worst-fit, and external fragmentation
- Paging: fixed-size pages and frames, the per-process page table and the Page Table Base Register (PTBR)
- Address translation: page number (top bits) + offset (bottom bits); physical = frame × frame size + offset
- Page-table entry bits (present/absent, referenced R, modified/dirty M); internal fragmentation and page-size trade-offs
Cryptography and Secure Communication
symmetric vs asymmetric · hashes · digital signatures · PKI · TLS · (Week 5)Week 5 is the security bridge between the two halves: symmetric versus asymmetric encryption, cryptographic hashes and digital signatures, and how certificates and a public-key infrastructure defeat a man-in-the-middle attack (TLS itself is flagged non-examinable).
- The three goals: confidentiality, integrity and authentication; Kerckhoffs' principle (secrecy in the key, not the algorithm)
- Symmetric encryption (one shared key, fast, e.g. AES) vs asymmetric/public-key (key pair, e.g. RSA, slow) and hybrid encryption
- Cryptographic hash functions: fixed-length digest, collision resistance and one-way (pre-image) resistance
- Message integrity: MAC (shared secret, integrity only) vs digital signature (private-key sign, public-key verify)
- What a digital signature provides: integrity and non-repudiation — but not confidentiality
- Authenticated encryption: encrypt-then-MAC gives confidentiality AND integrity with two keys
Network Protocols and the OSI Model
layering · OSI vs Internet stack · encapsulation · service models · (Week 6)Week 6 opens the networking half: why protocols are layered, the seven-layer OSI reference model against the Internet's layers, encapsulation as headers are added down the stack, and connection-oriented versus connectionless service.
- Why layer: the Internet is an aggregation of many networks; modularity manages complexity
- Service vs protocol: a service is the interface a layer offers upward; a protocol is the peer-to-peer rules at one layer
- The seven OSI layers top-to-bottom and their data units (Application, Presentation, Session, Transport/Segment, Network/Packet, Data link/Frame, Physical/Bit)
- The TCP/IP model: Application (subsumes OSI 5-7), Transport, Internet (= Network), Link (= Data link + Physical)
- Encapsulation/decapsulation: each layer prepends its header (message → segment → packet → frame → bits)
- Connection-oriented (TCP, like a phone call) vs connectionless (UDP, like the postal service) service models
Sockets, DNS and Mail
socket API · client-server · DNS resolution · SMTP/mail · (Week 7)Week 7 covers application/transport programming: the Berkeley socket API and the client-server call sequence used in the projects, DNS name resolution and the latency it adds, and email as a store-and-forward push protocol (SMTP) with pull-based access (POP3/IMAP).
- Sockets as the doorway between application (user space) and transport (kernel space); the file-descriptor abstraction
- The socket 5-tuple (protocol, local IP, local port, remote IP, remote port); listening sockets as 3-tuple half-sockets
- Server call sequence socket → bind → listen → accept, and client sequence socket → connect; which calls block
- Blocking vs non-blocking reads: a read() may return fewer bytes than a write() sent; loop until 0
- DNS: mapping domain names to IP addresses at the application layer; the four elements (name space, database, name servers, resolvers)
- Resource-record types (A, AAAA, MX, NS, CNAME, PTR, SOA, TXT); zones and authoritative servers
HTTP and UDP
HTTP/1.1 requests · persistent connections · UDP datagrams · (Week 8)Week 8 covers the web and the lightweight transport: HTTP/1.1 requests and responses, persistent versus non-persistent connections and how many TCP connections a page load needs, and UDP as a connectionless best-effort datagram service.
- The web: client, server and URL (scheme + host + path); a page pulls objects from many servers
- HTTP request/response structure: request line, header lines, blank line, optional body; status-code classes (1xx-5xx)
- HTTP methods and their properties: GET/HEAD (safe, idempotent), POST/PUT/DELETE; safe vs idempotent
- Persistent (HTTP/1.1) vs non-persistent (HTTP/1.0) connections; pipelining; connections per page load
- HTTPS = HTTP over TLS (port 443); brief note on HTTP/2 (header compression, multiplexing) and HTTP/3 over QUIC
- The transport layer's job: a logical channel between processes on top of the best-effort network layer
TCP and Reliable Transport
3-way handshake · sequence numbers · reliable delivery · protocol design · (Week 9)Week 9 covers TCP's reliability machinery: the three-way handshake and initial sequence numbers, reliable in-order byte-stream delivery with retransmission, and connection teardown with FIN and RST.
- TCP as a reliable, in-order, stream-oriented byte channel; segmenting the stream (often 1460-byte segments)
- TCP connection features: full-duplex, end-to-end, byte-stream (no message boundaries preserved), buffered
- The 5-tuple naming a connection; key header fields (sequence number, acknowledgement number, window size, flags)
- Sequence numbers count bytes not packets; acknowledgement number = next in-order byte expected
- The three-way handshake: SYN(x) → SYN-ACK(y, x+1) → ACK(x+1, y+1), agreeing initial sequence numbers
- Why the handshake is robust to lost/duplicated setup packets (delayed duplicates); SYN/FIN consume a sequence byte
Flow Control, Congestion Control and Addressing
sliding window · AIMD congestion control · IP addressing · switching · (Week 10)Week 10 covers how TCP paces the sender and how the network is addressed: the sliding window and cumulative acknowledgements, AIMD congestion control (slow start and congestion avoidance), and IP addressing with CIDR prefixes and subnet masks.
- The sliding window: reliable delivery, flow control and in-order delivery; the receiver-advertised window
- Cumulative ACKs and loss recovery: duplicate ACKs, fast retransmit on three duplicate ACKs, the zero-window probe
- Go-back-N vs selective repeat; the sender invariant LastByteSent − LastByteAcked ≤ advertised window
- TCP congestion control: the congestion window (sender-only), slow start (exponential) and congestion avoidance (additive)
- On loss: set ssthresh = CWND/2 and restart (TCP Tahoe); fast recovery (TCP Reno); the AIMD sawtooth
- IPv4 addressing: 32-bit dotted-decimal addresses on interfaces; unicast/broadcast/multicast; the network/host split
Network-Layer Routing and Control
routing vs forwarding · link-state & distance-vector · ICMP control · (Week 11)Week 11 covers how packets find paths: the distinction between routing (building the tables) and forwarding (using them), link-state routing with Dijkstra's shortest-path algorithm, and network-layer control protocols such as ICMP, DHCP and ARP.
- Forwarding (data plane, per-packet table lookup) vs routing (control plane, building the tables)
- Good routing-algorithm properties (correctness, robustness, stability); optimising hop count or link cost
- Static vs adaptive routing; flooding as a robust but inefficient benchmark controlled by TTL
- The optimality principle and the sink tree; Dijkstra's shortest-path algorithm over a non-negative-weight graph
- Dijkstra node states (unseen / tentative-open / permanent-closed) and the (distance, predecessor) labels
- Link-state routing's five steps: discover neighbours, set costs, build the LSP, reliably flood, run Dijkstra (OSPF)
Middleboxes, NAT, Firewalls and Exam Revision
NAT translation · firewalls · network debugging · exam strategy · (Week 12)Week 12 closes the networking half with middleboxes — network address translation and its port-mapping table, firewalls, and a structured method for debugging network problems — then pulls the whole subject together for revision across both halves and the dual-hurdle exam.
- Private address blocks (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) reusable behind a NAT
- How NAT (really NAPT) rewrites the private source IP and port to the public IP and a table index; checksum recomputation
- The NAT translation table and the inbound reverse mapping; why an external host cannot initiate unsolicited
- NAT criticisms (breaks end-to-end, layering violation, connection state, ~65,536-connection limit) and its security upside
- Firewalls and the security role of middleboxes; NAT is not a firewall replacement
- Structured network debugging: classify the symptom, localise in space and in the protocol stack, hypothesise, then test
Weeks 1-5 are the operating-systems half: what an operating system is and the kernel/user-mode boundary, the process and thread abstractions, interprocess communication and mutual exclusion, CPU scheduling, memory management and paging, then a cryptography-and-secure-communication bridge (symmetric vs asymmetric encryption, hashes, digital signatures, certificates and TLS).
Weeks 6-12 are the networking half: layered protocol models and the OSI/TCP-IP stack, sockets and DNS and mail, HTTP and UDP, TCP and reliable transport, flow and congestion control and IP addressing, routing and control protocols, and middleboxes (NAT and firewalls).
The whole subject is taught from the programmer's perspective — the two C socket-programming projects and the exam both reward reasoning about mechanisms rather than memorising facts. Assessment (delivered through Canvas) is two programming projects (30%), weekly tutorial-participation quizzes (10%), a mid-semester test (10%) and an end-of-semester examination (50%).
The load-bearing rule is a dual hurdle: you must score at least 30/60 across the MST and final exam combined, AND at least 20/40 across the projects and tutorial quizzes combined, on top of clearing the overall pass — miss either hurdle and the result is capped. The final exam is on-campus and digital, 15 minutes reading plus 2 hours writing, closed-book except for one double-sided A4 note sheet.
Your COMP30023 result feeds the Weighted Average Mark (WAM) that later computing subjects build on. Confirm the exact weights, hurdles and permitted materials on the subject's Canvas page and the current subject outline.
Worked example · free
Average turnaround under FCFS vs SJF — why SJF wins
- +1Turnaround time = completion time − arrival time, and every job arrives at 0, so here turnaround = completion time. Run FCFS in arrival order P1 → P2 → P3 → P4 and accumulate completion times: P1 finishes at 8, P2 at 8+4 = 12, P3 at 12+9 = 21, P4 at 21+5 = 26.
- +1FCFS average turnaround = (8 + 12 + 21 + 26) ÷ 4 = 67 ÷ 4 = 16.75 ms.
- +1For SJF, order the ready jobs by shortest burst first: P2 (4) → P4 (5) → P1 (8) → P3 (9). Completion times: P2 at 4, P4 at 4+5 = 9, P1 at 9+8 = 17, P3 at 17+9 = 26.
- +1SJF average turnaround = (4 + 9 + 17 + 26) ÷ 4 = 56 ÷ 4 = 14 ms.
- +1SJF gives the lower average (14 < 16.75). SJF is provably optimal for average turnaround when all jobs are available together: running short jobs first means their small bursts are added into fewer of the running totals, so the long job P3 waits behind the short ones rather than the reverse. The trade-off is that a steady stream of short jobs can starve a long one.
Key terms
- Process vs program
- A program is static code sitting on disk (a recipe); a process is a dynamic, running instance of it (the act of cooking), with its own program counter, registers, stack, heap and data. Several processes can run the same program at once.
- Kernel vs user mode
- A hardware mode bit in the program status word sets the privilege level. Kernel mode can run every instruction and touch all memory; user mode is restricted (no privileged/I/O instructions, only permitted memory). A system call is the controlled gateway that switches user → kernel to request a privileged service.
- Dual hurdle
- COMP30023's pass rule beyond the weighted total: you must score at least 30/60 across the MST + final exam combined AND at least 20/40 across the projects + tutorial quizzes combined. Failing either hurdle caps your result regardless of the overall mark.
- Page table / address translation
- A per-process table mapping each virtual page number to a physical frame. A virtual address splits into a page number (top bits) and an offset (bottom bits); physical address = frame number × frame size + offset. The offset is copied through unchanged.
- Three-way handshake
- TCP's connection setup: SYN (SEQ = x) → SYN-ACK (SEQ = y, ACK = x+1) → ACK (SEQ = x+1, ACK = y+1). It guarantees exactly one connection forms and both sides agree on initial sequence numbers; SYN and FIN each consume one byte of sequence space.
- Public-key (asymmetric) encryption
- Each principal holds a key pair: encrypt with the recipient's public key, decrypt with their private key (RSA, ElGamal). It removes the secret-key-exchange problem but is slow, so real systems use hybrid encryption — asymmetric to exchange a symmetric session key, then symmetric (AES) for the bulk data.
COMP30023 FAQ
Is COMP30023 hard?
It is broad rather than deeply mathematical. The subject covers two quite different halves — operating systems in Weeks 1-5 and computer networking in Weeks 6-12 — so the real challenge is holding a lot of mechanisms (scheduling policies, paging, the TCP handshake, routing, NAT) straight rather than any single hard idea.
The quantitative parts are hand-arithmetic — scheduling Gantt sums, paging address math, CIDR prefixes, sliding-window ACK numbers, a Dijkstra trace — with no calculator, so marks go to a clean method and correct units, not memorising formulas. Add the two C programming projects and the dual hurdle, and steady weekly work beats a SWOTVAC cram; consistent effort also protects your WAM.
Students who redraw the recurring diagrams and rework a few exam-style questions each week tend to find it manageable.
Can AI help me with COMP30023?
Yes, as a step-by-step study aid. Sia is an AI tutor built to mirror how COMP30023 is actually taught and assessed at the University of Melbourne: it can walk you through a scheduling Gantt trace, a virtual-to-physical address translation, the TCP three-way handshake, a man-in-the-middle attack on unauthenticated key exchange, or a Dijkstra shortest-path table one line at a time, and it checks your reasoning as you go.
Bring your own tutorial or past-exam question and ask Sia to explain each step. It does not do graded assessment for you — not the projects, the quizzes, the MST or the exam — and University of Melbourne academic-integrity rules still apply. Use it to understand the method, not to produce work you submit.
Where can I find past exam papers / practice for COMP30023?
Start on Canvas, where the subject posts its exam-preparation material (including any sample exam, the MST practice and the revision lecture in the final teaching week), and check the University of Melbourne Library's past-examination-paper collection for any released COMP30023 papers. Your weekly tutorial worksheets and their solutions are the closest match to the short-answer exam questions.
This guide also includes a re-authored practice exam that mirrors the paper's shape — MCQ, short-answer and longer worked questions across scheduling, paging, crypto, TCP and routing — with fresh numbers, and you can ask Sia to generate extra practice in the same style and explain each step. Treat any third-party 'model answers' with caution and confirm what is officially provided on Canvas.
What are the COMP30023 hurdles and assessment rules?
The load-bearing rule is a dual hurdle. Beyond passing on the weighted total, you must score at least 30/60 across the mid-semester test and the end-of-semester exam combined, AND at least 20/40 across the two programming projects and the weekly tutorial-participation quizzes combined. Fail either hurdle and your result is capped regardless of the overall mark.
The MST is strictly closed-book (no notes, no calculator, Respondus LockDown Browser); the final exam is closed-book except for a single double-sided A4 note sheet. These are the current published weights (projects 30% · quizzes 10% · MST 10% · exam 50%) — confirm the exact weights, hurdle thresholds and permitted materials on the subject's Canvas page and the current subject outline before you rely on them.
What is on the COMP30023 final exam?
A single on-campus digital paper spanning the whole subject — both the operating-systems and networking halves — worth 50%, with 15 minutes reading plus 2 hours writing, closed-book except one double-sided A4 note sheet and no calculator.
It is structured as Part A multiple-choice (1 mark each), Part B short-answer (2 marks each, written in fixed-size answer boxes) and Part C longer worked/analytical questions (3-6 marks each, often multi-part).
Expect the high-frequency shapes: program vs process, is a TLB necessary, a scheduling Gantt trace, a paging address calculation, a crypto man-in-the-middle, the OSI layers in order, the TCP handshake SEQ/ACK arithmetic, a sliding-window ACK read-off, a CIDR longest-prefix lookup, a Dijkstra trace and a NAT translation.
The exam sits in the University of Melbourne Semester 1, 2027 examination period (around June 2027) — confirm the exact date, time and room on Canvas and the UniMelb exam timetable.
Questions students ask in each COMP30023 chapter
- What is the difference between a program and a process?
- A program is a static list of instructions stored on disk — like a recipe. A process is a dynamic, running instance of that program — the act of following the recipe — with its own program counter, registers, stack, heap and data. Multiple processes can execute the same program simultaneously. This one-line contrast is a recurring MST/exam opener, so be able to state it crisply with the static-vs-dynamic framing. Chapter 01 · Operating Systems Overview
- What is the difference between a process and a thread?
- A process is a running program with its own address space; a thread is a unit of execution inside a process. Threads of the same process share the code, global data, heap and open files, and each has only its own program counter, registers and stack. So threads are cheaper to create and switch between and share data easily, but they are less isolated — one faulty thread can crash the whole process, whereas separate processes are protected from each other. Chapter 02 · Processes and Threads
- What exactly is a race condition?
- A race condition occurs when two or more processes or threads access a shared resource and the final result depends on the exact order in which their steps interleave. Because an operation like count = count + 1 is really load-add-store (not atomic), a context switch in the middle can cause a lost update. The defining phrase to use in the exam is 'the outcome depends on the timing/order of scheduling', which distinguishes it from deadlock, starvation and mutual-exclusion violations. Chapter 03 · Interprocess Communication and Synchronization
- How do I compute average turnaround and response time?
- Draw the Gantt chart for the policy first. Turnaround for each process is its completion time minus its arrival time; response time is when it first starts running minus its arrival time. Average each over all processes. The commonest slips are forgetting to subtract a non-zero arrival time, and reading completion times wrong from the chart — so always build the strip and read the numbers off it rather than doing arithmetic in your head. Chapter 04 · CPU Scheduling
- How do I convert a virtual address to a physical address under paging?
- Split the virtual address into a page number and an offset using the page size: page number = address ÷ page size, offset = address mod page size. Look up the page number in the page table to get the frame number. Then physical address = frame number × page size + offset. The offset is always copied through unchanged; only the page number is translated. If the page size is a power of two, the offset is just the low log2(page size) bits. Chapter 05 · Memory Management
- What is the difference between symmetric and asymmetric encryption?
- Symmetric encryption uses a single shared secret key for both encryption and decryption; it is fast and good for bulk data, but the parties must first exchange the key securely, and it scales as N(N−1)/2 keys for N users. Asymmetric (public-key) encryption gives each party a public/private key pair — you encrypt with the recipient's public key and only their private key decrypts — which removes the key-exchange problem and scales as 2N keys, but it is far slower. Real systems use hybrid encryption: asymmetric to exchange a symmetric session key, then symmetric for the payload. Chapter 06 · Cryptography and Secure Communication
- What is the difference between a service and a protocol?
- A service is the interface a layer provides to the layer above — the set of operations (primitives) that layer can request, defining what the layer does. A protocol is the agreement between peer entities at the same layer on both sides of the connection about the format and meaning of the messages they exchange, defining how it is done. Layering isolates the two: you can change a layer's protocol without changing the service it offers, and the layer above is unaffected. Chapter 07 · Network Protocols and the OSI Model
- What is the correct order of socket calls for a TCP server and client?
- Server: socket() → bind() → listen() → accept() → read()/write() → close(). Client: socket() → connect() → write()/read() → close(). The server calls bind (to claim a port), listen (to set up the accept queue) and accept (to wait for and pick up a connection); accept is the call that blocks until a client arrives. The client just creates a socket and connects. Getting listen and accept in the right order, and knowing accept blocks, are frequent single-mark points. Chapter 08 · Sockets, DNS and Mail
- How many TCP connections does a web page need?
- It depends on HTTP version and how many distinct hosts serve the objects. With persistent HTTP/1.1, the minimum is one connection per host, reused for all that host's objects — so a page whose objects come from two servers needs at least two connections. With non-persistent HTTP/1.0 you need a separate connection per object. Browsers may also open several parallel connections per host to speed loading, but the exam usually asks for the minimum, which counts hosts, not objects. Chapter 09 · HTTP and UDP
- How does the TCP three-way handshake work and why three messages?
- Host 1 sends SYN with its initial sequence number x; Host 2 replies SYN-ACK with its own initial sequence number y and ACK = x+1; Host 1 sends ACK = y+1. Three messages are needed so both sides confirm each other's initial sequence numbers even when setup packets are lost, duplicated or delayed. If Host 2's SYN-ACK is lost, Host 1 times out and resends the same SYN; Host 2 matches it to its half-open entry and resends the same SYN-ACK — so exactly one connection forms with agreed sequence numbers. Chapter 10 · TCP and Reliable Transport
- What ACK does a TCP receiver send after a lost segment?
- It sends a cumulative ACK equal to the first missing byte — one past the last byte received with no gap before it. If an earlier segment is lost but later ones arrive, those later segments are buffered but cannot advance the ACK past the hole, so the receiver keeps returning the same ACK number (duplicate ACKs). Once the sender sees three duplicate ACKs it fast-retransmits the missing segment without waiting for a timeout. The trap is thinking an out-of-order arrival advances the ACK — it does not. Chapter 11 · Flow Control, Congestion Control and Addressing
- What is the difference between routing and forwarding?
- Forwarding is the local, per-packet data-plane action: a router reads a packet's destination address, looks it up in its forwarding table, and sends the packet out the corresponding interface. Routing is the control-plane process of building those tables — a routing algorithm at each router plus a protocol that gathers the topology information the algorithm needs. In short, routing decides the paths; forwarding follows them. The exam often asks you to place each in the data plane or control plane. Chapter 12 · Network-Layer Routing and Control
- How does NAT translate addresses?
- Outbound, the NAT box replaces a packet's private source IP with its single public IP and replaces the source port with an index into its translation table, storing the original private IP and port in that entry and recomputing the IP and TCP/UDP checksums. Inbound, it reads the destination port of the reply, looks it up in the table to recover the original private IP and port, rewrites the destination fields back and recomputes checksums, then forwards to the internal host. Because it maps ports as well as addresses it is really NAPT. Chapter 13 · Middleboxes, NAT, Firewalls and Exam Revision
How to study for the exam
Treat COMP30023 as two linked skill sets — operating systems and networking — and rehearse both weekly rather than cramming through SWOTVAC, because the dual hurdle means you cannot afford to neglect either the exam pair or the coursework pair.
For the OS half, redraw the recurring diagrams from memory (the process state machine, single- vs multi-threaded memory layout, a paged address translation with the TLB) and work one quantitative item end to end each week: a scheduling Gantt for FCFS/SJF/RR, a virtual-to-physical address calculation, an effective-access-time weighting.
For the networking half, drill the hand-calculations until they are automatic: the TCP three-way-handshake SEQ/ACK arithmetic, a sliding-window cumulative-ACK read-off, CIDR membership and longest-prefix matching, and a Dijkstra shortest-path table.
Because the exam is short-answer in boxes and rewards 'explain why / compare X and Y / what would go wrong', practise stating mechanisms crisply — the man-in-the-middle attack and how certificates stop it, why a TLB is not strictly necessary but speeds translation, why NAT breaks end-to-end connectivity but aids security.
Keep the two C projects moving early so they never collide with exam revision, since they feed the 20/40 coursework hurdle. When a step won't click, ask Sia to explain that single step a different way and set you a fresh practice question in the same style; it teaches the method and checks your reasoning, and it never substitutes for your own graded work.
Confirm the exam date, room, weighting and permitted materials on Canvas and the University of Melbourne exam timetable.
Your AI Computer Science tutor for COMP30023
Stuck on a hard COMP30023 question? Sia is AskSia’s AI Computer Science tutor — ask any COMP30023 Computer Systems question and get a clear, step-by-step explanation grounded in how the course is actually taught and assessed. Read this whole study guide free, then take your hardest questions to Sia.