Exams
Exam Overview
Midterm Review Session:
Friday, February 6, 2026
(in TBD and on Zoom, 4:30 - 6:30 pm)
Midterm Exam:
Monday, February 9, 2026
(TBD,
5:30 - 6:40 pm)
Final Review Session:
Friday, March 13, 2026
(in TBD and on Zoom, 4:30 - 6:30 pm)
Final Exam:
Wednesday, March 18, 2026
(TBD,
12:30 - 2:20 pm)
See the "Midterm Policies" and "Final Policies" sections below for more details.
Midterm Details
Midterm Policies
You will have 70 minutes to complete the exam. You will be asked to check in with a specific staff member early in the exam room to receive a copy of the exam. You can read and fill out the cover page of the exam, but you should not look at the exam questions until you are told to begin.
- To Bring: student ID, pencil, eraser, ONE double-sided sheet of handwritten notes
- Provided:
midterm reference sheet [PDF],
printed exam with white space for work, time keeping
- Countdown timer and exam clarifications will be projected in the lecture hall
- Not Allowed: books, printed notes, cell phone (silence and put away), watches, AI/AR glasses, hats, calculators, or any other electronic device (unless specifically allowed by an approved accommodation)
Midterm Topics
Program Organization
- System layers: C language, libraries, and operating system
- Building an executable: preprocessing, compiling, linking
- Preprocessor:
#include,#define,#ifndef, etc.
- Preprocessor:
- Structure of C/C++ programs: header files, source files
- Declarations vs definitions
- Organization and use of header files, including
#ifndefguards - Faking modularity in C – headers, implementations
- Internal vs. external linkage; use of
staticfor internal linkage - Dependencies and recompilation
- Make and makefile basics
- Version control basics (
git)add,commit,push, etc.- What to put in a repo and what to leave out
C Language
- Data types
- Casting
- Pointers (pointer arithmetic, relationship to arrays)
- String constants, arrays of characters, C string library
- Structs
- Extended integer types (e.g.,
int32_t,uint64_t) typedef
- Standard I/O library and streams
stdin,stdout,fopen,fread,scanf,printf, etc.
- POSIX libraries - wrappers for systems calls
- POSIX-layer I/O:
open,read,write, etc. - Relationship between C standard library, POSIX library functions, and system calls
- POSIX-layer I/O:
- Error handling - error codes and
errno - Process address space and memory map (code, static data, heap, stack)
- Object lifetimes: static, automatic, dynamic
- Dynamic allocation (
malloc,free)
- Function parameters
- Call by value semantics (including structs, pointers)
- Arrays as parameters - pointers
- Using pointers for call-by-reference semantics
- Function pointers as parameters
- Linked data structures (e.g., linked lists, hash tables)
- Potential bugs (e.g., memory leaks, dangling pointers)
C++ Language
- Classes and modularity, namespaces
- Create and change simple class definitions
- Constructors, copy constructors, assignments, destructors
- Other basic differences from C
- Simpler, type-safe stream I/O (
cout,cin,<<and>>) - Type-safe memory management (
new,delete,delete[]) - References – particularly reference parameters
- More pervasive use of
const(const data and parameters, const member functions)
- Simpler, type-safe stream I/O (
Midterm Practice
The following Midterm Review packet will be used in the Midterm Review session.
- Midterm Review Packet (solutions)
Past Midterm Exam Database
In addition to old exams, you will want to review homework exercises, work the suggested exercises at the end of most of the lectures, and review lecture and section material.
Final Details
Final Policies
You will have 110 minutes to complete the exam. We will distribute the exam early and you can read and fill out the cover page of the exam, but you should not look at the exam questions until you are told to begin.
- To Bring: student ID, pencil, eraser, ONE double-sided sheet of handwritten notes
- Provided:
final reference sheet [PDF],
printed exam with white space for work, time keeping
- Countdown timer and exam clarifications will be projected in the lecture hall
- Not Allowed: books, printed notes, cell phone (silence and put away), watches, AI/AR glasses, hats, calculators, or any other electronic device (unless specifically allowed by an approved accommodation)
Final Additional Topics
More C++
- Templates
- Template parameters for classes and functions
- Compiler generation an instance of a template
- STL, Containers, and Iterators
- Use basic containers (vector, list, map) and iterators in C++ code
- Smart pointers, reference counting semantics, using with STL
- Select between
unique_ptr,shared_ptr, andweak_ptras appropriate for an application - Track reference counting during the execution of smart pointer code
- Manage ownership (e.g., grant, transfer) of pointers properly using STL functions
- Select between
- Subclasses, inheritance, virtual functions, dynamic vs static dispatch (function calls), vtables, constructors and destructors in subclasses
- Pure virtual functions and abstract classes (what they are, how it works)
- Using class heirarchies with STL and smart pointers, assignment slicing, value vs pointer semantics
- C++ casts
Network Programming
- Basic network layers: physical, data link, IP, TCP, application
- Packets, and packet encapsulation across layers
- IP addresses, address families (IPv4 and IPv6), DNS, ports
- Stream sockets, file descriptors, read, write, close
- Client steps: address resolution, create socket, connect socket to server, read/write (including retrys), close
- Server steps: determine address and port, create socket, bind socket to address/port, listen (and how the OS queues pending connections), accept connection, read/write, close
- Very basic HTTP and HTML (e.g., understand data sent and received by something like the HW4 web server)
Concurrency
- Multiple processes and fork() (review of CSE351 mostly), shared file descriptors and close() in forked processes
- Threads - concurrent execution inside a single process; know a few of the pthread basics (i.e., what it means to create a thread and start execution in a function; passing arguments to threads); basic issues involving sharing data between threads and locking.
- Use of concurrency to improve throughput and resource utilization
Final Practice
The following Final Review packet will be used in the Final Review session.
- Final Review Packet (solutions)
Past Final Exam Database
Note: Summer final exams are 60 minutes long compared to 110 minutes during the regular year. The topics are generally the same so all of the old exams should be useful for review.