This is a general outline of the key concepts (arranged by topic) that you should know for the Exam 03.
The exam will have the following format:
Short Answers: Briefly answer questions about:
The final exam will be a comprehrensive assessment. This means that everything we have discussed this semester is considered fair game.
That said, the majority of the test will cover the last quarter of the class, as detailed below.
What is Unix?
What are the principles of functional programming?
How do you construct a unix pipeline to do the following:
Extract a fields or characters.
Search based on a pattern.
Count the number of lines.
Search a directory based on a pattern or file attribute.
List the processes on the current machine.
What is the compiler pipeline?
How do you write a Makefile that utilizes rules and variables for a program that consists of multiple files?
How do we dynamically allocate memory? How do we deallocate that memory?
What is singly-linked list?
What is hash table?
What exactly are system calls?
How do we check these failures?
How do we get the error message related to these failures?
How do we get the inode information for a file?
Check if a file is a regular file, directory, or symlink?
Check if a file is a readable, writable, or executable?
Check the size of the file?
Check the last modification time?
What is a process?
What attributes or components does it have?
What system calls can you do with them?
What happens during the life cycle of a typical process?
How do we prevent a fork bomb?
How do we prevent zombies?
Why would we want to prevent these situations?
What is a signal?
What is networking?
What is a URL and what are its components?
What is HTTP?