Hi there! My name is Amr, and I'm a Schreyer Honors Student at Pennsylvania State University majoring in Computer Engineering and minoring in Physics. I have a passion for programming and hardware design.
Throughout my academic career, I have developed a strong foundation in programming and software development, with a particular talent for C/C++, Verilog, and Python, and have written a variety of code. I try to apply what I learn in class through creative projects that fuel my interests.
When I'm not studying or working on projects, you can usually find me drawing, watching a show, or trying out new recipes in the kitchen. I'm excited to see where my career in computer engineering takes me, and I'm always looking for new opportunities to learn and grow.
Developed a custom Bootloader using UEFI (Unified Extensible Firmware Interface) in C, integrating UEFI for bootloader functionality and applying core operating system principles.
A dynamic memory allocator in C, that follows operating system and memory management principles. This project includes common memory allocation functions (like malloc, calloc, realloc, and free) and stores memory efficiently with the use of segregated free lists.
An online multiplyer game that makes use of impractical, comical weapons and abilities to create an enjoyable playing experience. The game is built using C++ and Unreal Engine and uses the Epic Online Service to manage player networking.
In this endeavor, I'm creating a retro gaming console on the Raspberry Pi, empowered with an AI-infused voice assistant. The console's buttons provide a nostalgic gaming experience, while I2S ensures high-quality sound output. My vision for the AI is to have it serve as a friendly companion, providing players with witty responses, helpful guidance, and a charming personality, elevating the overall gaming experience to new levels of enjoyment.
Robust memory manager program in C, built using concepts of memory management, networking, and systems programming. This project included the implementation of networking support, enabling users to connect to a remote JBOD server and exchange packets effortlessly. To further optimize performance, I integrated a cache system into the memory manager, resulting in substantial speed improvements by reducing memory access latency.
In this project, I successfully designed and implemented a 32-bit Central Processing Unit (CPU) using Verilog within the Vivado development environment. The CPU encompasses critical components such as the Arithmetic Logic Unit (ALU), control unit, registers, instruction decoder, and data paths. Through meticulous optimization and testing, I ensured the CPU's efficient functionality and performance. This project showcases my expertise in digital design and Verilog programming, demonstrating my ability to create complex and reliable CPU architectures.