Topic 1 - Introduction Flashcards
What is a computer?
An electronic device that accepts information in digital or similar form and manipulates it for a result based on a sequence of instructions.
Or more simply:
1. One who computes
2. A tool that receives, processes, stores and presents data — can’t always process it immediately.
What were the first 3 computers called? What was each one like and how long ago were they from?
- We have an abacus which was 2500 years ago, and this aided with computation.
- Then the difference engine. This was made from 1847-1849 by Charles Babbage and was never finished because he kept starting over. However if he had finished this early on computers could have had a much larger and quicker impact!
This computer used a ton of tables to look up mathematical formulas but had a lot of human errors as humans were the ones computing and inputting the information into it. This engine evaluated a degree 7 polynomial to 31 digits. - Then we have the ENIAC which was produced in 1945 around wartimes to help with launching bombs. ENIAC stands for electronic numerical integrator and computer. It was essentially the finished and much more advanced version of the difference engine, and could compute 5000 additions per second, 385 multiplies per second, 3 square roots per second, etc. It was very fast compared to people doing calculations but was very large.
What are the three types of electric switches?
- The relay switch:
This was an electromechanical switch which swings its arm based on a current using a spring. So if the current passed by it would swing its arm. This was very loud. They receive a low voltage control signal and use it to activate a mechanism that opens or closes a separate higher-power circuit. - Vacuum tube:
This has no moving parts and uses changing temperature to control the flow of electrons and hence current. It was much quicker and could perform larger calculations then the relay switch, but had expansion and contraction problems. - The transistor: This switch has no moving parts, i \s silent, operates at low temperatures and doesn’t consume as much energy as the other two. It is a semiconductor device used to amplify or switch electrical signals.
What is Moore’s Law?
What does Moore’s law look like on a graph, and does it require a log scale?
What was predicted about this relationship over the short and long term?
How long did this actually last, and over what time period? Why did it stop?
Moore’s law says that the complexity for minimum component costs has increased at a rate of roughly a factor of 2 per year (so doubles every year). It is expected over the short term that this rate will continue, if not increase. But over the long term this rate of increase is more uncertain, but will likely remain constant for the next 10 years.
Essentially this is just saying that the cost for one part in the computer at year one will buy you two parts the next year, and 4 parts the next year and so on. This is because as technology becomes more advanced and easily made, it becomes cheaper to purchase.
DOUBLING TIME: 18 months or around 2 years
On a graph, if you plot the log of the number of transistors you can get for a certain price against the year, you will get a linear increasing line with a slope of two. But without log it would be an exponentially increasing slope with a degree of 2.
A good measure of complexity for these computers is the number of transistors in them.
This law lasted for around 50 years from the 1960s-2010s, and it slowed down due to physical limitations of chip manufacturing.
What is computer science? What is science? What is the systematic approach we take to solve scientific questions?
Science: The effort to discover and increase understanding through controlled experimental methods and analysis. This is done in a cyclic process of:
Hypothesize, experiment, observe, analyze, and draw conclusions, and then repeat.
Computer science: The scientific study of computation and computer technology, hardware and software. AND the study of theoretical foundation of information and computation, and their implementation and application in computer systems.
Since we cannot solve some problems with our current computer, we’re need to understand this and not create a program which is unsolvable.
How do we make a computer easy to use?
We need to watch humans solve problems using the computer and see if the interface is good enough to help them do this. This includes producing user interface designs.
What is seam carving in computer graphics?
Seam carving is essentially asking the computer to turn a certain picture of certain pixels into a smaller picture, by removing “white” space that is not needed for the picture. The computer does this by looking at the picture and using contrast seeing which parts are important and which parts can be removed. SO each step it chooses a line that is not needed and removes that line from the picture.
Largest contrast = most interesting pixels
How do we store large amounts of information? What are these places called? What types of algorithms are used to allow relevant information to be quickly found?
We store large amounts of information in databases. These databases must have information stored in a way that is quick to retrieve. These databases should also indentify which page you are most likely to want, and so they use indexing algorithms, which look at key words to give you the page you were most likely to want. However, databases may also advertise things to you based on what you purchase.
Ex) Target figuring out the teen girl was pregnant before she told him based on her search history.
What is information security and privacy? How do we ensure information security and privacy?
Information security: Ensure transmitted information is kept confidential, authentic, in its original form, etc.
Privacy: Ensure only authorized entities can access data/info
Technical correctness in storing this information is essential, but so is encouraging users to make good decisions.
A main way to ensure security and privacy is through encryption. Key and box demonstration:
1. The sender puts a blue key inside and locks the box with a red lock, and they have the red key for this lock.
2. They then pass it to the receiver, and anyone along that path cannot get into the box.
3. The receiver can’t open the box because they don’t have a red key. So they instead put a green lock on the box which now has two locks on it and passes it back to the sender. This tells the sender that the correct person received the package, and no one along the way was able to get in.
4. The sender now opens their red lock with their red key and removes it. They pass it back to the receiver and still people cannot get into this box.
5. The receiver now uses their green key to open their green lock and can get the blue key that was inside — which represents the information they were trying to transfer and keep confidential.
This is a representation of encryption, which in reality turns information into ciphertext, which only authorized parties will be able to understand and decode.
What are the two primary subfields of the theory of computation? (Essentially describing the solvability of a problem)
What are some programs that will never solve?
Complexity theory: How efficiently can the problem be solved, based on time and memory space? make sure you analyze the problem before you write the code.
Computability theory: Can the problem be solved with a computer? Again if you can’t theoretically solve it then you have to check if the computer will be able to solve it.
The halting problem: We cannot write a program that takes input from a 2nd program and determines if that program always halts or continues going. This problem essentially asks: Can you write a program that takes any other program and an input, and tells you whether that program will eventually stop running when given that input?
Alan Turing proved the halting problem is undecidable using a proof by contradiction, where he showed that if such an algorithm existed, it could be used to create a paradoxical situation where a program would be able to predict its own halting behavior, leading to a contradiction.
What are networks? What do they allow us to do? What are some problems that they cause?
A system of interconnected devises that allow for resource sharing. How do we transfer data reliably and wirelessly and how do we get data where it needs to go?
Net neutrality: Can internet provides block access to websites such as competitor websites?
How can we get multiple computers to work together to solve a problem? What are two problems that can occur if we don’t get these computers to work together?
To get multiple computers to work together we have to represent a problem in a way that allows it to be solves in parallel by coordinating the actions of the computers.
There are two problems that can come about in doing this:
- Circular rate condition: When two computers say they need the others to do something to continue then they are in deadlock and it will never be solved.
- Race conditions: Two computers run at different rates and hence can produce undesired outcomes if not timed properly.
To minimize design errors and ease future expansion in software engineering we can…
Build on what we had before so that we don’t start from scratch, and represent numbers as variables so that we don’t actually type in a wrong number which may mess up the whole code.
How do we learn? What does it mean to learn something?
We learn by applying knowledge through practice, because we can then apply that knowledge to future problems that have similar issues. We learn by teaching someone else, getting a score on a test or memorizing facts.
What is the taxonomy called the identifies six levels of competence in learning? What are these 6 levels?
Give a pneumonic for this…
KCAASE
(Keh-case)
-so then remember it is double k sound with case as in briefcase at the end.
This taxonomy is called Bloom’s taxonomy, and identified 6 levels of competence in learning which identifies how strongly someone knows something:
LEAST LEVEL
-Knowledge: Memorization; ability to recall something you have read or heard.
-Comprehension: Infer causes or predict consequences based on memorized knowledge. You can explain why it is this way.
-Application: Solve a problem by following a known pattern for a similar type of problem.
-Analysis: Identify patterns, separate complex systems into components, infer relationships between components, etc.
-Synthesis: Use old ideas to CREATE new ideas, (so combine several ideas to solve a problem in a NOVEL way. Given pieces and base and combine them to code something required (Parson’s problem)
-Evaluation: Compare multiple solutions and identify their strengths and weaknesses.
GREATEST LEVEL
Following from the ___________ part of Bloom’s taxonomy, how do we solve problems? What do we need to do before we create a program?
Following from the APPLICATION part of Bloom’s taxonomy, we want to solve problems, and we have to be able to solve problems and break them down into steps before we can write a code to solve those problems.
To solve these problems, we want to apply previous knowledge and learn new knowledge using other’s knowledge.
What is the top down design, and is it used in python? What is the output of the top down design and what is its definition? What are the benefits and drawbacks of the top-down design?
The top down design works best in small programs or just a small region of the program. We start with the entire problem, then we break it into smaller steps, (analysis level of understanding because problem solving) and then we repeat this breaking down for any steps still super complex.
An algorithm is the output of the top down design, as it is a finite sequence of effective steps that solve a problem. It needs to be finite steps to be able to be performed or else it will not be useful.
If you say to start from the smallest real number larger then zero this is not quantifiable so it cant be unambiguous and the audience has to be able to understand it.
Essentially it is just steps for how to solve a problem, and each step is broken down more and more as you go.
What is programming?
Programming is the process of creating software by translating algorithms into a computer language.
This computer language is based on the coding language you are using, but at the very base is just a bunch of ones and zeroes.
To make the program work, you have to follow the rules of the programming language.