Randy Pausch was a professor in CMU’s department of Computer Science. He was diagnosed with end-stage pancreatic cancer. When researching a bit more about his life, I discovered that he was the creator of Alice (an educational block-based programming environment for creating 3D animations (S, n.d.) ). His lecture was aimed at giving the audience concrete advice on how to make the most out of their limited time.
The use of punch cards to write code came with various disadvantages including but not limited to:
There are hundreds of problems that we need to code solutions for; therefore, we need various programming languages, each designed to specifically address each of these problems. For example, when you need to manipulate and analyze data you would use SQL and R, languages designed specifically to handle analyzing large amounts of data. On the other hand, in web development you would choose a versatile language that can be used for interactivity and animations such as Javascript.
Python’s main drawback is its execution speed. Since python isn’t pre-compiled, its execution time is higher relative to other languages. This drawback is emphasized in tasks where you need low-latency and quick execution (such as in animations and video games). It would be better if python’s interpreter can be optimized for faster code execution.
https://medium.com/dataform/sql-vs-r-which-to-use-for-data-analysis-5bac46f91610
https://www.researchgate.net/publication/383942383_Punch_Card_Technology_Data_Storage_and_Processing_in_Early_Computing
https://www.coursera.org/articles/what-is-javascript-used-for
https://www.geeksforgeeks.org/cpp/advantages-and-disadvantages-of-cpp/
https://drewdevault.com/blog/How-to-design-a-new-programming-language/
A decision problem is a task where a given input is evaluated based on whether or not a property is present. The solution is always one of two outputs, either true or false.
A decision problem is decidable when it has a solution that can be calculated by an algorithm in a finite amount of time
Class P and NP are used to classify a problem's complexity. The P class is the class of problems that can be solved using deterministiic machines(a machine that returns the same output for the same input such as our computers) in polynomial time. P problems are usually easy to compute. NP problems ,on the other hand, are ones that can only be solved by non-deterministic machines in polynomial time. This makes them hard to compute but easy to verify.
P is the set of all problems whose solution can be computed easily. NP is the set of all problems whose solutions can be easily verified. NP vs P asks if NP problem's solutions can be easily verfied then can they also be calculated in polynomial time by deterministic machines.
One Million dollars richer
https://simran-tinani.medium.com/decision-problems-decidability-verifiability-and-complexity-classes-79336746cbbd
https://concurrent-rt.com/redhawk/what-is-deterministic-computing/
https://www.geeksforgeeks.org/dsa/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/
https://news.mit.edu/2009/explainer-pnp
HCI is a field that aims to improve the interactions between humans and computers/machines. It combines various disciplines including computer science, psychology, design, and social science
A usable system is one that is easy to use and intuitive to navigate. On the other hand, a useful system is one that actually serves a meaningful function/purpose. For example, let's say you want to build a volume controller. You can decide to make a single button which you click and it gives you a random volume. This system is usable. All you need to do is click a button in order to change the volume. However, this system is utterly useless as it just gives random volumes and gives you no control over the actual value, hence rendering it useless.
One everyday interface that is confusing to use is the dorm's washing machine's keypad. A person using the washing machine would want to pick an appropriate cycle for the type of clothes they are washing; however, a new resident is hindered by the buttons that are only labeled with random symbols. An improvement would be to properly label the different buttons to indicate the appropriate cycles.
A prototype is an initial model that is made to test the product's functionality and design before its released to the masses. Testing a prototype with users provides the designer with feedback that would allow them to fix any problems that they might have not noticed and ensure that the launched product is actually functional and useful for potential buyers. Asking "Do you like it?" often prompts a yes or no answer which doesn't pinpoint areas of strengths nor of weaknesses.
A voice control feature on mobile devices. This feature would benefit the visually-impaired by allowing them to utilize their phones without needing to see the interface. In order to test whether this is a beneficial feature or not, I would utilize the accessibility evaluation tools + user feedback through surveys.
https://blog.uxtweak.com/usability-vs-usefulness/
https://www.getsmarter.com/blog/what-is-human-computer-interaction-hci/
https://www.coursera.org/articles/human-computer-interaction
https://uxdesign.cc/5-ways-to-improve-your-prototype-testing-3cce3465a7d5
https://www.w3.org/WAI/test-evaluate/
https://github.com/Nourhan-Mohammed
https://leetcode.com/u/nourhan953/