Skip to content

This repository holds my Assembly and C code with a focus on systems programming and computer architecture.

Notifications You must be signed in to change notification settings

gitclonehama/c-portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

C Programming Portfolio

A comprehensive showcase of systems programming, computer architecture, and low-level development projects demonstrating proficiency in C/C++, assembly language, and computer systems concepts.

Overview

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.

Course Contents

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

Technologies & Skills Demonstrated

Programming Languages

  • 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

Core Concepts

  • 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

Development Tools

  • 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

Key Projects Highlights

Binary/Octal Converter

Custom implementation of number system conversion using character encoding (Y/N representation).

Memory Decoder

Sophisticated bit manipulation algorithm for decoding encrypted data streams using custom encoding schemes.

Assembly Language Programming

Complete ARM assembly implementations including:

  • Mathematical algorithms (GCD, Armstrong numbers)
  • Game logic (Conway's Game of Life)
  • Graphics and image processing routines

Cache Simulator

Full cache memory simulation with:

  • Tag/Set/Offset address breakdown
  • Cache hit/miss tracking
  • Memory hierarchy modeling
  • Performance analysis tools

Learning Outcomes

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

Getting Started

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]

Contact & Collaboration

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.

About

This repository holds my Assembly and C code with a focus on systems programming and computer architecture.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published