Lab Rules
These rules apply to every portion. They are also included in the directed portion before you change code.
- Put implementation changes and private headers under
src/. Leave the supplied files ininclude/andapp/, and the Makefile, unchanged; those files are not part of your implementation submission. - Preserve the program’s results, input checks, and error handling. Matching the
SVG drawing alone is insufficient;
make benchmarkalso compares the data used to construct it. Support all valid inputs and parameters, without hardcoded benchmark answers. - Use the supplied build settings for every comparison. The course LLM policy applies to all portions; submitting AI-produced code is not allowed.
The directed exercise limits changes to Gaussian blur’s coordinate and address calculations. The open-ended portion allows broader changes. The details below are a reference when you need them.
Implementation Requirements
The supplied interfaces in include/ describe the functions and data structures
that the rest of the program expects. Preserve those interfaces. The
Program Guide’s description of the result
explains the returned data; consult the relevant stages as you work on them.
Match all detected pixels, connections, original and simplified paths, including their ordering and IDs. An ID identifies an entry in an array; changing the order can change which pixel a path refers to even when its drawing looks the same. Keep input validation and failure handling intact.
The grader compiles the C files under src/ against the supplied public headers
and build settings. Changes to include/, app/, or the Makefile are not used
by the grader. Adding private headers and C files under src/ is allowed.
Build Settings and Restrictions
The supplied Makefile uses:
CC = gcc
CFLAGS = -std=c11 -O2 -g -Wall -Wextra -Wpedantic -mcpu=neoverse-v1 -pthread -fopenmp
CPPFLAGS = -Iinclude -Iapp
LDLIBS = -lm
Do not override these settings. The open-ended portion and competition allow SIMD instructions and source-level compiler attributes, subject to the implementation requirements above.