My Degree Plan

People who inspire me:

Randy Pausch

Randy Pausch was a Carnegie Mellon Computer Science Professor. He taught at the University of Virginia for nine years. He was also the co-founder of Carnegie Mellon’s technology center and got other important tenures. He was known as a brilliant teacher and a very well-known researcher who worked on various projects with Adobe, Google, Walt Disney, and others. Pausch was also known for his great interest in time management and how eager he was to find a way to make more time. In 2006, he was diagnosed with pancreatic cancer and he had three to six months of good health left counting from August 2006.

In November 2007, Pausch gave a lecture about time management at the University of Virginia. Despite the 13 years difference, the advice and tips he gave during that lecture are still very effective and efficient for anyone who wants to learn strategies and techniques to make more things in less time.

● One of the points that caught my attention was his way of adhering the meaning of experience and I am quoting here “If things are not going well, that probably means you are learning a lot, and it will go better later” I agree on that, the latest example about that is the last programming assignment I was handed. While working on that, I complained a lot, but now that I know that I have successfully finished the homework, I get a feeling I want always to experience in every challenge and that is what keeps work harder every time.

● Another interesting and crucial piece of advice was about the necessity of using schedules, calendars whether paper or online versions to keep all deadlines and appointments registered. This way we do not need to spare any room in our brains for things we have paper or machines do for us. And to make the schedule even more effective, we can use the Covey’s four-quadrant TODO. Click here!

● One cool way to get ourselves off phones or other sources of distraction is to keep something we want to do next to us. And I am excited to try this technique.

● I was thrilled when I heard about the technique that I usually use to get work done on time: “Make a fake deadline”. This method not only keeps us be on time but also plays a critical role in creating more unexpected free time.

● Finally, the stamina Randy Pausch had along with his strong will to impact as many people as humanly possible was a great lesson for me. It is not considered as a new lesson, but a reminder for everyone to reflect on himself and see if he is still on the right track. It is NOT a must to follow Randy’s advice in detail, because everyone has his own techniques and methods, but always remember that if “You can dream it; you can do it”

Lectures Summaries

Theory of Computation:

Basically a decision problem is a “yes-or-no question on specified sets of inputs”(Kushwaha, Pritam, & Human, 2019) and each decision problem requires a certain decision procedure, if possible, that will give a yes/no answer. The decision procedure is an algorithm that sums the sets of instructions and steps that will solve the problem. When there exists an algorithm that can solve the decision problem, the latter is called solvable or decidable. However, not every decision problem has a solution and this kind of decision problem is considered undecidable. This makes us think about the kinds of problems and how much efficient, fast, and memory consuming each solution is. The first class is P class, which is “the set of decision problems that can be solved by a (deterministic) Turing machine in polynomial time.”( Kushwaha, Pritam, & Human, 2019) even in the worst case. For example, in programming, if you have a list that contains n numbers and you were asked to know if the list is sorted, then there is an algorithm that can check if the list is sorted in linear time (polynomial). Second is the NP class which is the set of decision problems for which the solutions have nondeterministic polynomial time. Both classes can be complex when it comes to the difficulty of solving the problem, however when talking about the computational resources that each requires, P class problems require less time than the NP class problems in which the time or memory needed might be unlimited. Moreover, there is a big unsolved problem in computer science called “P versus NP” and it asks if every single problem that is easily and quickly proved to have an algorithm can be as well solved quickly, but no one has solved this problem.

If I do resolve the P vs NP problem, then I would be way richer in knowledge and intelligence. And if I get that, then I would be able to solve many unsolvable problems whether in Biology or any other domain. And If I did, my richness would be of non-deterministic limit 😊 since this problem is one of the seven CS problems worth 1 million dollars.

●References: Decision problem. (n.d.). Retrieved September 01, 2020, from https://www.newworldencyclopedia.org/entry/Decision_problem

----------------------------------------------------------------------------------------------

Computer Security Incidents in Qatar:

There have been several computer security incidents in Qatar during the last five years. One of these incidents is the Cyber-attack of Qatar National Bank. The attackers leaked a big collection of documents which included international corporate files, sensitive financial data for the bank customers (PIN, passwords, payment card date...), IP addresses, and administrator information. However, Cryptome tried to find how these attackers managed to obtain the data, but they could not discover whether it was an external hack attack or an inside job. The attack analysis was done by many resources of which an Information expert called Nitin Bhatnagar confirmed based on his analysis that the dump data contained all the credit cards and card holders’ details all stored in clear text. Luckily, there was no financial impact on the clients, however the leak contained PII which might cause bad and serious repercussions for the bank clients.

Another major computer security incident that happened in Qatar is the Cyber-attack of Al Jazeera media Platform. The Qatar’s official news agency was hacked and false statements that attributed to the country’s ruler were posted. The attackers targeted variant ranges from DDoS to malware attacks. And their hack led to more serious consequences, it created a spark and a kind of conflict between Qatar and the countries: Saudi Arabia, Egypt, and UAE. As a result, these countries cut ties with Qatar. However, on the other side, the digital assets were not compromised. Which makes us think that the purpose of the security attack is rather a political motive. This incident was investigated with the aid of the FBI team in Doha.

For more information about the Cyber Attack on Al Jazeera News Network

For more information about the Cyber Attack on QNB

Cloud Computing:

● Cloud computing is about accessing different stored services with the use of internet. These resources include data storage, servers, databases, networking, and software that can be both public and private. In brief cloud-based storage facilitates the process of storing files and enable remote accessing of these files.
● Cloud computing is not brand-new technology or one of its own, however it keeps developing great features which add efficiency and usefulness to its use, some of these features are:
- On-demand Self-service: It enables the user to monitor his cloud account and control its usage and other computing resources.
- Broad network access: cloud services are available over the network and can be accessed by diverse customer platforms.
- Resources Pooling: It gives multiple customers access and flexibility to the same services.
● The three major cloud service models are:
1. Infrastructure as a Service (IaaS): a self-service model for managing remote data center infrastructures like physical computing resources, location, data partitioning, scaling, security, and backup.
2. Platform as a Service (PaaS): allows users to build and manage applications without worrying about the IT infrastructure (e.g. IDs). It can reduce management overhead and lower costs.
3. Software as a Service (SaaS): based on a subscription basis, it can be accessed from a web browser without any downloads.

● Some real-world applications of cloud computing: - Box.com or Dropbox (data storage and backup app): it provides an online environment for secure content management, workflow, and collaboration. It allows us to store different files such as Excel, Word, PDF, and images on the cloud. - Dell’s Secure Healthcare Cloud (Healthcare): “Cloud computing lets nurses, physicians, and administrators share information quickly from anywhere. It also saves on costs by allowing large data files to be shared instantly for maximum convenience. This is a major boost for efficiency.” - Paypal (business app): it offers the simplest and easiest online payment mode using a secure internet account.
● The economic basis of the cloud computing depends on many bedrocks like the number of customers and the load that they can cause whether on private, public, or hybrid clouds. Also, it also depends on the kind of performance needed by the users (domain and usage). And finally, the level of security required for providing a trusted and efficient model for users.

For more information about the models of cloud computing

For more information about the applications of cloud computing

Programming Languages:

● Through the 20th century, punch cards, stiff papers that store digital data in the form of absence and presence of holes in certain positions, were widely used for data processing. However, these cards had many limitations in their performance. For example, punch cards were very large compared to the amount of data they can contain, and that would consume a huge space. Also, since the system involved a form of keyboard entry, one wrong entry would require reloading the information again from the start. Consequently, computer programming languages were created, and they can edit, store, and create programs line by line on punch cards. And later the languages were developed in order to facilitate the communication of ideas and instructions from users to computers in languages that these computers can understand.

● Recently, there are hundreds of programming languages that each has different syntax and may differ from the other languages in its uses. The reasons behind the continuous creation of programming languages can be explained first by legibility and maintainability of these languages. This is about figuring out how easy each language is for a human being to read and how the stylistic choice and restrictions in the syntax are different from one language to another. Moreover, some languages are special for the specific use they can operate. For example, NodeJS is created to code single-threaded applications for the web. It has a non-blocking file I/O that allows programs to continue operating without getting blocked while they wait for required data to transmit. Another major reason for the necessity of creating many programming languages is that the provided libraries in each language are always different and this helps programmers in selecting the convenient language upon their need of libraries.

