This repository showcases a collection of projects and assignments spanning core areas of computer science, from low-level hardware interactions to high-level algorithmic problem-solving, machine learning, and artificial intelligence. It reflects a strong foundation in computer systems, algorithms, and data-driven computing.
This repository is organized into eight main areas:
-
Assembly Language
- Low-level programming using assembly language, focusing on direct interaction with hardware components.
- Demonstrates understanding of CPU architecture, memory management, and instruction sets.
-
Computer Architecture
- Explores how computers are structured and operate at the hardware level.
- Includes topics such as logic gates, processor design, memory hierarchy, and performance optimization.
-
Data Structures and Algorithms
- Contains implementations of fundamental data structures (e.g., arrays, linked lists, trees, graphs) and algorithms (e.g., sorting, searching, dynamic programming).
- Emphasizes algorithm design, complexity analysis, and real-world application.
-
Numerical Methods
- Focuses on solving mathematical problems computationally, using techniques such as interpolation, root finding, and solving systems of equations.
- Includes iterative methods, matrix operations, and polynomial manipulation.
-
Systems Programming
- Implementations of basic C programs which touch on lower level system concepts such as socket programming, multithreading, and file processing.
- Helped gain insight into my first lower level language and shows application of data structures and algorithms.
-
GPU Computing
- Practical experience with massively parallel programming using CUDA C, executed on the NCSA Delta supercomputer node.
- Custom CUDA kernels for:
- Matrix Multiplication: Multiple versions optimized for performance benchmarking.
- Vector Multiplication: High-performance implementations.
- Convolution Operations: Designed to measure and compare performance under varying conditions.
- Focuses on performance measurements and optimizations for parallel computation.
-
Database Systems
- Focused on writing SQL queries and exploring database features.
- Includes:
- SQL Querying: Writing complex queries using JOINs, subqueries, window functions, and aggregations.
- Stored Procedures & Triggers: Automating tasks and enforcing business rules within the database.
- Schema Design & Normalization: Structuring relational databases for efficiency and scalability.
- Hands-on Experience: Working with MySQL services.
-
Machine Learning & AI
- Practical experience with machine learning techniques and theory.
- Supervised Learning: Implementations of regression, classification, and neural networks.
- Unsupervised Learning: Clustering techniques and dimensionality reduction.
This repository follows a progression from understanding low-level hardware interactions in Assembly Language and Computer Architecture to mastering high-level algorithmic thinking in Data Structures and Algorithms. By working through these areas, I have built a robust foundation in both computer system fundamentals and the design of efficient software solutions.
- Assembly Language gives insight into how software interacts directly with hardware, allowing for efficient resource management.
- Computer Architecture bridges the gap between software and hardware, providing a deeper understanding of how code executes on real machines.
- Data Structures and Algorithms take the lessons from lower levels and apply them to build scalable and optimized solutions for complex computational problems.
- Numerical Methods showcases the application of computational techniques to solve scientific and engineering problems.
- Systems Programming exhibits practical usage of a lower level programming language and systems programming concepts.
- GPU Computing demonstrates the power of parallel processing to accelerate data-intensive computations and highlights the importance of performance optimization in modern computing.
- Database Systems focuses on organizing, querying, and optimizing large-scale data storage solutions.
- AI & ML Harnessing data-driven intelligence for predictive modeling and decision-making.
Each directory corresponds to one of the eight focus areas. Inside each directory, you'll find code implementations and detailed explanations.
- AssemblyLanguage/: Contains assembly programs demonstrating fundamental hardware interactions.
- ComputerArchitecture/: Projects exploring the design and performance of computer systems.
- DataStructuresAlgorithms/: Implementations of common data structures and algorithms.
- NumericalMethods/: Numerical computation projects tackling mathematical problems.
- SystemsProgramming/: C programs showcases basic lower level system concepts such as multithreading, socket programming, and text processing.
- GPUComputing/: CUDA C programs focusing on parallel computing techniques, with performance measurements and custom kernel implementations.
- DatabaseSystems/: SQL scripts demonstrating query writing and database design.
- MachineLearningAI/: Machine learning models, deep learning experiments, and AI algorithms.