Coursework repository for ECE116 Programming II. The projects are written in C and cover data structures, searching and sorting, performance measurements, file-backed object storage, and POSIX process programming.
| Folder | Description |
|---|---|
project1/ |
Student-record processing with search/sort operations and benchmark data for comparing implementations. |
project2/ |
Extended student/course data management using dynamic data structures, hashing/searching, and optimization experiments. |
project3/ |
Persistent object database that imports, stores, searches, exports, and removes arbitrary binary/text objects. |
project4/ |
Autograder-style process runner that compiles C programs, executes tests with timeouts, and compares program output. |
- Linux or WSL
gccmakefor projects that include a Makefile- POSIX APIs for projects 3 and 4
Projects 3 and 4 use POSIX functionality such as ftruncate, fork, exec, pipes, signals, and sigaction. Build them on Linux/WSL or another POSIX-compatible environment.
gcc -std=c11 -Wall -Wextra project1/src/project1.c -o project1/project1
./project1/project1Timing/benchmark variant:
gcc -std=c11 -Wall -Wextra project1/src/project1-with-times.c -o project1/project1-with-timesgcc -std=c11 -Wall -Wextra project2/src/project2.c -o project2/project2
./project2/project2Timing/benchmark variant:
gcc -std=c11 -Wall -Wextra project2/src/project2-with-times.c -o project2/project2-with-timescd project3/src
make
./project3cd project4/src
make project4
make p4diffThe repository includes public/Autolab-style test inputs and expected outputs:
project1/tests/project2/tests/project3/project3tests/project4/extra/input/tests/
Projects 1 and 2 also include scripts from the original coursework:
cd project1
./run_tests.sh
./run_tests-public.sh
./run_optimization_tests.sh
cd ../project2
./run_tests.shProjects 1 and 2 contain benchmark input/output files and spreadsheet summaries:
project1/optimization/project1/project1.xlsxproject2/optimization/project2/project2.xlsx
These are retained as coursework experiment artifacts rather than build outputs.