Freshman CS Student @ CMU-Q

Abdelrahman Abdelmoneem

Hi! I am Abdelrahman and I'm a freshman CS student @ CMU-Q. I like building small projects and automating tasks, and I will be updating this website as I work towards getting my degree!

Doha, Qatar

/01

About

I love coding and working on mini projects that take more time to complete than they save.

Outside of academics, I love playing chess (and losing most of the time,) watching TV, and going on walks. If you ever see me, feel free to say hi or challenge me to a chess match (if you dare :) )

  • Currently

    Freshman year at CMU-Q

  • Studying

    Computer Science

  • Hobbies

    Chess, TV, and walking

/02

Research

Update 01 — Dr. Giselle Reis

Prepared for CS 07-129 ahead of the guest talk by Dr. Giselle Reis.

01Why did we move from punch cards to programming languages? What does that tell you about the purpose of programming languages?

(Sourced from Codefinity.) Early programs were written directly in machine code (ones and zeros), and punch cards were used to physically encode those instructions. Every hole on a card represented a specific binary instruction, and the process was extremely error-prone, and people would sometimes drop the stacks of physical cards they were carrying and then need to resort them manually, since operators fed the cards into readers that translated the hole patterns into commands. This changed in the 1950s when FORTRAN introduced syntax people could actually read. It's clear programming languages exist to shift software design toward high-level abstraction instead of low-level manipulation.

02There are hundreds of different programming languages out there. Why do you think we need so many?

Technology just keeps moving forward, and a lot of older languages weren't built to handle the problems that come with newer tech, so instead of trying to force an old language to do something it was never meant for, people build a new one. C was built to run Unix, and Go came out because the languages being used at the time felt too slow for developers' needs. It also comes down to what kind of work someone is doing. Developers pick languages suited to their field, like C++ for games or Python for data work. Even within the same field, people prioritize different things: some want speed, some want to ship fast, and some just want something that's readable.

03What are some drawbacks of a programming language you use? How would you like it to be different? Think of specific examples.

Python is the language I use the most, but it's not perfect. It's interpreted instead of compiled, so it runs line by line instead of being translated into optimized instructions ahead of time, and since it's dynamically typed, every variable's type gets checked at runtime instead of once during compilation. If I could change one thing, I'd want type checking to happen before the program runs instead of only showing up as a runtime error, since that's the bug I run into the most, but I realize it's not that simple.

04If you were going to create a new programming language, how would you start? What do you need to define?

Well first, I would check if an existing programming language can work for my purpose, because usually the answer to that question is a resounding "yes," but if I truly needed to create a new programming language, I'd first review the actual problem it's looking to solve, since that shapes everything else that comes after. From there I'd need to define the syntax, whether it's compiled or interpreted, and whether it's statically or dynamically typed. I'd probably start tiny, with just variables and print statements, and add features one at a time instead of trying to design the whole thing up front.

Update 02 — Dr. Christos

Prepared for CS 07-129 ahead of the guest talk by Dr. Christos.

01What is a decision problem?

A decision problem is a question to which the answer is either yes or no. It usually takes some input and asks whether that input has some specific property. Something like "is this number prime" or "does this graph have a path between these two nodes" counts as a decision problem because the answer is a simple yes or no.

02What does it mean for a decision problem to be decidable?

A decision problem is decidable if there's an algorithm that can always figure out the correct yes or no answer for every possible input, and it has to finish calculating that answer in a finite amount of time. If no algorithm like that exists, the problem is called undecidable.

03What is the class P? What is the class NP?

P is the class of decision problems that can be solved by an algorithm in polynomial time, meaning the time it takes to solve grows at a reasonable rate as the input gets bigger. NP is the class of decision problems where, if someone hands you a proposed answer, you can check whether it's correct in polynomial time, even if actually finding that answer from scratch could take way longer. Every problem in P is also in NP, since if you can solve something quickly you can obviously also check a solution quickly, but whether every NP problem is also in P is the big unanswered question.

04What is the intuitive meaning of the "P versus NP" question?

It's asking whether problems that are easy to check are also easy to solve. If someone shows me a checkmate on a chess board, I can check pretty fast whether it's actually correct, but finding a checkmate from my initial position will take much longer. P versus NP is asking whether that gap is real, or whether there's secretly a fast way to solve every problem we can currently only check quickly.

05If you resolve the P versus NP question, how much richer will you be?

It's one of the Millennium Prize Problems, so technically it comes with a million dollar prize from the Clay Mathematics Institute. Though if someone actually proved P equals NP in a way that gave a real algorithm, they'd probably end up way richer than that, since it would break most modern cryptography and reshape a bunch of industries overnight.

