Skip to content

AdamTKoy/c-projects

Repository files navigation

C Projects

This repository contains several coding projects written in C for a Linux environment.

Please note: only the files listed below were entirely or partially written by me. All other files included in a given project were provided as starter code.

files_mmap_fseek_fread

file(s) written/modified:

  • lookup1.c
  • lookup2.c

demonstrates understanding of:

  • working with file functions including mmap, fseek, fread

memory_management

file(s) written/modified:

  • alloc.c

demonstrates understanding of:

  • memory allocation
  • efficient memory management
  • performance optimization

multithread_makefile

file(s) written/modified:

  • parmake.c

demonstrates understanding of:

  • parallel programming with dependencies
  • using thread-safe data structure
  • resource allocation graph (RAG)
  • deadlock detection
  • syncronization

multithread_password_decrypt

file(s) written/modified:

  • cracker1.c
  • cracker2.c

demonstrates understanding of:

  • multithreaded programming
  • using thread-safe data structure
  • using synchronization primitives

mutexes_and_deadlock

file(s) written/modified:

  • libdrm.c

demonstrates understanding of:

  • synchronization primitives
  • deadlock detection via resource allocation graph

pipe_map_reduce

file(s) written/modified:

  • mapreduce.c

demonstrates understanding of:

  • interprocess communication (IPC)
  • pipes
  • files and file descriptors
  • how Google’s MapReduce works

server_client_networking

file(s) written/modified:

  • client.c
  • server.c

demonstrates understanding of:

  • networking components (including building a working client and server)
  • network error handling
  • epoll and non-blocking I/O

simple_dd

file(s) written/modified:

  • dd.c

demonstrates understanding of:

  • working with files and file commands in a Linux environment

simple_minix_filesystem

file(s) written/modified:

  • minixfs.c

demonstrates understanding of:

  • working with files via inodes in the kernel
  • filesystem operations
  • traversing direct and indirect data blocks
  • modifying file permissions

simple_shell

file(s) written/modified:

  • shell.c

demonstrates understanding of:

  • how C’s shell works
  • the fork, exec, wait pattern
  • processes
  • signals

simple_vector

file(s) written/modified:

  • vector.c
  • sstring.c

demonstrates understanding of:

  • implementing a C++ style vector in C
  • using dynamic/heap memory
  • using malloc, calloc, realloc, and free
  • function pointers
  • Object Oriented Programming (OOP) in C
  • String manipulation in C

strings_and_pointers

file(s) written/modified:

  • part1-functions.c
  • part2-main.c

demonstrates understanding of:

  • pointers
  • strings
  • functions
  • function pointers

synchronization_and_threading

file(s) written/modified:

  • barrier.c
  • queue.c
  • semamore.c

demonstrates understanding of:

  • synchronization primitives
  • working with multiple threads
  • writing thread-safe programs

testing_and_edge_cases

file(s) written/modified:

  • camelCaser.c
  • camelCaser_tests.c

demonstrates understanding of:

  • test driven development, unit testing
  • string manipulation
  • programming in C

virtual_memory

file(s) written/modified:

  • mmu.c

demonstrates understanding of:

  • working with virtual memory (including page tables)
  • virtual address translation process
  • MMU: Memory Management Unit
  • TLB: Translation Lookaside Buffer

About

Projects exploring the fundamentals of programming in C (via Linux VM)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors