Commit 93989f9
Changed files (1)
README.md
@@ -1,3 +1,104 @@
# COMP 200
# 1.1 Introduction to Computer Science
+
+1. Misconception 1: Computer science is the study of computers
+ * science is not about tools. it is about how we use them and what we find out when we do.
+1. Misconception 2: Computer science is the study of how to write computer programs
+ * programming is a tool that researchers use to study new ideas and build and test new solutions
+1. Misconception 3: Computer science is the study of the uses and applications of computers and software.
+ * It is a computer scientist who is responsible for specifying, designing,
+ building and testing software packages as well as the computer systems on
+ which they run.
+
+# 1.2 The Definition of Computer Science
+
+The central concept of computer science is the `algorithm`.
+
+It is the task of the computer scientist to design and develop algorithms to
+solve a range of important problems. This design process includes the following
+operations:
+
+* Studying the behaviour of algorithms to determine if they are correct and
+ efficient (their formal and mathematical properties)
+* Designing and building computer systems that are able to execute algorithms
+ (their hardware realizations)
+* Identifying important problems and designing correct and efficient software
+ packages to solve these problems (their applications)
+
+
+> algorithm: a procedure for solving a mathematical problem in a finite number
+> of steps that frequently involves repetition of an operation; broadly: a
+> step-by-step method for accomplishing some task.
+
+An algorithm is an ordered sequence of instructions that is guaranteed to solve
+a specific problem. It is a list that looks something like this:
+
+1. Do something
+2. Do something
+3. Do something
+...
+N. Stop, you are finished
+
+All operations used to construct algorithms belong to one of only three
+categories:
+
+1. Sequential operations: A sequential instruction carries out a single
+ well-defined task. When that task is finished, the algorithm moves on to the
+ next operation. Sequential operations are usually expressed as simple
+ declarative sentences.
+ * add 1 cup of butter to the mixture in the bowl
+ * subtract the amount of the check from the current account balance.
+ * set the value of `x` to 1.
+1. Conditional operations: These are the `question-asking` instructions of an
+ algorithm. They ask a question, and the next operation is selected on the
+ basis of the answer to that question.
+ * if the mixture is too dry, then add one-half cup of water to the bowl.
+1. Iterator operations: These are the "looping" instructions of an algorithm.
+ They tell us not to go on to the next instruction but, instead, to go back
+ and repeat the execution of a previous block of instructions.
+ * repeat the previous two operations until the mixture has thickened.
+
+
+> If we can specify an algorithm to solve a problem, then we can automate its
+> solution.
+
+In computer science terminology, the machine, robot, person or thing carrying
+out the steps of an algorithm is called a `computing agent`.
+
+Computer science can also be viewed as the science of algorithmic problem
+solving.
+
+1.3 Algorithms
+
+1.3.1 The formal definition of an algorithm
+
+> Algorithm: a well-ordered collection of unambiguous and effectively computable
+> operations that, when executed, produces a result and halts in a finite amount
+> of time.
+
+An `unambiguous operation` is one that can be understood and carried out
+directly by the computing agent without further simplification or explanation.
+When an operation is unambiguous, we call it a `primitive operation` or simply a
+`primitive`.
+
+An algorithm must be composed entirely of primitives.
+
+> What are the primitive operations of a typical modern computer system?
+
+The formal term for "doable" is `effectively computable`.
+
+# 2.2.3 Conditional and Iterative Operations
+
+* Sequential Algorithm: Executes its instructions in a straight line from top to bottom.
+* Control Operations: allow us to alter the normal sequential flow of control in an algorithm.
+* Conditional Statements: allow an algorithm to ask a question and select the
+ next operation to perform on the basis of the answer to that question.
+* iteration: looping
+ * continuation condition: evaluates "true/false condition"
+ * loop body: block of operations
+ * infinite loop: if continuation condition is never false
+* algorithm discovery: finding a solution to a given problem
+* sequential search : start at the beginning of the list and search for the item
+ by visiting each item in the list until the end. (unsorted data)
+* library: collection of useful, prewritten algorithms.