Update 03 — Dr. Amy Melniczuk

Prepared for CS 07-129 ahead of the guest talk by Dr. Amy Melniczuk.

01What is HCI, and which disciplines contribute to it?

Human-computer interaction is the study of how people interact with technology. It utilizes insights from computer science, cognitive science, and human factors engineering to guide how that technology gets designed in order to make its use more intuitive. HCI typically comes down to four things: the user, the specific goal they're trying to accomplish, the interface itself, and the context they're using it in, like their location. People interact with technology in many ways such as sight, touch, sound, voice, and spatial movement, and combining a few of those is usually what makes an interaction feel more natural and intuitive.

02What is the difference between a system being useful and being usable? Give an example.

For something to be useful, it has to address a real need or help someone accomplish a specific task. Usability, on the other hand, is about how easy that thing is to figure out and operate once someone's using it. A good example of usable but not useful is a super simple note taking app on my phone. It's easy to open and easy to type into, so it's usable. But if what I actually need is to organize my class notes by course and search through weeks of them quickly, that same app becomes pretty useless for that task, since it just gives me one long list with no structure. It's usable in general, but not useful for the purpose I have in mind.

03Find a confusing everyday interface. What is the person trying to do, what design decision causes difficulty, and what's one improvement?

A classic one is the Apple Magic Mouse. The charging port is on the bottom, so if you want to charge it you have to flip it upside down, which means you can't use the mouse at all while it's charging. The person's goal is simple, they just want to keep working while the mouse charges, but the placement of the port makes that impossible to do so. A better design would put the charging port on the front or back edge instead, so the mouse could stay right side up and usable while it's plugged in.

04What is a prototype, and how does testing one with users help? What wouldn't "Do you like it?" tell you?

A prototype is an iteration of a product built before the final version, and it lets designers see how something will look and get used before committing real time and money to it. Once a prototype comes to life, the process usually moves into a testing and refining stage, where it gets tested and adjusted based on feedback until it meets the original goals. This process is where usability issues get caught early instead of after launch. Asking someone if they like a product gets you a surface-level reaction, but it wouldn't tell you whether they could actually complete the task they needed to do with it, or exactly where they got stuck along the way, since people can say they like something while still struggling to use it correctly.

05Find an example of interaction beyond keyboard and mouse. Who benefits, and how would you test it?

One example is voice interfaces, like the voice assistants built into phones and computers, which let people interact with technology just by talking instead of typing or clicking. People with visual impairments or limited hand mobility probably benefit the most, since it removes the need to see a screen or physically operate small buttons. To actually test whether it helps them, I'd have that group try to complete specific everyday tasks using only voice, like setting a reminder or sending a message, and compare how successfully and quickly they finish compared to using a touchscreen, while watching for points where the assistant misunderstands them or they get stuck.

Update 04 — Prof. Hammoud

Prepared for CS 07-129 ahead of the guest talk by Prof. Hammoud, "When One Computer Is Not Enough: The Fascinating World of Distributed Systems."

01What happens when the problem you want to solve becomes too big for any one computer?

The cause is usually that the problem needs either too much processing power or too much memory for a single machine to handle, so you end up splitting it across multiple computers, with each one handling a smaller piece of the workload at the same time. That's basically the whole idea behind distributed systems: instead of hoping one machine somehow gets faster or bigger, you just add more machines and coordinate them to work as a team. A recent example of this showed up when OpenAI reportedly used around 10,000 agents running in parallel for about 88 hours to work on a version of the Navier-Stokes equations, one of the Millennium Prize Problems, since a workload like that would be completely out of reach for a single machine no matter how powerful it was.

02Suppose 1,000 computers work together. Do you now have one computer that's 1,000 times more powerful? Why or why not?

Not really. The combined power is technically that of 1,000 computers, but you don't get a clean 1000x speedup because of the overhead of coordinating all those machines, things like communication between them, keeping their data in sync, and making sure they aren't duplicating work another computer has already handled. Some tasks split up cleanly and scale well, but others have parts that just can't be divided, so those parts become a bottleneck no matter how many extra computers you throw at the problem.

03Can 1,000 computers agree on something if some of them fail or even lie?

Yes. This is the core challenge in distributed systems called consensus, and there are protocols built specifically for it that let a group of machines agree on a single decision even if some crash or send bad information. As long as enough of the machines are working correctly and communicating honestly, the system can still reach agreement, but past a certain number of failures or bad actors, agreement stops being guaranteed.