● I have only coded using Python and from my observation and experience I think that one of the drawbacks of Python is that it is slower than other languages. Also, we often tend to import from other libraries to make our programs do their job. For instance to calculate the inverse of the tangent, I have to import the math library Therefore, I would like to have an easy language (in syntax) like python but that can contain to a certain extent most of the libraries, functions, and methods.

● If I am going to create a programming language, first thing I will do is to decide the execution paradigm that I want to use, the programs that my language will be best at, and where it lies in performance (efficiency) and readability (syntax). The next thing would be building a compiler for my language and then implementing a standard library and GUI that the language can use. And finally, I will need to create a specialized editor as a supporting tool for the language.

For more information about the creation of programming languages

For more information about the history and use of punch cards

For more information about other drawbacks of python

Robotics And AI:

Artificial Intelligence (AI) is the simulations of human intelligences in machines. These machines are programmed to imitate and think like humans to perform tasks commonly associated with intelligent beings.

The sub-fields of AI include Machine Learning, Neural Networks, Robotics, Evolutionary computation, and speech processing.

Although AI has been around since about 70 years so far, it is booming right now. Since the amount of data has grown exponentially, humans’ abilities to contain, interpret, and make decisions upon these data are no longer sufficient or efficient. However, AI makes it possible for machines to learn from experience, adapt to new inputs and do human-like tasks through absorbing large datasets for training.

Robotics has revolutionized and affected many industries of the world that include:
● The health care Industry: especially in intuitive surgery, where surgical robots that are used by doctors to help them perform lung surgeries, hysterectomies, and other types of procedures.
● The Manufacturing industry: In fact, industrial robots were used since 1961 for doing repetitive and menial tasks that people found boring or dangerous. However, robots now have evolved to the point where they become more efficient than workers in the manufacturing industry. They also reached a point where they work and learn alongside humans and so gaining intelligence.
● Military Industry: where robots are used to conduct reconnaissance, battlefield support, and sentry duty. They carry heavy equipment, operate in dangerous situations to keep soldiers at a safer distance, and rescue wounded soldiers in combat zones.

The major challenges for autonomous robots can be explained by:
- Realizing that robots have not yet reached the level of reasoning the situations effectively and this might cause danger or inefficiency in their performance that could cost billion or even lives of people.
- The use of robots may bring up ethical issues too. No one can ensure obtaining AI without bias that can take the form of racist act because of the certain input entered which control their judgments. We also should not forget that the humans who created them can also be biased and judgmental.
- Other challenges can simply be flaws in the dynamic systems, walking robot motion or robot stability. And that would largely diminish the accuracy and performance of robots.

Understanding AI

Robotics Challenges

Major Sub-fields of AI

Natural Language Processing:

● Three applications of Natural Language Processing (NLP):
- Auto-correct: detecting grammar, spelling, or sentence structure errors.
- Speech Recognition: transforms spoken language into a machine-readable format (Siri, google assistant..)
- Chatbots and Virtual assistants: used for automatic question answering, designed to understand natural language and deliver an appropriate response through natural language generation.

حياة : حَ / يَ / اْ / ة(Life)
الْقَمَر: ال / قَ / مَ / رْ (The moon)
سلام: سَ / لَ / اْ / مْ (Peace)

1)اغتنم اللحظة
Seize: اغتنم
the:ال
momentلحظة :
2) كيف كان يومك؟
How: كيف
Was: كان
(Your)/ ك (Day)يوم
3) استيقظ من نومك
Wake up:استيقظ
From: من
(Your)/ ك (Sleep)نوم

Interpretations of “Time flies like an arrow”:
• (imperative) Measure the speed of flies like you would measure the speed of an arrow.
• (imperative) Measure the speed of flies using methods that an arrow would use.
• (imperative) Measure the speed of flies with qualities resembling those of arrows.
• (declarative) Time moves in a way an arrow would.
• (declarative, i.e. neutrally stating a proposition) Certain flying insects, called "time flies", enjoy an arrow.

What is NLP?

Applications of NLP

The future of natural language processing