Quiz 1 (Week 2)#
Mon, Jan 21 to Thu, Jan 24
This is the only quiz that includes Thursday
- C Strings representation
- C Strings as pointers
- char pvs char* p
- Simple C string functions (strcmp, strcat, strcpy)
- sizeof char
- sizeof x vs x*
- Heap memory lifetime
- Calls to heap allocation
- Dereferencing pointers
- Address-of operator
- Pointer arithmetic
- String duplication
- String truncation
- double-free error
- String literals
- Print formatting.
- memory out of bounds errors
- static memory
- fileio POSIX vs. C library
- C io fprintf and printf
- POSIX file IO (read, write, open)
- Buffering of stdout
Quiz 2 (Week 3)#
Mon, Jan 28 to Wed, Jan 30
C (As above with)
- Correct use of fork, exec and waitpid
- Using exec with a path
- Understanding what fork and exec and waitpid do. E.g. how to use their return values.
- SIGKILL vs SIGSTOP vs SIGINT.
- What signal is sent when you press CTRL-C
- Using kill from the shell or the kill POSIX call.
- Process memory isolation.
- Process memory layout (where is the heap, stack etc; invalid memory addresses).
- What is a fork bomb, zombie and orphan? How to create/remove them.
- getpid vs getppid
- How to use the WAIT exit status macros WIFEXITED etc.
Quiz 3 (Week 5)#
Mon, Feb 11 to Wed, Feb 13
This quiz asks you about processes (fork, waitpid, waitpid macros, getpid/getppid, exec, and basic use of signals).
Quiz 4 (Week 7)#
Mon, Feb 25 to Wed, Feb 27
- pthread lifecycle
- create join
- pthread_join pthread_exit vs exit
- threads vs process
- Critical sections
- Counting Semaphores
- Condition Variables
- Producer Consumer
- Ring buffer
Quiz 5 (Week 9)#
Mon, Mar 11 to Wed, Mar 13
The quiz is about malloc and correctly working with pointers and linked lists in C. You’ll be implementing a simple placement algorithm (e.g. Best/First/Worst-fit) for a memory pool. A memory pool is just a large piece of contiguous memory that you want to use for all future requests.
Quiz 6 (Week 12)#
Mon, Apr 1 to Wed, Apr 3
- The Dining Philosopher Problem
- The Reader Writer Problem
- The four Coffman conditions (and the definition of each one)
- Create thread safe code using semaphores
- Creating a barrier using condition variables
- Deadlock and Resource Allocation Graph
- pthread race conditions
- Creating pipes
- Using fseek and ftell
- page tables (page offsets, dirty bit,TLB)
(Multiple Choice only. Scheduling will not be on this quiz)
Quiz 7 (Week 14)#
Mon, Apr 15 to Wed, Apr 17
- Basic properties of TCP and UDP
- Purpose and properties of each TCP server call
- Correct order of the “big 4” TCP server calls.
- What is DNS, and what is its purpose?
- POSIX calls required to create a TCP client
- Properties of UDP, TCP, IPv4, IPv6, privileged ports
- Purpose and basic properties of sockets
- Be able to correctly choose when to use ntohs, ntohl, htons, htonl
- Correct setting up addrinfo hints struct for a TCP server or client
- Purpose and properties of getaddrinfo
- Reading and writing to pipes (including blocking, SIGPIPE and detecting when no more bytes can be read)
(Multiple Choice only)
Quiz 8 (Week 16)#
Mon, Apr 29 to Wed, May 1
- Review of everything!
(Multiple Choice only)