DIP Past QuestionsCSE 4227 · Digital Image Processing
DIP Past Questions
Her past finals from Fall 2021 to Spring 2025 (90 questions, her parts only) and the Fall 2025 quiz questions that were collected (12), cut out one by one, with one worked answer per topic.
Exam format, Fall 2025
CLO125Answer 5 of 6, 5 marks eachWhy / what / describe / how (from memory)
CLO2244 x 6 or 3 x 8 (option count not stated)Apply algorithm to given input; write theory, equation, calculation; proofs
CLO321Answer 3 of 4, 7 marks eachCase study: pick technique and justify why; to-the-point answers score
CLO2: almost the same types of questions come each time, plus 1-2 new ones.
Questions can be mixed (example given: Laplacian + segmentation) or separate (example given: compression).
CLO3: hard to get zero; to-the-point writing earns marks; always justify why you use a method.
15-25 marks of the paper are 'critical' (harder) questions.
From her Spring 2025 suggestion class (translated)
Marks: 10 attendance + class performance, 20 from best 3 of 4 quizzes, 70 final (3 hours).
CLO1 questions go in chapter order, one per chapter group: Ch1-2, Ch3, Ch6 colour, Ch8 compression, Ch9 morphology, Ch10 segmentation. Answers come from memory.
CLO2 ('math problems') came from Ch3, Ch8 and Ch10.
CLO3 case studies came from Ch3, 8, 9, 10, 11: one Ch3+Ch10 mixed (filtering leads to edge detection), one full Ch9, one full Ch8, one fully mixed case.
Case answers are short; most time goes into thinking. If a part has no marks shown, marks split equally.
Solving the quiz questions helps even if the exact question does not repeat.
She warned the pattern changed, so copying old answers is not enough; but nothing outside what she taught appears.
Most repeated topics
How many of her 8 finals each topic appeared in.
7 of 8Histogram equalization (PDF, CDF, s=round(7*CDF), histograms, curve) Apply / math
7 of 8Huffman code + L_avg + entropy + CR + redundancy Apply / math
6 of 8Colour: RGB cube, additive/subtractive, CMY(K), HSI, which model Theory
6 of 8Spatial filter at a pixel (mean, weighted, median, max/min, Laplacian, Sobel) Apply / math
5 of 8Case: which morphological op and why (noise, gaps, coins, boundaries) Case study
5 of 8Chain code + CFD/NCFD (start & rotation invariant) Apply / math
5 of 8Compression ratio / relative redundancy / entropy numbers Apply / math
5 of 8Compression: why, 3 redundancies, CR & R_D formula Theory
5 of 8Distances D4/D8/De, paths, adjacency, components Apply / math
5 of 8Morphology: SE, erosion/dilation eq & effects, opening/closing Theory
5 of 8RMSE fidelity criterion Apply / math
5 of 8Segmentation: 2 approaches, edges, gradient ops, LoG, Canny steps/criteria/NMS/hysteresis, FP/FN, region growing Theory
4 of 8Case: enhancement / filtering / segmentation pipeline choice Case study
4 of 8Dilation / erosion / opening / closing on a grid Apply / math
One solved question per topic (19)
A worked answer for one of her questions on each topic, newest first, done the way her slides do it. Tap to open.
01 Histogram equalization · Fall 2025 quiz 2 (set C) · Q2
Show worked answer
0
1
2
3
4
0
1
2
4
7
0
1
2
1
3
1
5
2
5
2
1
4
1
3
7
6
3
1
4
Input image
rk
0
1
2
3
4
5
6
7
nk
1
6
3
2
3
2
1
2
Histogram h(rk) = nk (count each value)
Normalized histogram p(rk) = nk/N
Image is 4×5, so N = 20 pixels; L = 8 gray levels (0 to 7).
rk
Step 1: nk
Step 2: PDF p(rk)=nk/N
Step 3: CDF
Step 4: (L−1)·CDF = 7·CDF
Step 5: sk (round)
0
1
0.0500
0.0500
0.3500
0
1
6
0.3000
0.3500
2.4500
2
2
3
0.1500
0.5000
3.5000
4
3
2
0.1000
0.6000
4.2000
4
4
3
0.1500
0.7500
5.2500
5
5
2
0.1000
0.8500
5.9500
6
6
1
0.0500
0.9000
6.3000
6
7
2
0.1000
1.0000
7.0000
7
Round-off rule from the slides: .5 goes up (3.5 → 4).
Gray level rk
New gray level sk
No. of pixels nk
0
0
1
1
2
6
2
4
3
3
4
2
4
5
3
5
6
2
6
6
1
7
7
2
Mapping the new gray levels into number of pixels
s
Pixels in equalized image
0
1
1
0
2
6
3
0
4
5
5
3
6
3
7
2
Equalized histogram counts (add the nk that map to the same s)
Original histogram (nk vs rk)Equalized histogram (n vs sk)Transformation function s = T(r) (staircase)
0
1
2
3
4
0
2
4
5
7
0
1
4
2
4
2
6
2
6
4
2
5
2
3
7
6
4
2
5
Equalized output image (replace each r by its s)
02 Filters at one pixel + bit planes · Spring 2025 final · Q2b
Show worked answer
Bit plane 2 is the MSB (weight 4), plane 1 has weight 2, plane 0 has weight 1 (3-bit image).
0
1
2
3
4
5
6
0
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
2
1
1
0
0
0
1
1
3
1
0
0
0
0
0
1
4
1
1
0
0
0
1
1
5
0
0
0
0
0
0
0
6
1
1
1
1
1
1
1
Bit plane 2
0
1
2
3
4
5
6
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
0
0
0
0
0
1
3
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
5
1
1
1
1
1
1
1
6
1
1
1
1
1
1
1
Bit plane 1
0
1
2
3
4
5
6
0
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
2
1
1
0
0
0
1
1
3
1
1
1
0
1
1
1
4
1
1
0
0
0
1
1
5
1
1
1
0
1
1
1
6
1
1
1
1
1
1
1
Bit plane 0
value = 4·b2 + 2·b1 + 1·b0
0
1
2
3
4
5
6
0
7
7
7
7
7
7
7
1
7
7
7
2
7
7
7
2
7
5
0
0
0
5
7
3
5
1
1
0
1
1
5
4
5
5
0
0
0
5
5
5
3
3
3
2
3
3
3
6
7
7
7
7
7
7
7
Reconstructed original image
Task 1: 3×3 max filter at (3,2) (row 3, column 2, counted from 0 at the top-left)
CR = 100/200 = 0.5: RLE expands the data (slide 109: small runs give expansion instead of compression).
iv) Huffman for A 0.4, B 0.3, C 0.2, D 0.1
Sort by probability (largest first). Repeatedly add the two smallest and re-sort (a sum that ties goes below the equal ones). Then walk back from the last column: the upper branch gets 0, the lower gets 1.
Boundary pixels as read from the figure (1 = black)
Walk the boundary anticlockwise, starting at top-left pixel (0,2). Directions (8-connected): 0 →, 1 ↗, 2 ↑, 3 ↖, 4 ←, 5 ↙, 6 ↓, 7 ↘.
move
from → to (row, col)
code
1
(0,2) → (1,1)
5
2
(1,1) → (2,1)
6
3
(2,1) → (3,2)
7
4
(3,2) → (4,3)
7
5
(4,3) → (4,4)
0
6
(4,4) → (3,5)
1
7
(3,5) → (2,6)
1
8
(2,6) → (1,5)
3
9
(1,5) → (0,4)
3
10
(0,4) → (1,3)
5
11
(1,3) → (0,2)
3
Chain code from top-left pixel (0,2) (CC): 56770113353 (11 moves)
Shape number (smallest circular shift of CC) → start-point invariant only: 01133535677
Circular first difference (CFD), slide 22 rule: each digit = (next code − this code) mod 8. The last digit wraps round: (first − last), because the boundary is closed.
i
calculation
CFD digit
1
(6 − 5) mod 8 = 1
1
2
(7 − 6) mod 8 = 1
1
3
(7 − 7) mod 8 = 0
0
4
(0 − 7) mod 8 = 1
1
5
(1 − 0) mod 8 = 1
1
6
(1 − 1) mod 8 = 0
0
7
(3 − 1) mod 8 = 2
2
8
(3 − 3) mod 8 = 0
0
9
(5 − 3) mod 8 = 2
2
10
(3 − 5) mod 8 = 6
6
11
(5 − 3) mod 8 = 2 (wrap: first − last)
2
CFD = 11011020262 → rotation invariant
NCFD = smallest circular shift of the CFD (start reading at digit 3) = 01102026211
09 Morphology on a grid · Fall 2025 quiz 4 (set C) · Q2
Show worked answer
You choose the image. Use something small and clean: a 4×4 square inside a 6×6 image, and a 3×3 square SE with the origin at the centre.
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
1
1
1
1
0
2
0
1
1
1
1
0
3
0
1
1
1
1
0
4
0
1
1
1
1
0
5
0
0
0
0
0
0
A (6×6)
0
1
2
0
1
1
1
1
1
1
1
2
1
1
1
B (3×3), origin centre
Algorithm (slide 61, edge detection by dilation): 1. dilate A by B; 2. subtract A. Edges = (A ⊕ B) − A.
0
1
2
3
4
5
0
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
1
1
3
1
1
1
1
1
1
4
1
1
1
1
1
1
5
1
1
1
1
1
1
A ⊕ B
0
1
2
3
4
5
0
1
1
1
1
1
1
1
1
0
0
0
0
1
2
1
0
0
0
0
1
3
1
0
0
0
0
1
4
1
0
0
0
0
1
5
1
1
1
1
1
1
(A ⊕ B) − A = outer edge
Inner boundary instead (slide 119): β(A) = A − (A ⊖ B).
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
0
0
0
0
0
2
0
0
1
1
0
0
3
0
0
1
1
0
0
4
0
0
0
0
0
0
5
0
0
0
0
0
0
A ⊖ B
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
1
1
1
1
0
2
0
1
0
0
1
0
3
0
1
0
0
1
0
4
0
1
1
1
1
0
5
0
0
0
0
0
0
β(A) = A − (A ⊖ B) = inner boundary
Write the set definitions too: A ⊕ B = {z | (B̂)z ∩ A ≠ ∅}, A ⊖ B = {z | (B)z ⊆ A}.
10 Hit-or-miss: corners and end points · Fall 2023 final · Q2e
Show worked answer
0
1
2
3
4
5
6
7
8
9
10
11
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
1
1
1
0
1
1
1
1
1
0
2
0
1
0
0
0
1
0
1
0
0
0
1
0
3
0
1
0
0
0
0
0
1
0
0
0
0
0
4
0
1
0
0
0
0
0
1
1
1
1
1
0
5
0
1
0
0
0
0
0
0
0
0
0
1
0
6
0
1
0
0
0
1
0
1
0
0
0
1
0
7
0
1
1
1
1
1
0
1
1
1
1
1
0
Input image A
Each SE is 3×3: 1 = must be object, 0 = must be background, × = don't care. A pixel is marked when the SE fits it exactly (both its 1s and its 0s). Pixels outside the image count as background.
0
1
2
0
×
1
×
1
0
1
1
2
0
0
×
B1 (has up and right neighbours: bottom-left corner)
0
1
2
3
4
5
6
7
8
9
10
11
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
1
0
0
0
0
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
0
0
0
0
0
0
7
0
1
0
0
0
0
0
1
0
0
0
0
0
A ⊛ B1: 3 found
0
1
2
0
×
1
×
1
1
1
0
2
×
0
0
B2 (up and left: bottom-right corner)
0
1
2
3
4
5
6
7
8
9
10
11
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
0
0
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
0
0
0
0
0
0
7
0
0
0
0
0
1
0
0
0
0
0
1
0
A ⊛ B2: 2 found
0
1
2
0
×
0
0
1
1
1
0
2
×
1
×
B3 (down and left: top-right corner)
0
1
2
3
4
5
6
7
8
9
10
11
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
0
1
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
0
0
0
0
0
0
7
0
0
0
0
0
0
0
0
0
0
0
0
0
A ⊛ B3: 3 found
0
1
2
0
0
0
×
1
0
1
1
2
×
1
×
B4 (down and right: top-left corner)
0
1
2
3
4
5
6
7
8
9
10
11
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
1
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
0
0
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
0
0
0
0
0
0
7
0
0
0
0
0
0
0
0
0
0
0
0
0
A ⊛ B4: 2 found
0
1
2
3
4
5
6
7
8
9
10
11
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
1
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
1
0
0
0
1
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
0
0
0
0
0
0
7
0
1
0
0
0
1
0
1
0
0
0
1
0
Combined: union of the four results = 10 corner pixels
Step 3. Non-maximum suppression: compare each pixel with its two neighbours along its gradient direction (the arrow). Keep it only if it is not smaller than both; otherwise set it to 0.
pixel
M
direction
neighbours along direction
result
(0,0)
200
↓
10
kept
(0,1)
40
↓
20
kept
(0,2)
57
↙
20
kept
(1,0)
10
→
20
suppressed → 0
(1,1)
20
↑
40, 41
suppressed → 0
(1,2)
101
←
20
kept
(2,0)
50
↑
10
kept
(2,1)
41
↑
20
kept
(2,2)
74
←
41
kept
0
1
2
0
200
40
57
1
0
0
101
2
50
41
74
gN(x,y) after non-maximum suppression
Step 4. Double thresholding with TH = 100, TL = 45: strong if gN ≥ 100; weak if 45 ≤ gN < 100; else 0.
0
1
2
0
200
0
0
1
0
0
101
2
0
0
0
gNH(x,y): strong (sure) edges
0
1
2
0
0
0
57
1
0
0
0
2
50
0
74
gNL(x,y): weak edges
Step 5. Hysteresis (connectivity): keep a weak pixel only if it is 8-connected to a strong pixel.
weak pixel
value
strong 8-neighbours
decision
(0,2)
57
(1,2)
kept (connected to a strong pixel)
(2,0)
50
none
discarded
(2,2)
74
(1,2)
kept (connected to a strong pixel)
0
1
2
0
200
0
57
1
0
0
101
2
0
0
74
Final edge map g(x,y)
ii) False positive / false negative: 74 at (2,2) is weak but survives because it touches the strong 101; if it is noise, it is a false positive. 50 at (2,0) is weak with no strong neighbour, so it is dropped; if it was a real edge, that is a false negative. The 40 and 41 are below TL and are removed for the same reason.
iii) TH = 245, TL = 10: no pixel reaches 245, so there are no strong edges. Hysteresis keeps a weak pixel only when it touches a strong one, so every weak pixel is dropped: the output is empty (all real edges become false negatives). A very low TL would otherwise let noise in (false positives); the rule of thumb is TH : TL = 2:1 or 3:1 (slide 52), and 245:10 breaks it.
Round-off rule from the slides: .5 goes up (3.5 → 4).
Step 2. Equalize the specified histogram → Sk = G(z)
zq
pz(zq)
CDF
7·CDF
Sk
0
0
0
0
0
1
0
0
0
0
2
0
0
0
0
3
0.15
0.15
1.05
1
4
0.2
0.35
2.45
2
5
0.3
0.65
4.55
5
6
0.2
0.85
5.95
6
7
0.15
1
7
7
Step 3. Map: for each rk take its Hk, find the S value closest to it, and read that z. If two S values are equally close, take the higher one (slide 58).
rk
nk
Hk
closest S
output z
0
790
1
1
3
1
1023
3
2
4
2
850
5
5
5
3
656
6
6
6
4
329
6
6
6
5
245
7
7
7
6
122
7
7
7
7
81
7
7
7
z
pixels in output
0
0
1
0
2
0
3
790
4
1023
5
850
6
985
7
448
Output histogram
Specification transformation r → z
13 Region growing, split & merge, thresholding · Slides 14–15: region growing, 4-connectivity
Show worked answer
0
1
2
3
4
5
6
0
10
10
10
10
10
10
10
1
10
10
10
69
70
10
10
2
59
10
60
64
59
56
60
3
10
59
10
60
70
10
62
4
10
60
59
65
67
10
65
5
10
10
10
10
10
10
10
6
10
10
10
10
10
10
10
4-connectivity: region grown from the seed 60 at (3,3), |difference to the neighbour it grows from| ≤ 5
Region size = 13 pixels
14 Pixels, paths, distances, bits · Spring 2025 final · Q1b
Show worked answer
4-neighbour (N4): the pixels above, below, left and right. 8-neighbour (N8): N4 plus the four diagonals. m-connectivity: q is m-adjacent to p if q ∈ N4(p), or q ∈ ND(p) and N4(p) ∩ N4(q) has no pixel with a value in V. It keeps the diagonal links of 8-connectivity but removes the double (ambiguous) paths.
0
1
2
3
0
1
0
1
0
1
0
1
0
1
2
1
0
1
0
3
0
1
0
1
Image, V = {1}
4-connectivity: 8 component(s)
8-connectivity: 1 component(s)
m-connectivity: 1 component(s)
4-neighbours of every 1 are 0s, so under 4-connectivity each 1 is its own component. Diagonal neighbours are 1, so 8-connectivity joins them all. m-adjacency allows a diagonal link only when the two pixels share no 4-neighbour in V; here the shared 4-neighbours are all 0, so every diagonal link is allowed and the answer equals the 8-connected one.
Effect of diagonal adjacency: it merges pixels that touch only at corners, so the count drops from 8 to 1. m-connectivity keeps those joins but removes double (ambiguous) paths.
15 Colour models (+ RGB to CMY / HSI numbers) · Spring 2025 final · Q1c
Show worked answer
Colour image: each pixel holds a vector of values, e.g. (R, G, B), one value per colour channel.
Additive mixing (light): coloured lights add up; R + G + B = white; used by monitors and cameras. Subtractive mixing (pigments): each ink absorbs some wavelengths; C + M + Y = black; used in printing.
Purpose of colour models: to specify colours in a standard, numeric way suited to a device or task (display, printing, analysis).
Printing: CMY/CMYK. Segmentation: HSI (HSV), because hue separates colour from brightness, so objects of one colour stay together under different lighting (deck 14 slide 12).
16 Segmentation and Canny theory · Fall 2025 quiz 3 (set D) · Q1
Show worked answer
Two principal approaches (based on two properties of intensity, deck 08 slide 6): discontinuity, which splits the image where intensity changes sharply (points, lines, edges; edge-based methods), and similarity, which groups pixels that are alike by a rule (thresholding, region growing, region splitting and merging).
Why LoG: the Laplacian is a second derivative and is extremely sensitive to noise; it also gives double edges. Smoothing first with a Gaussian removes the noise, then the Laplacian finds edges as zero crossings. One combined LoG mask is cheaper than two filters (slides 33–36).
17 Case: which morphology and why · Spring 2025 final · Q3c
Show worked answer
i) Remove the small bright spots: opening A ∘ B = (A ⊖ B) ⊕ B with a small SE (e.g. 3×3 disk or square). Erosion deletes every bright spot smaller than the SE; the following dilation restores the roads (which are larger) to their size. Opening comes first so the noise is not enlarged or joined to the roads [3].
ii) Join the gaps: closing A • B = (A ⊕ B) ⊖ B, ideally with a line-shaped SE along the road direction. Dilation bridges the small gaps between road pieces; erosion brings the width back, so the roads become continuous without getting thicker [3].
iii) Highlight the boundaries: boundary extraction β(A) = A − (A ⊖ B) (or the morphological gradient (A ⊕ B) − (A ⊖ B)). Subtracting the eroded roads leaves only their outline [3].
iv) Yes. Clean, continuous outlines separate the thin connected road network from the background terrain and from blob-shaped buildings, so roads can be identified and measured [1].
18 Case: enhance, sharpen, segment · Spring 2025 final · Q3a
Show worked answer
i) Two enhancement techniques [4]: (1) Median filter (3×3) to remove background noise specks while keeping stroke edges. (2) Local (adaptive) histogram equalization or contrast stretching per region to fix uneven illumination and make faded ink darker against the paper; a global method would leave the dark corner dark. (Alternatively: gamma correction / log for the faded ink.)
ii) Laplacian [3]: text strokes are thin, fine detail. The second derivative responds strongly to thin lines and points and is isotropic (all directions), so g = f − ∇²f makes faded strokes crisp. Sobel gives thicker edges and responds to direction, which suits large object boundaries more than thin text.
iii) Segmentation [3]: local (adaptive) thresholding, T(x,y) from the local mean (e.g. Niblack T = m + k·s), separates text from background even under uneven light (deck 09 slide 49–52). Then separate text lines with horizontal projection of the binary image (rows with no text pixels are gaps between lines) or connected components.
19 Case: mixed techniques · Spring 2025 final · Q3d
Show worked answer
Write the three techniques below fully; each carries an equal share of the marks.
Power-law (gamma) transformation s = c·rγ: X-rays are often dark or washed out; γ < 1 brightens dark bone regions, γ > 1 darkens over-exposed ones, so faint fracture lines become visible. Advantage: simple, one parameter. Limitation: γ is chosen by trial and acts on the whole image, so it can also amplify noise.
Histogram analysis / equalization: the histogram shows whether the X-ray is dark or low-contrast; equalization spreads the gray levels so bone and the crack separate, and the histogram valley gives a threshold to separate bone from soft tissue. Advantage: automatic, no parameters. Limitation: global; it can over-enhance noise and has no position information.
Chain code: after segmenting the bone, its boundary is coded as a chain code; a fracture shows up as an abrupt change in the code (CFD/NCFD gives a start- and rotation-invariant shape number), so the bone outline can be compared with a normal one. Advantage: compact shape description. Limitation: sensitive to noise on the boundary; needs good segmentation.
Order: gamma or equalization (see the fracture) → edge detection and segmentation of the bone → chain code of its outline (describe and compare the shape).
Every question
Tap a paper to open it.
Finals
Spring 2025 final14 questions
Spring 2025 final · Q1a4 marksSpring 2025 final · Q1b4 marksSpring 2025 final · Q1c4 marksSpring 2025 final · Q1d4 marksSpring 2025 final · Q1e4 marksSpring 2025 final · Q1f4 marksSpring 2025 final · Q2a8 marksSpring 2025 final · Q2b8 marksSpring 2025 final · Q2c8 marksSpring 2025 final · Q2d8 marksSpring 2025 final · Q3a10 marksSpring 2025 final · Q3b10 marksSpring 2025 final · Q3c10 marksSpring 2025 final · Q3d10 marks
Fall 2024 final · Part B5 questions
Fall 2024 final · QB1a5 marksFall 2024 final · QB1b5 marksFall 2024 final · QB25 marksFall 2024 final · QB3a15 marksFall 2024 final · QB3b15 marks
Spring 2024 final13 questions
Spring 2024 final · Q1a5 marksSpring 2024 final · Q1b5 marksSpring 2024 final · Q1c5 marksSpring 2024 final · Q1d5 marksSpring 2024 final · Q1e5 marksSpring 2024 final · Q2a9 marksSpring 2024 final · Q2b9 marksSpring 2024 final · Q2c9 marksSpring 2024 final · Q3a8 marksSpring 2024 final · Q3b8 marksSpring 2024 final · Q3c8 marksSpring 2024 final · Q3d8 marksSpring 2024 final · Q3e8 marks
Fall 2023 final14 questions
Fall 2023 final · Q1a4 marksFall 2023 final · Q1b4 marksFall 2023 final · Q1c4 marksFall 2023 final · Q1d4 marksFall 2023 final · Q1e4 marksFall 2023 final · Q2a6 marksFall 2023 final · Q2b6 marksFall 2023 final · Q2c6 marksFall 2023 final · Q2d6 marksFall 2023 final · Q2e6 marksFall 2023 final · Q3a10 marksFall 2023 final · Q3b10 marksFall 2023 final · Q3c10 marksFall 2023 final · Q3d10 marks
Spring 2023 final14 questions
Spring 2023 final · Q1a9 marksSpring 2023 final · Q1b9 marksSpring 2023 final · Q2a5 marksSpring 2023 final · Q2b5 marksSpring 2023 final · Q2c5 marksSpring 2023 final · Q2d5 marksSpring 2023 final · Q2e5 marksSpring 2023 final · Q2f5 marksSpring 2023 final · Q3a8 marksSpring 2023 final · Q3b8 marksSpring 2023 final · Q3c8 marksSpring 2023 final · Q3d8 marksSpring 2023 final · Q3e8 marksSpring 2023 final · Q3f8 marks
Fall 2022 final · Part A8 questions
Fall 2022 final · QA1a9 marksFall 2022 final · QA1b9 marksFall 2022 final · QA2a5 marksFall 2022 final · QA2b5 marksFall 2022 final · QA2c5 marksFall 2022 final · QA3a8 marksFall 2022 final · QA3b8 marksFall 2022 final · QA3c8 marks
Spring 2022 final14 questions
Spring 2022 final · Q1a9 marksSpring 2022 final · Q1b9 marksSpring 2022 final · Q2a5 marksSpring 2022 final · Q2b8 marksSpring 2022 final · Q3a5 marksSpring 2022 final · Q3b8 marksSpring 2022 final · Q4a5 marksSpring 2022 final · Q4b8 marksSpring 2022 final · Q5a5 marksSpring 2022 final · Q5b8 marksSpring 2022 final · Q6a5 marksSpring 2022 final · Q6b8 marksSpring 2022 final · Q7a5 marksSpring 2022 final · Q7b8 marks
Fall 2021 final · Part B8 questions
Fall 2021 final · QB1a8 marksFall 2021 final · QB1b6 marksFall 2021 final · QB2a8 marksFall 2021 final · QB2b6 marksFall 2021 final · QB3a8 marksFall 2021 final · QB3b6 marksFall 2021 final · QB4a8 marksFall 2021 final · QB4b6 marks
Quizzes
Fall 2025 quizzes (the ones collected)12 questions
Fall 2025 quiz 1 · set C · Q16 marksFall 2025 quiz 1 · set C · Q2a11 marksFall 2025 quiz 1 · set C · Q2b3 marksFall 2025 quiz 1 · set D · Q16 marksFall 2025 quiz 1 · set D · Q2a4 marksFall 2025 quiz 1 · set D · Q2b10 marksFall 2025 quiz 2 · set C · Q16 marksFall 2025 quiz 2 · set C · Q214 marksFall 2025 quiz 3 · set D · Q16 marksFall 2025 quiz 3 · set D · Q214 marksFall 2025 quiz 4 · set C · Q13 marksFall 2025 quiz 4 · set C · Q27 marks