General Information
- Date: Saturday, May 13
- Time: 4 pm - 6 pm
- Location:
- Sections 01's (0101, 0102, etc.) and 02's (0201, 0202, etc.) -
PHY 1412
- Sections 03's (0301, 0302, etc.) -
CHM 1407
- Honor's Section: Information will be provided by Dr. Spring.
- 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.
- Posting any information in Piazza about the exam after taking it
is considered an academic integrity violation.
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
- mkdir
- rmdir
- ln -s /* for creating links */
- 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
- memset
- 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 (both in C and Assembly)
- Memory maps - Please use a style similar to the one provided
in the following examples:
- 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 - The following cheat sheet will be provided:
Threads Cheat Sheet
- 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
- gdb (similar to what you did for the debugging quiz)
- valgrind (similar to what you did for the debugging quiz)
The exam will NOT cover the following topics:
Honor's Section
Additional information will be provided by Dr. Spring.
Practice Material
- Notice we do not post old final exams for the course.
- Some practice material has been posted in grace.
Web Accessibility