Skip to content

Repository files navigation

C Projects

Systems and algorithms work in C, from university computer-science courses: operating-systems internals, networking, data structures, cryptography and a handful of smaller exercises.

Most of these are POSIX programs — they use fork, sockets, pthreads, or the Linux kernel API — so they target Linux (and macOS where noted) rather than Windows.

Projects

Project Area Summary
shell OS A Unix shell with pipes, background jobs and signal handling
kernel-syscalls OS Two new system calls added to the Linux 2.6.38 kernel
sockets-and-threads Networking TCP/UDP client-server pairs and a thread-per-client server
fsm-socket-reader Networking A mail-server client that parses replies with a finite state machine
data-structures Algorithms Linked lists, BSTs and hash tables across several assignments
sudoku-solver Algorithms A constraint-propagation sudoku solver and generator
cryptography Security Classical ciphers, an LD_PRELOAD file logger, and a keylogger exercise
buffer-overflow Security Stack-smashing input generators with annotated disassembly
charset-translation Text ISO 8859-7 Greek transliteration via a finite state machine
string-library Fundamentals The C string functions reimplemented two ways
exercises Fundamentals Quadratics, Markov chains, anagrams, text alignment, games

Each project has its own README with the approach and build instructions.

Building

Every project builds on its own; there is no top-level build. Enter a project directory and run make, or use the compile line its README gives. A C11 compiler is enough for the portable projects; the OS and networking projects need a POSIX system.

A note on these projects

These are coursework projects, since cleaned up for presentation: build files corrected, committed binaries and editor files removed, a README added to each, and a number of real bugs fixed. The bug fixes are called out in the individual READMEs — for example the affine cipher that never decrypted correctly, the kernel handlers that returned a positive errno, and the sudoku solver's non-portable random seed.

Some inline comments and program output are in Greek or transliterated Greek, kept as originally written.

About

Everything written in C, C related programming or Linux/Kernel based.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages