Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ECE116 — Programming II

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.

Contents

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.

Requirements

  • Linux or WSL
  • gcc
  • make for 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.

Building

Project 1

gcc -std=c11 -Wall -Wextra project1/src/project1.c -o project1/project1
./project1/project1

Timing/benchmark variant:

gcc -std=c11 -Wall -Wextra project1/src/project1-with-times.c -o project1/project1-with-times

Project 2

gcc -std=c11 -Wall -Wextra project2/src/project2.c -o project2/project2
./project2/project2

Timing/benchmark variant:

gcc -std=c11 -Wall -Wextra project2/src/project2-with-times.c -o project2/project2-with-times

Project 3

cd project3/src
make
./project3

Project 4

cd project4/src
make project4
make p4diff

Tests and sample data

The 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.sh

Optimization artifacts

Projects 1 and 2 contain benchmark input/output files and spreadsheet summaries:

  • project1/optimization/
  • project1/project1.xlsx
  • project2/optimization/
  • project2/project2.xlsx

These are retained as coursework experiment artifacts rather than build outputs.

About

ECE116 Programming II coursework in C: data structures, file-based databases, optimization experiments, and POSIX process programming.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages