Robotics and AI

Robotics is an area which is combined by engineering and science. It is about the designing, constructing, operating and using of robots. Robots are usually an imitation of humans. They can be used in a lot of situations and do something that humans cannot achieve. For example, robots can go to the space and do things that are dangerous to humans. Factories use robots to save time and money. There are also robots used in families. People can play games with robots. There are even human support robots. Robots are really useful and therefore it should be studied more.

Artificial Intelligence is one area of robotics. It is a rapidly developing area. AI is mainly working on an idea which is robots can be intelligent and are able to think. People expect robots to learn from the environment and react like humans.

There are several problems involved in the field of Artificial Intelligence. AI should be able to solve problems. Although computers already can solve some problems, the problems that they are able to solve are easy. More efforts are needed to improve the robots’ ability to solve problems. Another problem is that people want AI to learn. Same as the problem of solving problems, computers can learn from the given facts and results and then react to the real world whereas they are not advanced enough to learn more things and there are a lot of limitations to the reaction they can give. Except these two problems, people are also facing other problems in this field such as natural language processing, knowledge representation, etc.

useful websites

https://science.howstuffworks.com/robot6.htm

https://newatlas.com/top-ten-robots-2012/25726/

https://www.tutorialspoint.com/artificial_intelligence/artificial_intelligence_robotics.htm

Questions:

1. What is the current most advanced robot?

2. Which area of robotics and artificial intelligence are you working on?

3. What do you expect robots to be like in the future?

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

Embedded System

An embedded system is a microcontroller or microprocessor based system which can perform a specific task. It is a software embedded in a hardware system. There are four types of embedded systems: stand-alone, real-time, networked and mobile.

How does an embedded system work? This is an example of the working mechanism of a real-time embedded system. A real-time embedded system has several basic structures. First, sensors are contained in an embedded system. Sensors will measure the thing which the system is designed for and convert it into electronic signals. Then an analog to digital converter converts the analog signal sent by the sensor into digital signal. After that, the processor processes the signal and store it in memory. The signal is then converted into analog signal. Finally, the measured output will be compared with the expected output.

There are some advantages of embedded systems. First, it can be mass produced, which means the cost of it can be reduced greatly when a lot of people need a system that have some specific functions. It is cost-effective. Second, it has low power consumption. Third, its performance is enhanced. One disadvantage of embedded system is that it takes a huge amount of time to develop a new system. The process is time-consuming and costs lots of money. Another disadvantage is that it takes time to market a new embedded system. The cost in the embedded system development process may cause some companies choosing to not to create a new system.

Embedded system is used in a lot of places including motor control, mobile computing, wireless communication, security systems, printers, DVDs etc. Embedded systems are widely used in our lives.

useful websites

1. https://www.tutorialspoint.com/embedded_systems/es_overview.htm

2. https://www.elprocus.com/embedded-systems-real-time-applications/

3. https://www.theengineeringprojects.com/2016/11/examples-of-embedded-systems.html

Questions:

1. What is the process of developing a new embedded system?

2. Why is it hard to develop an embedded system?

3. What are some challenges this area is facing?

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

Programming Languages

Programming Languages are languages which can get an output when giving a set of instructions. C, C++, Java etc. are all considered as programming languages. For each programming languages, we need to use specific syntax and words to give the computer instructions telling it what to do. Semantics is also an essential part of programming languages. There are two types of semantics. The first type is called static semantics. The programs are checked before being run. If there are some errors, programmers will get a message telling the problem and then the problems can be fixed. The other type is dynamic semantics. The programs are run first and the then people can get the result of the program to know what to improve.

The programming languages people are using are called high-level programming languages. However, computers cannot directly understand the high-level languages. Therefore, we need assembly languages as a transition between high-level programming languages and the language which computer can understand – machine language. Machine language only consists of numbers. It is written in machine code represents binary digits because it is easier for computer to understand and perform the operations by using binary digits.

Humans use many kinds of programming languages. All of the languages have some advantages and drawbacks. Python is one of the languages that are widely used. Python is object-orientated. It is easy to learn python compared with some other languages. Another popular programming language is Java. Many companies use java to develop games and apps. HTML is language used to design and create websites. It is free and accessible. C is a language which is structure-orientated. It is used to develop low-level applications. C language is a language that many people will study as their first programming language. C++ is an extension of C language. People can use C++ to create games, applications and operating systems.

useful websites

https://www.webopedia.com/TERM/P/programming_language.html

https://www.computerscience.org/resources/computer-programming-languages/

https://www.seoskills.in/introduction-computer-languages/

Questions:

1. Why do some people use programming languages that are not used widely?

2. Are there any connections between different types of programming languages?

3. Some functions can be achieved by using many kinds of programming languages. Why don’t people use a same language?

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

Cloud Computing

What is Cloud Computing? Cloud Computing is a shared computer system resources. It is not the hardware or software you are using. Instead, it is a service provided by other companies.

There are three types of cloud computing service. The first type is called SAAS (Software as a Service). It allows clients to use software application via an internet web browser. People can access these applications anywhere because all the data and applications are hosted by the service provider in their location. SAAS is cheaper than traditional ways of selling and maintaining software. The second kind of cloud computing service is called PAAS (Platform as a Service). It provides people a platform for them to develop and publish their own software. It is a new way of developing software and it is becoming more and more popular. It is easier to develop a software in this way and the service provider will also provide help to maintenance and system upgrades. IAAS (Infrastructure as a Service) is the last type of cloud computing service. People can use hardware and services through IAAS. Using IAAS allows small firms to use these services without buying expensive hardware and peripheral systems.

Cloud computing services also have some drawbacks. First, if a company or an individual plan to use a service in long term, it might be a better idea to buy computers or software because the long-term cost of a cloud computing services might be higher than buying the things needed. Second, if one want to buy a service, it must first be a service which is provided by companies. However, the services provided might not be precisely what one need or the needed service is not provided.

There are two major technology involved in cloud computing. The first one is called SOA Architecture and the second is Cloud Virtualization.

useful websites

https://apprenda.com/library/cloud/introduction-to-cloud-computing/

https://www.explainthatstuff.com/cloud-computing-introduction.html

https://azure.microsoft.com/en-in/overview/what-is-cloud-computing/

Questions:

1. What are some current research related to Cloud Computing?

2. Why do companies choose to use IAAS? Wouldn’t it be inconvenient?

3. Are there any differences between the user experiences of cloud computing software and normal software?

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

Security

Computer security is the protection of the computer systems and data the systems store or access. There are several commonly used terminologies in computer security. Assets are the things we want to protect like data, systems or services. Accidents that can happen to assets are called threats. Attacks refer to the efforts of trying to release threats. Weakness of the assets are vulnerabilities.

To realize how do scientists develop methods to protect our computer system, it is important for us to first understand the computer systems’ vulnerabilities. Business software sometimes is outdated because the organizations do not update regularly. All systems and endpoints should be secured but this requirement is not always met. Critical control networks should be isolated from other networks and the Internet. Software bugs are also a big problem security is facing. Sometimes there are unnecessary ports in the systems. Wrong access permission causes troubles too. Attacks to the computer system include denial of service, identity spoofing, malware infection and so on.

Malware is one of the security problem people usually have. What are the methods of preventing malware from destroying the system? We have a lot of antivirus software now. One techniques researchers are using is dividing viruses into different groups and identify them by their genetic signature. Besides the software, people can use firewall. Firewall can prevent unknown programs from accessing the computer.

There are some of the topics in security research: encrypting viruses, the process of authentication, loss of data and its restoration etc. Cybersecurity faces a lot of challenges. The computer systems become more complex and it becomes easier for attackers to find a problem of the system. Threats are hard to be predicted. More attacking methods being created increases the difficulty of protecting the computer system. It is expensive to update systems. Therefore, the problems cannot be fixed on time. In addition, finding the attacker is not easy and the cost of failing to attack is little. All of these challenges are waiting to be solved by scientists.

useful websites

http://ro.ecu.edu.au/cgi/viewcontent.cgi?article=1209&context=ism

http://delivery.acm.org.proxy.library.cmu.edu/10.1145/2470000/2461261/p10-hong.pdf?ip=128.2.10.23&id=2461261&acc=ACTIVE%20SERVICE&key=A792924B58C015C1%2E5A12BE0369099858%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__=1537283824_17a82e4c1f2b6d0bcf7ec5fba78960d3

https://pdfs.semanticscholar.org/8ee8/7566633ae84d3289ffdee687b3df08940b27.pdf

Questions:

1. What is the most harmful attack method in these days?

2. What is the best way to protect our computer and data?

3. How can attackers find the bugs in the system while a lot of developers do not see the problems?

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

Theory of computation

Theory of computation aims to develop formal mathematical models of computation that reflect real-world computers. It can be divided into three areas: complexity theory, computability theory and automata theory.

Complexity theory is solving the problems about classifying computational problems according to their degree of difficulty and defining how much computational resources are needed to solve a problem. For example, one problem of complexity theory is identifying the efforts needed to search a solution in various probabilities and finding out if there are any easier way to do this. The complexity class P contains those problems which can be solved in an efficient way while the class NP is the class of problems that people haven’t found an efficient method to solve.

Computability theory focuses on figuring out whether the problem can be solved or not. Turing’s paper is the most important paper in this field. Turing machine is introduced and the idea of undecidable problems is brought up in this paper. Unlimited register machines were invented in 1950 by Stepherdson and Sturgis. URM is more useful than Turing machine for computations. All algorithms can be listed and then people can identify the problems cannot be solved.

Automata theory is about definitions and properties of different types of computation models. Turing studied the idea of a machine for defining what a machine can do and what they cannot do. After Turing machine, finite automata was studied by researchers. It is used in text processing, compilers and hardware design. People can use finite automata to recognize whether a string is in a language or not. Grammars were the next thing people started to study about after finite automata. Regular expression are methods to express data. There are some problems being considered as intractable. These are the problems not likely be solved by the machines.

useful websites

http://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf

http://theory.cs.princeton.edu/complexity/book.pdf

http://www1.maths.leeds.ac.uk/~pmt6sbc/preprints/sbc1.pdf

https://mcdtu.files.wordpress.com/2017/03/introduction-to-automata-theory.pdf

Questions:

1. What is the purpose of studying complexity? Is it for developing more efficient ways for the computer to work?

2. How can people make sure one algorithm is the best and most efficient way to solve a problem?

3. It has been a long time since the idea of Turing machine was created. Why are people still using Turing machine?