Mazen Abdelsalam
A personal site for my work, academic plans, profiles, and research updates at CMU.
Work
Resume
Google Calendar
4-Year Academic Plan
Coding Challenges
Research
Time Management · Randy Pausch
1. Who is Randy Pausch?
Randy Pausch was an American professor of computer science at Carnegie Mellon University. He specialized in human-computer interaction and virtual reality and was also one of the founders of CMU's Entertainment Technology Center. He was diagnosed with pancreatic cancer and passed away in 2008 at the age of 47.
2. What was he known for?
Randy Pausch was known for his work in computer science and education, including helping develop Alice, a program designed to teach students computer programming. He became most widely known for his famous “Last Lecture,” which he gave at Carnegie Mellon after learning that his cancer was terminal. The lecture, titled Really Achieving Your Childhood Dreams, became widely popular and was later expanded into the bestselling book The Last Lecture.
3. What are five points you liked from the lecture?
Time should be treated like money.
I liked this point because people are usually very careful about how they spend money, but not as careful with their time. Pausch explains that money can be earned again, but once time is gone, you cannot get it back.
Do important things before they become urgent.
This was probably the point that stood out to me the most. Pausch explains that after finishing tasks that are both important and due soon, we should focus on important tasks that are not due soon yet instead of wasting time on unimportant things just because their deadlines are closer.
Break big tasks into smaller steps.
I liked his example about cleaning a room because it made the idea very simple. A big task can feel overwhelming, but once you divide it into smaller things, it becomes much easier to start and finish.
Do not wait until the last minute.
I liked this because it is something almost every student can relate to. Pausch explains that doing things right before the deadline creates extra stress, and even one small problem can ruin your plan. His idea of creating an earlier personal deadline seems like a useful way to avoid that.
Sometimes you just have to ask.
I really liked the story about the Disney monorail. His father thought there must be some special way to ride in the front, but Pausch simply asked, and they were allowed to do it. It was a simple example, but I liked the message that sometimes opportunities are available if you are willing to ask.
Programming Languages · Giselle Reis
1. Why did we move from punch cards to programming languages? What does that tell you about the purpose of programming languages?
We moved away from punch cards because they made programming very slow and inconvenient. Programming languages allowed people to write instructions in a form that was easier to understand and work with. Instead of focusing on the physical process of giving commands, programmers could use that extra time to focus more on solving problems. This shows that programming languages exist to make it easier for humans to communicate their ideas to computers.
2. There are hundreds of different programming languages out there. Why do you think we need so many?
There are many programming languages because different types of programs have different needs. Different languages are designed to handle different kinds of tasks, so programmers can choose one based on what they are trying to create. New languages are also created as technology changes and better ways of programming are developed. Having different programming languages gives programmers more options when creating programs.
3. What are some drawbacks of a programming language you use? How would you like it to be different? Think of specific examples.
One drawback of Python is that it is not suitable for every field of programming. For example, Python is not used to write operating system kernels because this type of programming requires direct control over hardware and memory. Languages like C are better suited for this because they give programmers the low-level control that Python lacks. I would like Python to offer more low-level control so it could be useful in a wider range of programming fields.
4. If you were going to create a new programming language, how would you start? What do you need to define?
I’d start by deciding what the language is meant to do and what kind of problems it should solve. Then I would define how the code should be written, including its syntax and basic rules. I would also need to decide how the language handles things like variables, functions, data, etc. After that, I could build a compiler or interpreter so the computer can run the code.
Theory of Computation · Christos Kapoutsis
1. What is a decision problem?
A decision problem is a computational problem where there are only two possible answers: yes or no. The computer is given some input and has to decide whether that input satisfies a certain condition. For example, “Is this number prime?” is a decision problem because the answer for any number will always be either yes or no. Decision problems are useful in computer science because they give us a simple way to study how difficult different computational problems are.
2. What does it mean for a decision problem to be decidable?
A decision problem is decidable if there is an algorithm that can always determine the correct answer. The important part is that the algorithm must eventually stop and return either yes or no for every possible input, rather than running forever in some cases. Not every decision problem has this property. For example, the halting problem, which asks whether a program will eventually stop running, has been proven to be undecidable in general.
3. What is the class P? What is the class NP?
P is the class of decision problems that can be solved efficiently, meaning there is an algorithm that solves them in polynomial time as the input gets larger. NP is the class of decision problems where a proposed solution can be checked in polynomial time. Every problem in P is also in NP because if we can solve a problem efficiently, we can also check its solution efficiently. The big question is whether all problems in NP can also be solved that efficiently.
4. What is the intuitive meaning of the “P versus NP” question?
The P versus NP question basically asks: If a solution is easy to check, is it also easy to find? Imagine a problem where finding the correct answer could take an extremely long time, but once somebody gives you an answer, you can quickly check whether it works. P versus NP asks whether there might actually be an efficient way to find those answers too. Nobody has been able to prove whether P = NP or P ≠ NP, making it one of the biggest unanswered questions in computer science.
5. If you resolve the P versus NP question, how much richer will you be?
If you successfully resolve the P versus NP problem and your proof meets the required conditions, you could become $1 million richer. The Clay Mathematics Institute selected P versus NP as one of its seven Millennium Prize Problems, which are some of the most important unsolved problems in mathematics. A prize of $1 million is offered for a valid solution, whether that solution proves that P equals NP or that P does not equal NP.
Human-Computer Interaction · Amy Melniczuk
Questions will be added when they are assigned.
TBA · Speaker TBA
Details will be added when announced.
Robotics and Artificial Intelligence · Gianni Di Caro
Questions will be added when they are assigned.
TBA · Bilal Taha
Topic will be added when announced.