General Information
- Date: Thursday, May 14
- Time: 4pm-6pm
- Location:
- Duration: 120 minutes
- Closed-book, Closed-notebooks, No Computers/Calculators
- Use a pencil/mechanical pencil (no pen) to answer the exam
- Please take a look at the general exam rules available at
Exam Rules.
- Please bring a stapler if you tend to separate the pages of the exam (something
we don't encourage).
Exam Structure
- Short answer questions: This includes for example, multiple
choice, true/false and fill-in-the-blank type questions.
- Code analysis questions: We will give a short segment of code and
you may be asked to identify syntax and logical errors, generate code
output, etc.
- Code Writing: Write a program/code snippets to solve a given
problem. You should be prepared to give a complete program, but we may also
ask you to provide just a single function or a code fragment.
Topics
The exam will include all the material covered in discussion session (lab),
lecture, quizzes, and projects including the following topics:
- Unix - You must be familiar with the following commands
- cp
- ls
- cd
- pwd
- gcc
- rm
- mv
- echo
- C Language
- Preprocessor directives (#include, #define)
- Expressions
- Conditional statements
- Loops
- Bitwise operators
- Arrays
- Strings - You are responsible for the following string functions:
- strlen
- strcpy
- strcmp
- memcpy
- memmove
- Pointers (including function pointers)
- enum
- Structures
- Unions
- Standard I/O. The following cheat sheet will be provided:
StandardIOCheatSheet
- Functions
- stdin, stderr, stdout
- Linkage
- Command line arguments
- exit
- perror
- err
- Dynamic Memory Allocation (malloc, free, etc.)
- Function pointers
- Linked Lists(both singly and doubly linked-lists)
- Recursion
- Memory Maps - Please use a style similar to the one provided
by the following examples:
- Hashing (as it relates to our projects)
- Makefiles - You need to know how to define makefiles using explicit rules.
- Big Endian vs. Little Endian
- Assembly
- irmovl, rrmovl, mrmovl, rmmovl
- addl, subl, multl, divl, modl
- jmp, jle, jl, je, jne, jge, jg
- pushl, popl, call, ret
- .pos, .align, .long
- halt, .pos, .align, .long
- All registers
- rdch, rdint, wrch, wrint
- Any directives necessary to set a frame
- You do not need to follow caller save nor callee save usage conventions
- The following cheat sheet will be provided:
Assembly Cheat Sheet
- Signals (you don't need to write code)
- Process Control
- Multitasking
- User/Kernel Modes
- Process Life Cycle
- Unix I/O
- open()
- close()
- fork()
- wait()
- waitpid()
- pipes
- dup2
- exit
- execlp and execvp (you do not need to worry about the others)
- The following cheat sheet will be provided:
Process Cheat Sheet
- Threads (you don't need to write code)
- Time - No time functions, but you need to understand user time,
system/kernel time, and wall time
- Static and shared libraries (you don't need to write code)
- Techniques for code optimization
- Data Representation (you don't need to know how to represent a number using the IEEE standard)
- gdb (similar to what you did for the quiz)
- valgrind (similar to what you did for the quiz)
- Material covered by Dr. Neil Spring's videos
The exam will NOT cover the following topics:
Practice Material
- Notice we do not post old final exams for the course.
- No final exam practice material has been posted in grace. You can use
previous midterms already available in grace that have questions regarding
processes. Also you can use review material from previous midterms and
quizzes, exercises, and lab worksheets.
Web Accessibility