diff options
| author | mo khan <mo@mokhan.ca> | 2022-12-05 13:08:44 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2022-12-05 13:08:44 -0700 |
| commit | 93989f9fb06a62fbc57ade0c334dde31236d0af4 (patch) | |
| tree | 5857c40332a524469cef8c46f9abec0300212ded /README.md | |
| parent | 3abd4fa0ab1fe25b24eaf5d9c98efdff34bc848c (diff) | |
add notes
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 101 |
1 files changed, 101 insertions, 0 deletions
@@ -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. |
