← Back to portfolio
06
Lessons from Lecture
Notes and ideas from lectures worth holding onto.
CS Faculty · Carnegie Mellon University · The Last Lecture
Randy Pausch
Randy Pausch was a Computer Science professor at CMU, who was diagnosed with terminal pancreatic cancer. He wrote a famous book titled “The Last Lecture,” highlighting the importance of time management and strategies (something he is well-known for.)
5 Key takeaways from his Time Management lecture:
- Time is your only true commodity: You can always earn other things back except for time
- 80/20 rule: sometimes 20% of your efforts yield 80% of the result. This is far more important than trying to perfect work that doesn’t matter as much.
- Work on important things that aren’t yet due, so that they don’t turn into high-stress situations near the deadline
- Delegation is really important and you should learn how to delegate effectively
- Analyze your daily work and meticulously reduce distractions that accumulate.
Course Reflection · Programming Languages
Professor Giselle Reis
Q1
Why did we move from punch cards to programming languages? What does that tell you about the purpose of programming languages?
- Punch cards were used around the mid-1970s. They were used to encode data. It was a write-once medium, often referred to as a “punched card” once the data was encoded.
- They had major issues: error clarification and editing, as programs had to be redone if there were any bugs; storage limitations, since each card could only hold up to 80 characters; and difficult debugging.
- The rise of new hardware gave way to programming languages being written and stored digitally, and the first human-readable code was written.
Sources: Wikipedia — Computer programming in the punched card era, Medium — The Evolution of Programming Languages
Q2
There are hundreds of different programming languages out there. Why do you think we need so many?
- Advancements in technology create software and hardware needs, along with new technical problems. Most of the time, companies invest in creating a new language catered specifically to tackle these issues.
- Different domains require different programming languages, as each specializes in a different aspect, whether that’s mobile development, web development, or backend.
- Different languages also have different pros and cons. Some prioritize performance, and others prioritize productivity.
- Legacy systems also keep older languages alive.
Sources: freeCodeCamp — Why Are There So Many Programming Languages?, IJRASET — Why There Are So Many Programming Languages
Q3
What are some drawbacks of a programming language you use? How would you like it to be different? Think of specific examples.
- I mainly use Python for my programming, due to it being widely used, including in companies like YouTube and Instagram. Furthermore, it has multiple applications, from web development to ML.
- One of the biggest issues I faced was versioning and package issues. I would usually have clashes with certain libraries, whose versions were not compatible, leading to poor productivity.
- Although this hasn’t been a major issue for me, Python being an interpreted language does mean it takes longer to compile, and hence is slower, performance-wise.
Sources: GeeksforGeeks — Python Language Advantages and Disadvantages, Unstop — Advantages and Disadvantages of Python
Q4
If you were going to create a new programming language, how would you start? What do you need to define?
- By initially defining its main purpose and making sure there is a unique purpose that isn’t already solved by other languages.
- Then I would define the basic design and syntax specification, and the core technical architecture.
- Data types would also need to be defined, along with basic functions.
Sources: Medium — How I Created My Own Programming Language From Scratch
Course Reflection · Theory of Computation
Dr. Christos
Q1
What is a decision problem?
- In the world of computer science, a decision problem is a question that can be written as a yes-or-no question — for example, asking whether a given number is prime. The answer is either yes or no.
Sources: Wikipedia — Decision problem
Q3
What is the class P? What is the class NP?
- P stands for polynomial time. These are decidable problems that can be solved by an algorithm in an amount of time that is polynomial relative to the size of the input, so they are efficiently solvable and don’t require much computation.
- NP problems are non-deterministic — generating a solution is extremely difficult, but verifying a sample answer is much simpler.
Sources: Medium — Decision Problems, Decidability, Verifiability, and Complexity Classes, YouTube — P vs NP explained
Q4
What is the intuitive meaning of the “P versus NP” question?
- This means asking whether any question whose solution can be quickly checked can also be solved quickly.
- It is a major unsolved problem in computer science, and has been called one of the most important open problems in CS.
Sources: YouTube — P vs NP explained, Wikipedia — P versus NP problem
Q5
If you resolve the P versus NP question, how much richer will you be?
- A $1 million prize is guaranteed by the Clay Mathematics Institute.
Sources: Wikipedia — P versus NP problem
Course Reflection · Human-Computer Interaction
Dr. Amy Melniczuk
Q1
What is human-computer interaction (HCI), and which disciplines contribute to it?
- It is the process in which people engage with a computer or computer systems. It has a major focus on the interfaces between people. Researchers in this field find ways for people to communicate with computer systems.
- HCI draws on a combination of disciplines, including CS, social/behavioural sciences, design engineering, etc.
- HCI also has impacts on other fields, like medicine, for example.
Sources: Wikipedia — Human–computer interaction
Q2
What is the difference between a system being useful and being usable? Can you give an example of a system that is usable but not useful for a particular person or task?
- Useful refers to whether the system actually solves the problem itself, whereas usable refers to how simple and easy it is to solve that problem.
- The Apple Watch siren feature can be taken as such an example. Although it is usable (very straightforward to use), it is not useful for the majority of users.
Sources: accessiBe — Usability, Apple Support — Apple Watch User Guide
Q3
Find an everyday interface that is confusing to use. What is the person trying to do, and which design decision causes difficulty? Suggest one improvement.
- For me personally, smart screens in university or schools are quite confusing to operate. They have different modes that I am unfamiliar with and different control panels. They are also devices that I don’t use very frequently, so I haven’t ‘learned’ to use them compared to more intuitive mobile features.
- Having an on-screen guide or manual would be helpful to learn the layout and how to interact with the system.
Q4
What is a prototype, and how can testing one with users help a designer? What is one thing that asking “Do you like it?” would not tell you?
- Prototypes are early, rough versions of software or systems, designed for testing and improving the main final product.
- Testing prototypes helps designers understand the product outside of their subjective lens, and helps test it in real-world scenarios. Feedback from the testing can be incorporated to make the product better.
- Asking that question provides superficial feedback based on appearance or politeness. Testers may provide feedback based purely on how good the system looks, leaving the designers without any valuable insights.
Sources: MVP Factory — How to Use and Misuse Prototypes in Design, Laneteam — Prototyping in Software Development
Q5
Find one example of interaction beyond a keyboard and mouse, such as voice input or a tangible interface. Who might benefit, and how would you test whether it helps them?
- Voice-enabled assistants and visual panels can be of major help. In one of my internships, I had the chance to get an insight into a system designed for people with disabilities that would allow them to scan their passport and complete their immigration process without the need of any human assistance, purely through using voice-enabled commands and accessibility features.
- One of their validation criteria was actually incorporating feedback from various people with different levels of visual impairment.
Course Reflection · Distributed Systems
Prof. Hammoud
Q1
What happens when the problem you want to solve becomes too big for any one computer?
- When a problem you want to solve becomes too big for any one computer, distributed systems help spread the workload across multiple computers or servers to bring the workload per system lower and help tackle the issue.
Sources: Wikipedia — Distributed computing
Q2
Suppose 1,000 computers work together. Do you now have one computer that is 1,000 times more powerful? Why or why not?
- Combining these computers won’t result in the same factor of progress, as there are many considerations to take into account. Latency, for example, can cause a certain level of drop in performance, as that latency amplifies across each computer.
- Additionally, there may be a communication delay, as well as an additional issue.
Sources: Oxford RSE Training — Connecting Parallel Computers
Q3
Can 1,000 computers agree on something if some of them fail or even lie?
- Yes, this can happen, and this is called Byzantine Fault Tolerance. This concept means that as long as 2/3 of the answers are true, the other false values can be ignored.
Sources: Wikipedia — Byzantine fault
Q4
When you use ChatGPT, Google, Instagram, or an online game, where is the computation actually happening?
- The computation for these takes place in data centers located across the world. Data centers house many computer systems that are used for processing the data and carrying out operations.
Sources: Medium — What Are AI Data Centres and How Do They Actually Work?
Course Reflection · Artificial Intelligence
Professor Bilal Taha
Q1
What is a modality in AI? Give three examples of different modalities.
- It is essentially the different types or formats of data a system can input and process. Examples include text, images, and video.
Sources: GMI Cloud — Modality
Q2
What is multimodal learning?
- It is the concept/process of delivering a single concept through different modalities, such as text, audio, etc.
- Multimodal learning for computers, however, is slightly different. It is the process of teaching a system or AI to handle multiple distinct types of information that can be in different formats. This helps the AI be more context aware, due to the additional information available to it.
Sources: Docebo — Multimodal Learning, eLearning Industry — What Is Multimodal Learning?
Q3
Where is multimodal learning used? Can you find one real application and identify the types of information it combines?
- One of the most common areas of application is healthcare. Healthcare diagnostics involve lots of data in different modalities.
- For example, a patient’s reports (in text form) can be combined with their X-ray scans (in image form) and fed together into a system to provide better results, as the system is more context aware.
Sources: SmartDev — Multimodal AI Examples, Applications and Future Trends, Intuz — Multimodal AI Applications and Examples
Q4
What is embodied AI?
- It is essentially the integration of AI into physical systems. Unlike the traditional AI we are more familiar with (which lives in the digital world), embodied AI combines AI, computer vision, and other technologies with physical actuators to carry out real-world tasks.
- Sensors, for example, are also used to provide information that can then be fed into a reasoning and planning agent to carry out a task.
Sources: NVIDIA — Embodied AI
Q5
How are multimodal learning and embodied AI connected?
- Multimodal learning allows a system to comprehend different pieces and forms of information, allowing for comprehensive understanding. Embodied AI then allows that system to act upon that information and carry out tasks on it.
Sources: YouTube — Embodied AI and multimodal learning
Guest Lecture · Artificial Intelligence
Prof. Gianni
Q1
How do you define AI?
- It's basically a branch of computer science that tries to build machines or software that can do stuff that normally needs human intelligence like learning, making decisions, recognizing patterns, understanding language and solving problems.
Q2
Can you name at least three different sub-fields of AI?
- Machine Learning (ML): algorithms that find patterns in data and get better over time instead of being programmed for every single rule.
- Computer Vision: lets machines understand visual stuff like photos, videos and sensor data.
- Natural Language Processing (NLP): mixes linguistics and CS so machines can understand, process and generate human language.
Q3
AI has been around for about 70 years so far. Why is it booming right now?
- Even though the ideas go back to the 1950s, three things kinda came together to cause the boom we're seeing now. Theres way more computing power now (GPUs/TPUs) that can actually train huge neural networks, theres a massive amount of digitized data (text, video, sensors) to train these models with, and theres better algorithms like deep learning and transformers that can pick up on context on a much bigger scale.
Q4
Can you name at least three application sectors where robots are being widely employed? What are the reasons?
- Manufacturing/Automotive: assembly, welding, painting, moving materials. Robots are precise, don't get tired and barely make mistakes.
- Logistics/Warehousing: sorting items, grabbing packages, moving inventory. Speeds up order processing and saves on space and operating costs.
- Healthcare: robotic surgery, pharmacy automation, disinfecting. More precise than a human hand in surgery, less medicine errors and keeps staff away from risky exposure.
Q5
Can you identify three major challenges for a wheeled autonomous robot performing a 24h surveillance task in a large facility? (e.g., something like Mall of Qatar)
- Navigating safely in a crowded space. People walking around, random kiosks, wet floors, moved furniture, the robot has to keep mapping its surroundings (SLAM) and dodge obstacles without bothering anyone.
- Staying powered all day. It has to manage its own battery, know when to dock and recharge, and do that without leaving an area unmonitored for too long.
- Dealing with changing light. Bright lighting or sun glare during the day vs almost total darkness after closing, cameras and LiDAR need to handle both without losing track of things.
Sources: Digital Learning Institute, All The Definitions Regarding Artificial Intelligence You Need; Google Cloud, What is Artificial Intelligence (AI)?; 36Kr, 70 Years of Artificial Intelligence: Key Insights; Optimo Automation, 10 Reasons Why Industrial Robots Are the Future; Consensus Academic Database, Challenges in Autonomous Mobile Systems