Week 1: Prof Riley/Security:
Research two major computer security incidents that have happened in Qatar. For each, describe....
- What did attackers break into?
- How did the attackers break into it?
- Who was impacted?
- How was it investigated?
.
.
Answer:
1. Qatar National Bank Data Leak of 2016:
In 2016, Qatar National Bank was riddled with a massive data leak in form of a 1.4GB file that contained corporate files and personal information of thousands of customers of QNB, including sensitive information like passwords and credit card information. (Top-7 Cybersecurity Breaches in Qatar, n.d.) The attackers broke into the bank’s transactional records and leaked client data, especially of European foreign nationals living in Qatar. Those affected included common citizens, security officials, high-profile individuals, foreign nationals, and bank officials. The attackers breached QNB’s security barriers in 2015, and since then, they had been extracting user data of targeted individuals. Experts suspect that they used the information to carry out phishing and other cyber attacks on these clients. The main data breach was carried out using a secret insertion tool, of whose log file is present in the data leak folder. QNB subtly denied the data leak reports and asserted that they were mere speculations. However, they said that they will conduct internal investigations by looking at potential bugs and security flaws, and secure their systems if needed. No further information was released thereafter. (Qatar National Bank Hit by Cyber Attack, n.d.)
2. Qatar News Agency Hacked in 2017:
Attackers hacked the website of Qatar News Agency to post fake news regarding Qatar’s diplomatic stance in relation to its neighbouring countries and the US. (“Qatar’s News Agency Was Hacked, Sparking Diplomatic Crisis,” n.d.) This happened during the diplomatic crisis of 2017 and it gravely affected Qatar’s diplomatic relations with neighbouring countries like UAE, Bahrain and Saudi Arabia. Food supplies and transportation costs were severely impacted, leading to the suffering of common people. The attackers exploited a cyber bug that was present in Qatar News Agency’s website to breach the security layers and post unauthorised content. Qatar’s government communications office (GCO) later investigated the breach and arrived at the above conclusion. It confirmed the presence of electronic gaps in the website which the attackers used to access the website. (Qatar Marks One Year Since QNA Hack - Government Communications Office, 2018)
Reference List/For More Info:
1. Top-7 cybersecurity breaches in Qatar. (n.d.).
2. Qatar marks one year since QNA hack - Government Communications Office. (2018, May 24). Qatar Government Communications Office.
3. Qatar National Bank hit by cyber attack. (n.d.). Financial Times.
4. Qatar’s news agency was hacked, sparking diplomatic crisis, preliminary report says. (n.d.). CBC News.
Week 2: Prof Giselle/PL:
1. Why did we move from punch cards to programming languages? What does that tell you about the purpose of programming languages?
Answer:
Punch cards were used in the initial days of programming to store data in physical form by virtue of a pattern of holes punched into a card or cards (computer programming in the punched era, n.d.). As it may be obvious, this process of storing data and feeding instructions to a computer is time consuming and inefficient. Punch cards cannot be modified to accommodate for revision in instructions. An error in the hole pattern could jeopardise the working of the entire program, offering little to no room for correction. In such situations, new cards had to be made from scratch. More importantly, complex instructions and information could not be stored on the cards, thus leading to their continuation in favour of programming languages, which offered significant advantages. It is easy to create, modify, correct and copy codes written in programming languages. They offer to codify higher levels of complexity that can be understood by computers, while also making sure that code is easily understood by humans, as opposed to limiting punch cards usage.
2. There are hundreds of different programming languages out there. Why do you think we need so many?
Answer:
There are several reasons behind the existence of so many programming languages. Firstly, every programming language has its ‘niche,’ that is, they are designed to carry out specific tasks more efficiently than other programming languages. So, varied utility demands a multitude of languages for better performance and optimisation.
(Why Are There so Many Programming Languages. 2023, Aug. 13) This also points out how personal preferences for syntax variations can lead to the development of more user-friendly, customised languages for individuals and for conglomerates. That’s why every programming language is designed to exhibit certain attributes while compromising on others, Such attributes include efficiency, speed, and user experience.
3. What are some drawbacks of a programming language you use? How would you like it to be different? Think of specific examples.
Answer:
In Python, dynamic typing is a feature that determines the type of an input without the need for explicitly mentioning it in the code because the type is determined only during runtime, and not before the program is run. While quite useful, dynamic typing lowers the performance of the interpreter because it has to check the data type at every stage. Python code, as a result, is also prone to runtime errors because sometimes, we don’t know which data type the function is expecting or going to return. An elaborate fix would be to implement an option to employ static typing whenever needed by the programmer, thus optimising the code owing to defined data types. (using static typing, n.d.).
4. If you were going to create a new programming language, how would you start? What do you need to define?
Answer:
Firstly, the need for a new programming language has to be clearly defined and understood. Once I understand as to why a new programming language is needed and what the userbase is going to look like, I will start with defining the syntax and semantics of the code. The ‘grammar’ and ‘vocabulary’ are the building blocks for any language, so I would highly focus on that. Secondly, the execution of the language is to be understood. It can be compiler-based, interpreter-based or a mix of both. (I wrote a programming language. Here’s how you can, too, 2017, Mar. 31).
Reference List/For More Info:
1. Computer programming in the punched card era. (n.d.). Wikipedia
2. Why Are There so Many Programming Languages. (2023, Aug. 13). Md Jamal. Medium.com
3. Using static typing. (n.d.). Futurelearn.com
4. I wrote a programming language. Here’s how you can, too. (2017, Mar. 31). William Wold. FreeCodeCamp.com
Week 3: Prof Hammoud/Cloud:
1. What is cloud computing?
Answer:
Cloud computing is the delivery and provision of computing services like data storage and software digitally over the internet, as opposed to the traditional methods of buying hardware and installing appropriate programs in order to avail IT services on a computer. It is usually based on subscription-based models and offers minimal management efforts for users. Internet is a pre-requisite in terms of connectivity for availing cloud services. (What is cloud computing?. 2024, Feb 14) (
2. Is cloud computing a new technology per se? In other words, what are the unique technology features of cloud computing, if any?
Answer:
Cloud computing is not a new technology per se, as it just offers a new and better way of availing computing services. As internet speeds are getting faster and computing capabilities are getting better, users require remote access to the physical capabilities of hardware and services of certain software that they can't buy or install at their local computer. In order to tackle this, cloud computing allows multiple users to access advanced resources of the cloud provider using a multi-tenant model. Users can buy services accordiing to their needs and unsubscribe from any cloud service as per their discretion. Another feature of cloud computing is that it provides an integrated approach to various services like server management, data storage and software distribution over the internet. The secure systems and enhanced backup mechanisms may provide better risk mitigating measures than in personal computers.
(Understanding NIST’s Five Essential Characteristics of Cloud Computing. 2024, Mar 18)
3. What are the three major cloud service models?
Answer:
The three major cloud service models are:
- Infrastructure as a Service (IaaS): IaaS providers offer virtual computing infrastructure like computers, storage, etc. so that a client can have full access to the infrastructure's systems like OS, applications, etc. without having to manage the physical hardware. IaaS providers do it for them. Examples include Microsoft Azure VMs, and Google Compute Engine.
- Platform as a Service (PaaS): PaaS providers focus more providing an IT environment for developers to create, modify and debug their projects like applications and websites over the cloud without having to worry about the underlying infrastructure management. The provider manages server related issues itself, while the client gets the platform to develop, host, reconfigure their project with inbuilt tools. For example, Microsoft Azure App Service and Google App Engine.
- Software as a Service (SaaS): SaaS providers typical provide applications and software on a demand basis. There is no need to install or update the software in future, as it is provided through the internet and managed by the provider. Client doesn't have to worry about infrastructure or software management. They can avail the final products with most convenience. SaaS providers include Google Workspace, Dropbox, etc.
(PaaS vs. IaaS vs. SaaS vs. CaaS: How are they different?, n.d.).
4. Name at least 3 real-world domains where the application of cloud computing was (or can be) very enabling and effective.
Answer:
1. Government Services: E-governance platforms for availing government services is made possible due to cloud computing.
2. Entertainment: Streaming platforms like Netflix and Prime use cloud storage serves to storage content and provide it to their subscribers.
3. Education: Platforms that provide open learning courses and other educational content usually rely on cloud-based servers for deseminating the information.
(Real World Applications of Cloud Computing, n.d.)
5. What is the economic/business model of cloud computing?
Answer:
The business model of cloud computing is mostly dependent on a on-demand, pay-as-you-go model. Users only pay for the resources they consume within a definite period of time, thereby eliminating upfront hardware costs for the users. Cloud providers typical as the staff mananging the hardware and underlying software insfrastructure of a company against a fee. The delivery of cloud services is almost instantaneous, so fast service provisiom is one essential feature of cloud computing's business model. (What Is Cloud Economics? The Ultimate Guide. 2023, October 25)
Reference List/For More Info:
1. What is cloud computing?. (2024, Feb 14). IBM
2. Understanding NIST’s Five Essential Characteristics of Cloud Computing (2024, Mar 18). D&G Support Services. Linkedin.com
3. PaaS vs. IaaS vs. SaaS vs. CaaS: How are they different? (n.d.). Google Cloud
4. Real World Applications of Cloud Computing (2022, Dec 09). geeksforgeeks.org
5. What Is Cloud Economics? The Ultimate Guide (2023, Oct 05). Mike Chen. Oracle
Week 4: Prof Christos/ Theory:
1. What is a decision problem?
Answer:
In computability theory, a decision problem is a 'True-False' or 'Yes-No' problem in which the given input, whenn satisfying a given condition, yields a 'yes' output. Usually, the decision problem is defined on a set of infinite inputs to a set of all inputs which yield 'yes'. (Decision Problem. n.d.)
2. What does it mean for a decision problem to be decidable?
Answer:
For a decision problem to be decidable, there must exist an algorithm that solves the problem, that is, it yields a definite yes or no given any input within a reasonable amount of time taken to compute the output. A decidable problem always has a computable solution. (Decision Problem, n.d.)
3. What is the class P? What is the class NP?
Answer:
Class P problems refer to the type of problems which can be solved in polynomial time, that is, a finite time such that the steps taken to complete a deterministic algorithm to compute a solution can be expressed as a polynomial function of variable n, where n is the length of the input. They are deterministic in nature, meaning that specific solutions can be obtained for such problems. Class NP problems, on other hand, are computated using non-deterministic algorithms in polynomial time. Such problems are harder to solve due to their non-deterministic nature. However, if a solution to the NP problem is given, it can be easily verified. Class P is a subset of Class NP.
(Difference between P class Problem and NP class Problem. n.d.)
4. What is the intuitive meaning of the “P versus NP” question?
Answer:
The intuitive meaning of the "P versus NP" question asks whether every problem which can be verified can also be solved in polynomial time. Basically, whether set P = Set NP, or NP is the superset of P. (P versus NP problem, n.d.)
5. If you resolve the P versus NP question, how much richer will you be?
Answer:
If I resolve the P versus NP question, the Clay Mathematics Institute will reward me with $1 Million as it is part of the Millennium Prize Problems. Very cool. (P versus NP problem, n.d.).
Reference List/For More Info:
1. Decision Problem. (n.d.). Wikipedia
2. Difference between P class Problem and NP class Problem (n.d.). Java Tpoint
3. P versus NP problem (n.d.). Wikipedia
Week 5: Prof Eduardo/SW Engineering:
1. What was the "software crisis" of the 1960s, and how did it lead to the creation of software engineering? What problems did this new discipline aim to solve?
Answer:
When the computational power started growing exponentially in the 60s, upscaling software capabilities to meet the hardware requirements was getting tougher for developers of that time. As a result, a lot of large-scale and complex software development projects could not be completed due to developers not being able to develop and maintain systems. Another reason was that breaking down large problem sets into smaller chunks was not a common practice, and hence, many big projects failed or were completed at financial or technical compromise. This crisis led to the development of software engineering as a distinct field, which aimed to introduce steps, methods and approaches to software development. Establishing standard practices, software testing, effective project management techniques were central to this discipline. (The 1960s Software Crisis. 2023, Nov 25)
2. What are Agile methods and the Waterfall model in software development, and how are they different?
Answer:
Waterfall Method: It is a linear, sequential method to software development, where the development takes place in clearly defined steps, from design to implementation to maintenance. Each phase is dependent on the previous phase's success and no phase can be skipped over.
Agile Method: It is an iterative, incremental approach to software development, wherein progress takes place in phases that are not necessarily distinct and interdependent. It works on the principle of iterations, wherein user feedback and bug detection methods identify the areas to be improved with every subsequent iteration.
The main difference is that Agile is flexible and adaptive, whereas Waterfall is more structured and predictable. (Agile vs. waterfall project management. n.d.)
3. Why does Netflix intentionally shut down its servers randomly, and how does this help their software?
Answer:
Netflix practices what is called 'chaos engineering,' a method in which problems are deliberately created in a system to identify potential faultlines in the working of a software. When Netflix serves are randomly shut down, their developers look for solutions in order to amend the malfunctioning, so that they have cues to improve the system in case of an actual software breakdown. (How Netflix embraced Chaos, 2023, Mar 10).
4. What is open-source software, and why do big companies like Google, Microsoft, and Amazon contribute to it?
Answer:
Open-source software are projects whose code is available in the public domain. Such projects can be modified, viewed and used by anyone. Open-source projects involve collaboration, transparency and pooling of diverse talented minds. The reason why big companies contribute to open-source software is to showcase their expertise and way of SW engineering to a wider public domain. It ensures that they are contributing to the broader industry practices and set a mark in the changing norms that govern SQ development. It also lowers cost of acquisition, should their requirements be fulfilled by an open source project for a bigger project. (Starting an Open Source Project, n.d.)
5. Why can maintaining software sometimes be more costly than building it initially, and how does technical debt contribute to these higher maintenance costs?
Answer:
Maintaining software can be more costly than building it initially as it involves modifying old code, resulting in technical challenges. Building up on old code, especially without original developers, means that the code has to be independently interpreted and modified to meet current needs. The original code is usually simple and straightforward, involving minimal costs. However, as hardware capabilities increase and more software features have to be incorporated, building on old, obsolete code is challenging for new developers. The more complex a software, the harder it is to make changes to it, especially if it is a major change. Technical debt can quantify such challenges, as it refers to the degree of inconsistencies and opaqueness observed in the original code of a software. Uninterpretable code hampers from the past hampers improvement in iterations, and thus piles up like 'debt' for new-age developers. (Causes of Software Maintenance Problems. n.d.)
Reference List/For More Info:
1. The 1960s Software Crisis. (2023, Nov 25). ᗰṳhumuzå ₱ɨuṩ. Medium.com
2. Agile vs. waterfall project management (n.d.). Dan Radigan. Atlassian
3. Causes of Software Maintenance Problems (n.d.). Java Tpoint
4. Starting an Open Source Project. (n.d.). OpenSource Guide
5. . How Netflix embraced Chaos (2023, Mar 10). Haasitta Panepuu. Medium.com
Week 6: Prof. Gianni/Rob and AI
1. How would you define Artificial Intelligence (AI)?
Answer:
The ability of a computer to perform functions that are traditionally associated with human beings, such as data analysis, visual and audio perception, etc. through a series of systems and algorithms is called artificial intelligence (AI). It is currently the most popular field of computer science. Computers powered by AI technologies are trained on existing data sets to deliver outputs on similar data points not existing in the input data sets. (Artificial Intelligence, n.d.)
2. AI has existed for nearly 70 years. Why is it experiencing an impressive growth right now?
Answer:
AI was first discussed at a Dartmouth Conference in the 1960s, but recent years have seen an exponential rise in AI development (4 reasons why AI is exploding Today. 2023, Dec 10). Firstly, as Moore’s law explains, computational power doubles every two years and in the mid 2010s, the law’s effects have sort of plateaued. Therefore, we have an exponential amount of computational power at hand to execute complex AI models. Secondly, data science and availability of organised data has reached its peak recently, meaning more data for AI algorithms to train on. It resulted in AI becoming better at delivering output. And lastly, the vast amount of investment that AI field has received from tech companies allows room for great innovation and exploration, leading to an unprecedented boom in the field.
3. Can you identify three domains or classes of problems where current AI models still face significant challenges?
Answer:
The three domains are ethic decision making, emotional intelligence and explainable AI. AI currently lacks the capacity to base its decisions within a robust and adaptable moral framework where it can take the cultural and social context and deliver content accordingly. AI cannot form authentic, personal connections with humans due to its inability to experience and understand emotions. It is important for AI to understand, process and respond to emotions in a meaningful manner in order to possess emotional intelligence. Moreover, the complexity of AI models allows little room for human comprehension of these algorithms, which is a grave concern. Therefore, efforts must be made to make transparency in AI decision making and promote explainable AI.
4. Can you name at least three application sectors where robots are widely used, and explain why they are employed in those sectors?
Answer:
The three sectors include military, automotive manufacturing and underwater exploration. In the military, manless drones are increasingly being used in warfare. robotic vehicles and manless aircrafts are being adopted to ensure minimal human casualties and maximum combat accuracy. In automotive manufacturing, robots are used to manufacture and assemble car parts. A lot of car manufacturers even use robots for servicing snd repair of vehicles. Underwater exploration at water levels that can crush a human being is carried out by manless submarines. These robots operate under extreme pressure and deliver the best possible results.
5. Do you believe that the convergence of Artificial General Intelligence (AGI) and fully autonomous robotics is imminent and could potentially have a major impact on the world?
Answer:
No, I don’t think that the convergence of AGI and robotics is imminent in the near future. While the world is certainly moving towards the dream of developing AGI, integrating it with robotics, a vastly different field, would require more time and energy to fulfill. Therefore, the two disciplines will continue to grow rapidly as years progress, but their convergence is quite unlikely until their compatibility is fully established. However, the day this convergence happens, the world would be entirely transformed forever. The job market and the lives of billions of people will be changed in unprecedented ways, and we would have new global dilemmas to deal with, such as mass unemployment, AI usage ethics, AI-human power dynamics, etc. (Robotics and Artificial Intelligence: The Role of AI in Robots. 2021, Nov 6)
Reference List/For More Info:
1. Artificial Intelligence (n.d.) Builtin.com
2. 4 Reasons Why AI is Exploding Today. (2023, Dec 10). Peter H. Diamandis. Diamandis.com
3. Robotics and Artificial Intelligence: The Role of AI in Robots. (2021, Nov 6). Alan Martin. AIBusiness.com