04When you use ChatGPT, Google, Instagram, or an online game, where is the computation actually happening?

Almost none of it happens on your own device. Your phone or laptop is mostly just a window into the process, it sends your request over the internet to a data center somewhere, servers process it there, and the result gets sent back to show up on your screen. There are a few real exceptions where computation happens locally, like Face ID or setting a timer through a voice assistant without needing an internet connection, but anything more demanding almost always gets offloaded to the cloud. Big companies run this across huge networks of data centers spread around the world, so your request might not even go to the same physical location every time, it usually gets routed to whichever data center is closest or least busy at that moment.

05If you could make millions of computers behave like one dependable machine, what could humanity build that we cannot build today?

In that case, you could build a live, constantly updating simulation of the entire planet, one that models weather, disease spread, and traffic patterns together in real time, and use it to actually predict and respond to disasters or outbreaks before they spiral, instead of just reacting after the fact. That kind of scale isn't possible today because no single system is both big enough and dependable enough to run something like that continuously without breaking down somewhere in the pipeline.

Update 05 — Prof. Bilal Taha

Prepared for CS 07-129 ahead of the guest talk by Prof. Bilal Taha, "Multimodal Learning and Embodied AI."

01What is a modality in AI? Give three examples of different modalities.

A modality is just a type of data a system can take in. Text, images, and audio are three common ones, though video and raw sensor data (like temperature or motion readings) are options too.

02What is multimodal learning?

Multimodal learning is training a model to work with more than one of these data types at once and connect them, instead handling each one individually. A model looking at both a photo and its caption understands the image better than it would from the pixels alone, the same way we naturally combine what we see with what we're told.

03Where is multimodal learning used? Can you find one real application and identify the types of information it combines?

A good example is diagnostic medicine in healthcare. A model can combine a patient's medical history (text), a CT scan (image), and a voice recording of them describing their symptoms (audio) to reach a more accurate diagnosis than any one of those alone would give. Self-driving cars are another common example, fusing camera, LIDAR, radar, and GPS data to drive safely.

04What is embodied AI?

Embodied AI is what happens when AI gets built into a physical system, like a robot, an autonomous vehicle, or even a warehouse, so it can interact with the real world instead of just processing data on a screen. It's a shift from AI that only analyzes information to AI that has to perceive, reason, and act in a physical environment.

05How are multimodal learning and embodied AI connected?

Embodied systems lean on multimodal learning to make sense of their surroundings, since something like a Vision Language Model fuses images, video, and sensor input into one understanding of the environment. It lets a robot or self-driving car reason about what's happening around it instead of just reacting to one input at a time. Push it further with a Vision Language Action Model, and the system doesn't just perceive multimodally, it decides how to physically act on what it perceives. So multimodal learning isn't a bonus feature for embodied AI, it's basically what lets a physical agent understand the world it's embodied in.

Update 06 — Prof. Gianni

Prepared for CS 07-129 ahead of the guest talk by Prof. Gianni.

01How do you define AI?

I think AI is any system that can do tasks that normally need human intelligence, like pattern recognition or decision making without being explicitly programmed for every single scenario.

02Can you name at least three different sub-fields of AI?

Machine learning, systems that improve at a task by learning from data instead of fixed rules. Computer vision, getting computers to interpret images or video. Natural language processing, which deals with understanding and generating human language, basically what lets a chatbot hold a conversation.

03AI has been around for about 70 years so far. Why is it booming right now?

The internet created massive amounts of data to train on, way more than older AI approaches ever had. GPUs power increased drastically since they first released. Transformer architecture, introduced in 2017, let models learn relationships between words all at once instead of one at a time, which directly led to BERT in 2018 and set off the wave of language models we're seeing now.

04Can you name at least three application sectors where robots are being widely employed? What are the reasons?

Manufacturing, robots handle repetitive, precise tasks like welding faster and more consistently than people. Warehousing and logistics, companies like Amazon use them to move inventory across huge facilities faster and cheaper than having people walk it. Healthcare, surgical robots let doctors perform more precise procedures through smaller incisions.

05Can you identify three major challenges for a wheeled autonomous robot performing a 24h surveillance task in a large facility?

Navigating safely around unpredictable foot traffic that shifts a lot throughout the day. Power management, since running 24 hours needs a charging routine, like swappable batteries or multiple robots covering for each other, that doesn't leave gaps in coverage. And localization, since GPS doesn't work indoors, so the robot has to track its position against a map of the building, which gets harder in a huge, multi-level space that might even change layout over time.