Exam Date & Location
The CIS 3800 Final Exam 1 will be held Tuesday May 7th from 12:00pm-2:00 pm in Towne 100.
Exam Policies
You will have 120 minutes to complete the exam. We will be beginning as soon as possible, so please show up to class early if you can. We will the distribute the exam early so that you can read and fill out the front page of the exam, but you should not look at the exam questions until you are told to begin. During the exam, some course staff will be walking around the room to answer any clarifying questions and watch out for any cheating cases.
Materials
- To Bring: pencil, eraser, up to TWO double-sided sheets (standard Letter size, 8.5x11 inch) of notes.
- Provided: printed exam with space to show work, time keeping
- Not Allowed: watch, hat, calculator, cell phone, or any other electronic device.
Clobber Policy
The clobber policy allows you to demonstrate mastery of past material with regard to exams. This exam is cummulative, and you can think of this exam has having a “sub section” that covers the material on the first exam. You can replace your midterm exam score with the score of the sub-section of the final exam. This does not apply in reverse, we will not replace your sub-section score of the final with your midterm exam score.
To accommodate for the subsection of the final exam being harder/easier than the midterm exam itself, we have a formula that accounts for average and standard deviation.
- First, we calculate Potential Midterm Clobber Score with:
(final_sub_score - final_sub_mean) / final_sub_std_deviation * midterm_std_deviation + midterm_mean
, capped at 100 - Then we take the maximum score between the calculated potential clobber score and the grade you had on the midterm. The higher of the two will automatically be used to calculate your course grade.
Cheating
Cheating is a very serious issue and will be vigorously prosecuted. You are not allowed to:
- Discuss the exam with anyone who has taken it before you or will take it after you
- Bring in outside information outside of the allowed note sheet mentioned above.
- Pass of any work as your own.
- Starting the exam early or ending the exam late
We cannot create a detailed list of everything that would be considered cheating, this would be beyond reasonable to create and to expect students to read. It is up to you know when you are cheating, if you are unsure for any reason if something is cheating, you can ask the instructor. Though if you have to ask, it will likely be considered cheating.
Topics
The final exam topics will cover everything from the beginning of the class, with some exceptions. Below you can find a list of some of the course topics and some of the topics that are exempt from the final If a topic is not listed below, you can ask about whether it is testable material.
Topic Exceptions
- We will not ask questions to see if you memorized the minutiae of various C functions. If needed, we will provide the relvant parts of the corresponding man page(s) for you.
- We will not ask you questions about systems programming saftey or C++. We may use psuedo-code that in some way looks like C++, but it should be straightforward. For example, if we have a question with pseudo-code that envolves a linked list, we may have have the pseudocode contain the following variable declaration:
list<int> values;
. This is just for sake of shortening the pseudo code we provide as the C standard library does not provide such generic data structures.
Potential Topics:
1st half of the Semester
- System Calls
- File Descriptors
- read/write and I/O
- process system calls (fork, pipe, etc)
- Processes
- Process Groups
- Terminal Control
- Inter Process Communication
- pipes
- signals
- Memory Heirarchy
- The entire memory heirarchy
- Caches
- Spatial Locality
- Temporal Locality
- Threads
- processes vs threads
- parallelism
- pthreads
2nd half of the Semester
- Scheduling
- FCFS
- Shortest Job First
- Round Robin
- Round Robin Variants
- File System
- Linked List Allocation
- FAT
- I Nodes
- Directories
- Device Drivers
- Direct Memory Access
- IO Buffering
- Concurrency
- Data Races
- Race Conditions
- Mutex
- Condition Variables
- Dining Philosophers
- Reader Writers
- Producer Consumer
- Amdhal’s Law
- Deadlock & Deadlock Detection/Avoidance/Prevention
- Virtual Memory
- High Level
- Multi Level Page Tables
- Inverted Page Tables
- Page Replacement policies
- TLB
- Memory Allocation
- Malloc Free Lists
- Buddy Algorithm
- Slab Allocator
- Fragmentaion:
- Internal Fragmentation
- External Fragmentation
If you don’t see something listed above as a potential topic or an exception, then feel free to post on Ed and we will clarify whether you may be tested on it in the exam.
Exam Practice
Advice
We highly recommend that you do some of these questions in a “test-taking environment” before going over the answers. The questions that will be gone over in the review during lecture will likely be more similar in style to what can be expected on the exam.
You may also find it helpful to review old homework assignments, lecture polls and check-in quizzes while studying.
Practice Questions
There will be some review questions gone over in lecture and recitation around the time of the exam. Check the course schedule and we will post the materials when we have them ready.
Old Review Questions
Note that these review questions are written by a different instructor, so while they still may be useful for practicing the course topics and exam-taking skills, our exam will feel different in the kind of questions that are asked. Some of the questions will also asked things not gone over in this course. If you are unsure if something has been covered, feel free to ask on the course ed.
- process questions - answers
- signals questions - answers
- memory mangement questions - answers
- input output questions - answers
- concurrency questions - answers
- deadlocks questions - answers