A comprehensive showcase of systems programming, computer architecture, and low-level development projects demonstrating proficiency in C/C++, assembly language, and computer systems concepts.
This portfolio contains coursework and projects from two of my core computer science courses that focus on systems programming, computer architecture, and low-level programming concepts. The projects demonstrate my understanding of memory management, data structures, assembly language programming, debugging techniques, and computer systems architecture.
Focus: Unix/Linux systems programming, memory management, and low-level C programming
- 1-unix-vim-cnumbers - Unix fundamentals and number system conversions
- 2-memory-string - Memory manipulation and string decoding algorithms
- 3-iostream-structure - I/O operations and data structure implementations
- 4-assembly-intro - Introduction to ARM assembly language programming
- 5-assembly-practice - Advanced assembly programming with real-world applications
- 6-debugging-instructions-stackframes - Debugging techniques and stack frame analysis
- 7-floating-point - Floating-point arithmetic and graphics programming
- 8-arrays-structures - Complex data structures and image processing
Focus: Computer architecture, memory systems, and performance analysis
- proj01 - Memory addressing and hexadecimal calculations
- proj02-proj05 - Core architecture concepts and implementations
- proj06 - Cache simulation and memory hierarchy
- proj07 - Advanced computer architecture topics
- proj08 - Client-server architecture and network programming
- C - Systems programming, memory management, pointer manipulation
- C++ - Object-oriented programming, STL usage, modern C++ features
- ARM Assembly - Low-level programming, instruction set architecture
- Shell Scripting - Unix/Linux automation and build systems
- Memory management and pointer arithmetic
- Data structures (stacks, arrays, linked structures)
- Algorithm implementation and optimization
- Debugging and profiling techniques
- Computer architecture and assembly programming
- I/O operations and file handling
- Image processing and graphics programming
- Network programming and client-server architectures
- Cache simulation and memory hierarchy optimization
- GCC/G++ - Compilation and optimization
- Make - Build automation and dependency management
- GDB - Debugging and program analysis
- Vim - Text editing and development workflow
- Unix/Linux - System administration and command-line proficiency
Custom implementation of number system conversion using character encoding (Y/N representation).
Sophisticated bit manipulation algorithm for decoding encrypted data streams using custom encoding schemes.
Complete ARM assembly implementations including:
- Mathematical algorithms (GCD, Armstrong numbers)
- Game logic (Conway's Game of Life)
- Graphics and image processing routines
Full cache memory simulation with:
- Tag/Set/Offset address breakdown
- Cache hit/miss tracking
- Memory hierarchy modeling
- Performance analysis tools
Through these projects, I have developed:
- Systems Programming Expertise - Deep understanding of how software interacts with hardware
- Memory Management Skills - Proficient in manual memory allocation, pointer arithmetic, and avoiding memory leaks
- Assembly Language Proficiency - Ability to write, debug, and optimize low-level code
- Debugging and Problem-Solving - Advanced debugging techniques using various tools and methodologies
- Computer Architecture Understanding - Comprehensive knowledge of CPU design, memory hierarchies, and performance optimization
- Software Engineering Practices - Clean code writing, documentation, and project organization
Each project directory contains:
- Source code with comprehensive comments
- Makefile for easy compilation
- README.md with project-specific documentation
- Test files and example inputs where applicable
To explore a specific project:
cd [course-directory]/[project-name]
make
./[executable-name]
This portfolio demonstrates my commitment to understanding fundamental computer science concepts and my ability to implement complex systems in low-level languages. I'm always interested in discussing these projects or collaborating on similar systems programming challenges.
This portfolio is continuously updated as I complete additional coursework and projects in systems programming and computer architecture.