From bd90737b0f2df5fbce2222b0a73402945340c03d Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Sun, 17 Dec 2023 20:14:01 -0700 Subject: [PATCH 01/22] Add boilerplate for extra topic sections --- pretext/ExtraTopics/BigO.ptx | 22 ++ pretext/ExtraTopics/BinaryRepresentations.ptx | 168 +++++++++++++++ pretext/ExtraTopics/Glossary.ptx | 156 ++++++++++++++ pretext/ExtraTopics/Packages.ptx | 196 ++++++++++++++++++ pretext/ExtraTopics/SearchSortAlgorithms.ptx | 93 +++++++++ pretext/ExtraTopics/toctree.ptx | 9 + pretext/thinkcspy.ptx | 2 + 7 files changed, 646 insertions(+) create mode 100644 pretext/ExtraTopics/BigO.ptx create mode 100644 pretext/ExtraTopics/BinaryRepresentations.ptx create mode 100644 pretext/ExtraTopics/Glossary.ptx create mode 100644 pretext/ExtraTopics/Packages.ptx create mode 100644 pretext/ExtraTopics/SearchSortAlgorithms.ptx create mode 100644 pretext/ExtraTopics/toctree.ptx diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx new file mode 100644 index 000000000..0fd900d2d --- /dev/null +++ b/pretext/ExtraTopics/BigO.ptx @@ -0,0 +1,22 @@ + +
+ Big O Analysis + + +

The goal of this book is to teach you to think like a computer scientist. This + way of thinking combines some of the best features of mathematics, engineering, + and natural science. Like mathematicians, computer scientists use formal + languages to denote ideas (specifically computations). Like engineers, they + design things, assembling components into systems and evaluating tradeoffs + among alternatives. Like scientists, they observe the behavior of complex + systems, form hypotheses, and test predictions.

+

The single most important skill for a computer scientist is problem + solving. Problem solving means the ability to formulate problems, think + creatively about solutions, and express a solution clearly and accurately. As + it turns out, the process of learning to program is an excellent opportunity to + practice problem solving skills. That's why this chapter is called, The Way of + the Program.

+

On one level, you will be learning to program, a useful skill by itself. On + another level, you will use programming as a means to an end. As we go along, + that end will become clearer.

+
diff --git a/pretext/ExtraTopics/BinaryRepresentations.ptx b/pretext/ExtraTopics/BinaryRepresentations.ptx new file mode 100644 index 000000000..7b7ceb46c --- /dev/null +++ b/pretext/ExtraTopics/BinaryRepresentations.ptx @@ -0,0 +1,168 @@ + +
+ Binary Representations + + + +

+ Natural languages are the languages that people speak, such as English, + Spanish, and French. They were not designed by people (although people try to + impose some order on them); they evolved naturally.

+

+ Formal languages are languages that are designed by people for specific + applications. For example, the notation that mathematicians use is a formal + language that is particularly good at denoting relationships among numbers and + symbols. Chemists use a formal language to represent the chemical structure of + molecules. And most importantly:

+
Programming languages are formal languages that have been designed to
+    express computations.
+

Formal languages tend to have strict rules about syntax. For example, 3+3=6 + is a syntactically correct mathematical statement, but 3=+6$ is not. + H2O is a syntactically correct chemical name, but 2Zz is + not.

+

Syntax rules come in two flavors, pertaining to tokens and structure. + Tokens are the basic elements of the language, such as words, numbers, and + chemical elements. One of the problems with 3=+6$ is that $ is not a + legal token in mathematics (at least as far as we know). Similarly, + 2Zz is not legal because there is no element with the abbreviation + Zz. +

+

The second type of syntax rule pertains to the structure of a statement— + that is, the way the tokens are arranged. The statement 3=+6$ is + structurally illegal because you can't place a plus sign immediately after an + equal sign. Similarly, molecular formulas have to have subscripts after the + element name, not before.

+

When you read a sentence in English or a statement in a formal language, you + have to figure out what the structure of the sentence is (although in a natural + language you do this subconsciously). This process is called parsing. +

+

For example, when you hear the sentence, The other shoe fell, you understand + that the other shoe is the subject and fell is the verb. Once you have parsed + a sentence, you can figure out what it means, or the semantics of the sentence. + Assuming that you know what a shoe is and what it means to fall, you will + understand the general implication of this sentence.

+

Although formal and natural languages have many features in common — tokens, + structure, syntax, and semantics — there are many differences:

+ + + ambiguity +

Natural languages are full of ambiguity, which people deal with by + using contextual clues and other information. Formal languages are + designed to be nearly or completely unambiguous, which means that any + statement has exactly one meaning, regardless of context.

+
+ + redundancy +

In order to make up for ambiguity and reduce misunderstandings, natural + languages employ lots of redundancy. As a result, they are often + verbose. Formal languages are less redundant and more concise.

+
+ + literalness +

Formal languages mean exactly what they say. On the other hand, + natural languages are full of idiom and metaphor. If someone says, The + other shoe fell, there is probably no shoe and nothing falling.

+ +

You'll need to find the original joke to understand the idiomatic + meaning of the other shoe falling. Yahoo! Answers thinks it + knows!

+
+
+
+

People who grow up speaking a natural language—everyone—often have a hard + time adjusting to formal languages. In some ways, the difference between formal + and natural language is like the difference between poetry and prose, but more + so:

+ + + poetry +

Words are used for their sounds as well as for their meaning, and the + whole poem together creates an effect or emotional response. Ambiguity + is not only common but often deliberate.

+
+ + prose +

The literal meaning of words is more important, and the structure + contributes more meaning. Prose is more amenable to analysis than + poetry but still often ambiguous.

+
+ + program +

The meaning of a computer program is unambiguous and literal, and can + be understood entirely by analysis of the tokens and structure.

+
+
+

Here are some suggestions for reading programs (and other formal languages). + First, remember that formal languages are much more dense than natural + languages, so it takes longer to read them. Also, the structure is very + important, so it is usually not a good idea to read from top to bottom, left to + right. Instead, learn to parse the program in your head, identifying the tokens + and interpreting the structure. Finally, the details matter. Little things + like spelling errors and bad punctuation, which you can get away with in + natural languages, can make a big difference in a formal language.

+

+ Check your understanding +

+ + +

The differences between natural and formal languages include:

+
+ + + +

natural languages can be parsed while formal languages cannot.

+
+ + Actually both languages can be parsed (determining the structure of the sentence), but formal languages can be parsed more easily in software. + +
+ + +

ambiguity, redundancy, and literalness.

+
+ + All of these can be present in natural languages, but cannot exist in formal languages. + +
+ + +

there are no differences between natural and formal languages.

+
+ + There are several differences between the two but they are also similar. + +
+ + +

tokens, structure, syntax, and semantics.

+
+ + These are the similarities between the two. + +
+
+
+ + +

True or False: Reading a program is like reading other kinds of text.

+
+ + + +

True

+
+ + It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. + +
+ + +

False

+
+ + It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. + +
+
+
+
diff --git a/pretext/ExtraTopics/Glossary.ptx b/pretext/ExtraTopics/Glossary.ptx new file mode 100644 index 000000000..3bfab9e89 --- /dev/null +++ b/pretext/ExtraTopics/Glossary.ptx @@ -0,0 +1,156 @@ + +
+ Glossary + + + + + + activecode +

A unique interpreter environment that allows Python to be executed from within a web browser.

+
+ + algorithm +

A general step by step process for solving a problem.

+
+ + bug +

An error in a program.

+
+ + byte code +

An intermediate language between source code and object code. Many + modern languages first compile source code into byte code and then + interpret the byte code with a program called a virtual machine.

+
+ + codelens +

An interactive environment that allows the user to control the step by step execution of a Python program

+
+ + comment +

Information in a program that is meant for other programmers (or anyone + reading the source code) and has no effect on the execution of the + program.

+
+ + compile +

To translate a program written in a high-level language into a + low-level language all at once, in preparation for later execution.

+
+ + debugging +

The process of finding and removing any of the three kinds of + programming errors.

+
+ + exception +

Another name for a runtime error.

+
+ + executable +

Another name for object code that is ready to be executed.

+
+ + formal language +

Any one of the languages that people have designed for specific + purposes, such as representing mathematical ideas or computer programs; + all programming languages are formal languages.

+
+ + high-level language +

A programming language like Python that is designed to be easy for + humans to read and write.

+
+ + interpret +

To execute a program in a high-level language by translating it one + line at a time.

+
+ + low-level language +

A programming language that is designed to be easy for a computer to + execute; also called machine language or assembly language.

+
+ + natural language +

Any one of the languages that people speak that evolved naturally.

+
+ + object code +

The output of the compiler after it translates the program.

+
+ + parse +

To examine a program and analyze the syntactic structure.

+
+ + portability +

A property of a program that can run on more than one kind of computer.

+
+ + print function +

A function used in a program or script that causes the Python + interpreter to display a value on its output device.

+
+ + problem solving +

The process of formulating a problem, finding a solution, and + expressing the solution.

+
+ + program +

A sequence of instructions that specifies to a computer actions and + computations to be performed.

+
+ + programming language +

A formal notation for representing solutions.

+
+ + Python shell +

An interactive user interface to the Python interpreter. The user of a + Python shell types commands at the prompt (>>>), and presses the return + key to send these commands immediately to the interpreter for + processing.

+
+ + runtime error +

An error that does not occur until the program has started to execute + but that prevents the program from continuing.

+
+ + semantic error +

An error in a program that makes it do something other than what the + programmer intended.

+
+ + semantics +

The meaning of a program.

+
+ + shell mode +

A style of using Python where we type expressions at the command + prompt, and the results are shown immediately. Contrast with + source code, and see the entry under Python shell.

+
+ + source code +

A program, stored in a file, in a high-level language before being compiled or interpreted.

+
+ + syntax +

The structure of a program.

+
+ + syntax error +

An error in a program that makes it impossible to parse — and + therefore impossible to interpret.

+
+ + token +

One of the basic elements of the syntactic structure of a program, + analogous to a word in a natural language.

+
+
+
diff --git a/pretext/ExtraTopics/Packages.ptx b/pretext/ExtraTopics/Packages.ptx new file mode 100644 index 000000000..747d617d8 --- /dev/null +++ b/pretext/ExtraTopics/Packages.ptx @@ -0,0 +1,196 @@ + +
+ Packages + +

+ Hi everyone, there's a bit of confusion going around with requirements.txt. This is simply a file in which you specify your project's dependencies, minus those which are already bundled into Python (e.g. csv). + + You only need to provide this file if you're using external dependencies (numpy, scipy, sklearn, etc). The autograder has matplotlib bundled with it which is why you don't have to include it. + + One easy way to generate this file is by running this command in the terminal (while navigated to the directory of your final project): + + pip freeze > requirements.txt + + Breakdown of what's happening (aside from generating the proper requirements.txt file): + pip is Python's dependency (aka "package") manager + freeze is just the command, no idea why it's called freeze. Educated guess: I think it's because it's "freezing" your dependencies at a moment in time (or in other words, at a specific version) and saving them to a file. + > is the Linux output redirection operator, which is going to take the result of pip freeze and redirect it to the file you provided, which is requirements.txt + + That's it! Your requirements.txt will be in a format like: + + numpy==1.26.2 + + + (CS majors: read on for why this isn't great) + + So actually, this will freeze ALL of your requirements. I ran this on my computer and had like a 100 line file of tons of dependencies, and we want people to install only what they have to (we want to minimize overhead/space taken up). + + Probably the best way to do this is to pip show DEPENDENCY where DEPENDENCY is something like numpy, find the version, and type it into requirements.txt in the format listed above. There are also packages (ironically) that do this. + + You can also view all packages (and their versions) that people from around the world have created on PyPI. This even includes stuff TA Greg made custom for the autograder, and is also why we made you all install Anaconda (which, for the most part, automatically dealt with this)! +

+ + + +

+ Natural languages are the languages that people speak, such as English, + Spanish, and French. They were not designed by people (although people try to + impose some order on them); they evolved naturally.

+

+ Formal languages are languages that are designed by people for specific + applications. For example, the notation that mathematicians use is a formal + language that is particularly good at denoting relationships among numbers and + symbols. Chemists use a formal language to represent the chemical structure of + molecules. And most importantly:

+
Programming languages are formal languages that have been designed to
+    express computations.
+

Formal languages tend to have strict rules about syntax. For example, 3+3=6 + is a syntactically correct mathematical statement, but 3=+6$ is not. + H2O is a syntactically correct chemical name, but 2Zz is + not.

+

Syntax rules come in two flavors, pertaining to tokens and structure. + Tokens are the basic elements of the language, such as words, numbers, and + chemical elements. One of the problems with 3=+6$ is that $ is not a + legal token in mathematics (at least as far as we know). Similarly, + 2Zz is not legal because there is no element with the abbreviation + Zz. +

+

The second type of syntax rule pertains to the structure of a statement— + that is, the way the tokens are arranged. The statement 3=+6$ is + structurally illegal because you can't place a plus sign immediately after an + equal sign. Similarly, molecular formulas have to have subscripts after the + element name, not before.

+

When you read a sentence in English or a statement in a formal language, you + have to figure out what the structure of the sentence is (although in a natural + language you do this subconsciously). This process is called parsing. +

+

For example, when you hear the sentence, The other shoe fell, you understand + that the other shoe is the subject and fell is the verb. Once you have parsed + a sentence, you can figure out what it means, or the semantics of the sentence. + Assuming that you know what a shoe is and what it means to fall, you will + understand the general implication of this sentence.

+

Although formal and natural languages have many features in common — tokens, + structure, syntax, and semantics — there are many differences:

+ + + ambiguity +

Natural languages are full of ambiguity, which people deal with by + using contextual clues and other information. Formal languages are + designed to be nearly or completely unambiguous, which means that any + statement has exactly one meaning, regardless of context.

+
+ + redundancy +

In order to make up for ambiguity and reduce misunderstandings, natural + languages employ lots of redundancy. As a result, they are often + verbose. Formal languages are less redundant and more concise.

+
+ + literalness +

Formal languages mean exactly what they say. On the other hand, + natural languages are full of idiom and metaphor. If someone says, The + other shoe fell, there is probably no shoe and nothing falling.

+ +

You'll need to find the original joke to understand the idiomatic + meaning of the other shoe falling. Yahoo! Answers thinks it + knows!

+
+
+
+

People who grow up speaking a natural language—everyone—often have a hard + time adjusting to formal languages. In some ways, the difference between formal + and natural language is like the difference between poetry and prose, but more + so:

+ + + poetry +

Words are used for their sounds as well as for their meaning, and the + whole poem together creates an effect or emotional response. Ambiguity + is not only common but often deliberate.

+
+ + prose +

The literal meaning of words is more important, and the structure + contributes more meaning. Prose is more amenable to analysis than + poetry but still often ambiguous.

+
+ + program +

The meaning of a computer program is unambiguous and literal, and can + be understood entirely by analysis of the tokens and structure.

+
+
+

Here are some suggestions for reading programs (and other formal languages). + First, remember that formal languages are much more dense than natural + languages, so it takes longer to read them. Also, the structure is very + important, so it is usually not a good idea to read from top to bottom, left to + right. Instead, learn to parse the program in your head, identifying the tokens + and interpreting the structure. Finally, the details matter. Little things + like spelling errors and bad punctuation, which you can get away with in + natural languages, can make a big difference in a formal language.

+

+ Check your understanding +

+ + +

The differences between natural and formal languages include:

+
+ + + +

natural languages can be parsed while formal languages cannot.

+
+ + Actually both languages can be parsed (determining the structure of the sentence), but formal languages can be parsed more easily in software. + +
+ + +

ambiguity, redundancy, and literalness.

+
+ + All of these can be present in natural languages, but cannot exist in formal languages. + +
+ + +

there are no differences between natural and formal languages.

+
+ + There are several differences between the two but they are also similar. + +
+ + +

tokens, structure, syntax, and semantics.

+
+ + These are the similarities between the two. + +
+
+
+ + +

True or False: Reading a program is like reading other kinds of text.

+
+ + + +

True

+
+ + It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. + +
+ + +

False

+
+ + It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. + +
+
+
+
diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/ExtraTopics/SearchSortAlgorithms.ptx new file mode 100644 index 000000000..e14eef481 --- /dev/null +++ b/pretext/ExtraTopics/SearchSortAlgorithms.ptx @@ -0,0 +1,93 @@ + +
+ Search and Sort Algorithms + + +

If problem solving is a central part of computer science, then the solutions that you create through + the problem solving process are also important. In computer science, we refer to these solutions + as algorithms. An algorithm is a step by step list of instructions that if followed exactly will solve the problem under consideration.

+

Our goal in computer science is to take a problem and develop an algorithm that can serve as a general solution. Once we have such a solution, we can use our computer to automate the execution. As noted + above, programming is a skill that allows a computer scientist to take an algorithm and represent it in + a notation (a program) that can be followed by a computer. These programs are written in programming languages.

+

+ Check your understanding +

+ + +

What is the most important skill for a computer scientist?

+
+ + + +

To think like a computer.

+
+ + Computers do not think, they only do what we humans tell them to do via programs. + +
+ + +

To be able to write code really well.

+
+ + While it is necessary for most computer scientists to know how to write code, it is not the most important skill. + +
+ + +

To be able to solve problems.

+
+ + Computer scientists are all about solving problems. We use computers to automate solutions to problems and to do things faster and more accurately than we can do by hand or manually. + +
+ + +

To be really good at math.

+
+ + Computer science and math are similar in many ways and it helps to have a strong mathematical foundation, but you do not have to be good at math to be a good computer scientist. + +
+
+
+ + +

An algorithm is:

+
+ + + +

A solution to a problem that can be solved by a computer.

+
+ + While it is true that algorithms often do solve problems, this is not the best answer. An algorithm is more than just the solution to the problem for a computer. An algorithm can be used to solve all sorts of problems, including those that have nothing to do with computers. + +
+ + +

A step by step list of instructions that if followed exactly will solve the problem under consideration.

+
+ + Algorithms are like recipes: they must be followed exactly, they must be clear and unambiguous, and they must end. + +
+ + +

A series of instructions implemented in a programming language.

+
+ + Programming languages are used to express algorithms, but an algorithm does not have to be expressed in terms of a programming language. + +
+ + +

A special kind of notation used by computer scientists.

+
+ + Computer scientists sometimes use a special notation to illustrate or document an algorithm, but this is not the definition of an algorithm. + +
+
+
+
diff --git a/pretext/ExtraTopics/toctree.ptx b/pretext/ExtraTopics/toctree.ptx new file mode 100644 index 000000000..fcae28675 --- /dev/null +++ b/pretext/ExtraTopics/toctree.ptx @@ -0,0 +1,9 @@ + + +4Extra Topics +4 +4 +4 +4 +4 + diff --git a/pretext/thinkcspy.ptx b/pretext/thinkcspy.ptx index ffbb4e2c1..b9c1b6641 100644 --- a/pretext/thinkcspy.ptx +++ b/pretext/thinkcspy.ptx @@ -33,6 +33,8 @@ + + From 11145d2a29e9883e7af6f624ec81111759194832 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:22:50 -0700 Subject: [PATCH 02/22] Add initial Big O chapter --- pretext/ExtraTopics/BigO.ptx | 88 ++++++++-- pretext/ExtraTopics/BinaryRepresentations.ptx | 162 ----------------- pretext/ExtraTopics/None.ptx | 6 + pretext/ExtraTopics/Packages.ptx | 166 +----------------- pretext/ExtraTopics/SearchSortAlgorithms.ptx | 89 +--------- pretext/ExtraTopics/toctree.ptx | 1 + .../ExtraTopics/Figures/complexity.png | Bin 0 -> 299961 bytes 7 files changed, 82 insertions(+), 430 deletions(-) create mode 100644 pretext/ExtraTopics/None.ptx create mode 100644 pretext/Figures/ExtraTopics/Figures/complexity.png diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index 0fd900d2d..10a81e175 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -2,21 +2,75 @@
Big O Analysis - -

The goal of this book is to teach you to think like a computer scientist. This - way of thinking combines some of the best features of mathematics, engineering, - and natural science. Like mathematicians, computer scientists use formal - languages to denote ideas (specifically computations). Like engineers, they - design things, assembling components into systems and evaluating tradeoffs - among alternatives. Like scientists, they observe the behavior of complex - systems, form hypotheses, and test predictions.

-

The single most important skill for a computer scientist is problem - solving. Problem solving means the ability to formulate problems, think - creatively about solutions, and express a solution clearly and accurately. As - it turns out, the process of learning to program is an excellent opportunity to - practice problem solving skills. That's why this chapter is called, The Way of - the Program.

-

On one level, you will be learning to program, a useful skill by itself. On - another level, you will use programming as a means to an end. As we go along, - that end will become clearer.

+

It's hard (if not impossible) to measure the performance of algorithms on a computer. We won't get + deep into it, but this is due to things like variable hardware between computers and just general performance of software.

+ +

This is where Big O Analysis comes in. We can measure the performance of algorithms, or their complexity, + in a special mathematical notation.

+ +

This mathematical notation is denoted with a capital O (a big o!) followed by parenthesis, similar to a basic algebraic f(x), though + it is not a function. Inside of the O() is most commonly a 1 or a n raised to some mathematical factor.

+ +

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is.

+ +

From left to right, left being the quickest time and right being the slowest time, we typically see these complexities:

+

O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^3), O(2^n), O(n!).

+ +

Something like an O(nlogn) gain in complexity might seem marginal or redundant, but it makes a + difference at a large scale! Imagine your favorite big tech company and how they sift through billions of + users in a quick amount of time.

+ + Big O Complexity Graph + +

This figure shows complexities as a graph and which ones we do and don't like. Strive to never write something worse than O(n^3)!

+ +

Take the following code as an example:

+ + +print(1) + + +

This code runs in constant time, or O(1). Constant time operations are typically + things in code which do not loop.

+ +

Now, let's check out an example with a loop:

+ + +def example_func(n): + for i in range(n): + print(i) + + +

As you can see, this function simply prints 0 to n. We measure the complexity of example_func as O(n)

+ +

The n here is crucial; it's the upper bound of what our function iterates to. In this example, it will always iterate all the way, but + in an actual program, it may not, which leads to worst case, average case, and best case complexities.

+ +

In the last code example, O(n) was the complexity for all cases, because the loop always goes to n.

+ +

Worst case complexities are the worst possible performances of our code. + For instance, if you're searching through your contacts list for a name in top-to-bottom fashion, + in the worst case you'll check all n names, and hence your search algorithm's worst case + is O(n). (Hint: We just described linear search!)

+ +

Average case complexities are the average performances of our code. In our + contact list example, the average case is also O(n), because you will probably + have to search through an arbitrary n names to find, say, the 31st contact, out of 100.

+ +

Best case complexities describe what happens in the best case with our code. In the contact list + example, the best case is O(1); the contact you were looking for was the very first name in the list!

+ +

All of these lead nicely into a future chapter where we talk about search and sort algorithms, which are + closely related to Big O Analysis and are an important topic in computer science.

+ +

One more important topic in Big O Analysis is simplification. You will often be asked to do + this on assignments. We won't get too deep into the math, but the general rules are as follows:

+ +

Constant time operations always simplify to O(1). You can't have complexities like O(3) or O(1000000).

+ +

Added constants are ignored when a larger factor is around. For instance, O(n + 1) is just O(n).

+ + + +
diff --git a/pretext/ExtraTopics/BinaryRepresentations.ptx b/pretext/ExtraTopics/BinaryRepresentations.ptx index 7b7ceb46c..b018392e8 100644 --- a/pretext/ExtraTopics/BinaryRepresentations.ptx +++ b/pretext/ExtraTopics/BinaryRepresentations.ptx @@ -3,166 +3,4 @@ Binary Representations - -

- Natural languages are the languages that people speak, such as English, - Spanish, and French. They were not designed by people (although people try to - impose some order on them); they evolved naturally.

-

- Formal languages are languages that are designed by people for specific - applications. For example, the notation that mathematicians use is a formal - language that is particularly good at denoting relationships among numbers and - symbols. Chemists use a formal language to represent the chemical structure of - molecules. And most importantly:

-
Programming languages are formal languages that have been designed to
-    express computations.
-

Formal languages tend to have strict rules about syntax. For example, 3+3=6 - is a syntactically correct mathematical statement, but 3=+6$ is not. - H2O is a syntactically correct chemical name, but 2Zz is - not.

-

Syntax rules come in two flavors, pertaining to tokens and structure. - Tokens are the basic elements of the language, such as words, numbers, and - chemical elements. One of the problems with 3=+6$ is that $ is not a - legal token in mathematics (at least as far as we know). Similarly, - 2Zz is not legal because there is no element with the abbreviation - Zz. -

-

The second type of syntax rule pertains to the structure of a statement— - that is, the way the tokens are arranged. The statement 3=+6$ is - structurally illegal because you can't place a plus sign immediately after an - equal sign. Similarly, molecular formulas have to have subscripts after the - element name, not before.

-

When you read a sentence in English or a statement in a formal language, you - have to figure out what the structure of the sentence is (although in a natural - language you do this subconsciously). This process is called parsing. -

-

For example, when you hear the sentence, The other shoe fell, you understand - that the other shoe is the subject and fell is the verb. Once you have parsed - a sentence, you can figure out what it means, or the semantics of the sentence. - Assuming that you know what a shoe is and what it means to fall, you will - understand the general implication of this sentence.

-

Although formal and natural languages have many features in common — tokens, - structure, syntax, and semantics — there are many differences:

- - - ambiguity -

Natural languages are full of ambiguity, which people deal with by - using contextual clues and other information. Formal languages are - designed to be nearly or completely unambiguous, which means that any - statement has exactly one meaning, regardless of context.

-
- - redundancy -

In order to make up for ambiguity and reduce misunderstandings, natural - languages employ lots of redundancy. As a result, they are often - verbose. Formal languages are less redundant and more concise.

-
- - literalness -

Formal languages mean exactly what they say. On the other hand, - natural languages are full of idiom and metaphor. If someone says, The - other shoe fell, there is probably no shoe and nothing falling.

- -

You'll need to find the original joke to understand the idiomatic - meaning of the other shoe falling. Yahoo! Answers thinks it - knows!

-
-
-
-

People who grow up speaking a natural language—everyone—often have a hard - time adjusting to formal languages. In some ways, the difference between formal - and natural language is like the difference between poetry and prose, but more - so:

- - - poetry -

Words are used for their sounds as well as for their meaning, and the - whole poem together creates an effect or emotional response. Ambiguity - is not only common but often deliberate.

-
- - prose -

The literal meaning of words is more important, and the structure - contributes more meaning. Prose is more amenable to analysis than - poetry but still often ambiguous.

-
- - program -

The meaning of a computer program is unambiguous and literal, and can - be understood entirely by analysis of the tokens and structure.

-
-
-

Here are some suggestions for reading programs (and other formal languages). - First, remember that formal languages are much more dense than natural - languages, so it takes longer to read them. Also, the structure is very - important, so it is usually not a good idea to read from top to bottom, left to - right. Instead, learn to parse the program in your head, identifying the tokens - and interpreting the structure. Finally, the details matter. Little things - like spelling errors and bad punctuation, which you can get away with in - natural languages, can make a big difference in a formal language.

-

- Check your understanding -

- - -

The differences between natural and formal languages include:

-
- - - -

natural languages can be parsed while formal languages cannot.

-
- - Actually both languages can be parsed (determining the structure of the sentence), but formal languages can be parsed more easily in software. - -
- - -

ambiguity, redundancy, and literalness.

-
- - All of these can be present in natural languages, but cannot exist in formal languages. - -
- - -

there are no differences between natural and formal languages.

-
- - There are several differences between the two but they are also similar. - -
- - -

tokens, structure, syntax, and semantics.

-
- - These are the similarities between the two. - -
-
-
- - -

True or False: Reading a program is like reading other kinds of text.

-
- - - -

True

-
- - It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. - -
- - -

False

-
- - It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. - -
-
-
diff --git a/pretext/ExtraTopics/None.ptx b/pretext/ExtraTopics/None.ptx new file mode 100644 index 000000000..5cc33d65e --- /dev/null +++ b/pretext/ExtraTopics/None.ptx @@ -0,0 +1,6 @@ + +
+ None + + +
diff --git a/pretext/ExtraTopics/Packages.ptx b/pretext/ExtraTopics/Packages.ptx index 747d617d8..0e0e8d605 100644 --- a/pretext/ExtraTopics/Packages.ptx +++ b/pretext/ExtraTopics/Packages.ptx @@ -1,7 +1,9 @@
- Packages + Packages and Dependencies + +

Hi everyone, there's a bit of confusion going around with requirements.txt. This is simply a file in which you specify your project's dependencies, minus those which are already bundled into Python (e.g. csv). @@ -31,166 +33,4 @@

- -

- Natural languages are the languages that people speak, such as English, - Spanish, and French. They were not designed by people (although people try to - impose some order on them); they evolved naturally.

-

- Formal languages are languages that are designed by people for specific - applications. For example, the notation that mathematicians use is a formal - language that is particularly good at denoting relationships among numbers and - symbols. Chemists use a formal language to represent the chemical structure of - molecules. And most importantly:

-
Programming languages are formal languages that have been designed to
-    express computations.
-

Formal languages tend to have strict rules about syntax. For example, 3+3=6 - is a syntactically correct mathematical statement, but 3=+6$ is not. - H2O is a syntactically correct chemical name, but 2Zz is - not.

-

Syntax rules come in two flavors, pertaining to tokens and structure. - Tokens are the basic elements of the language, such as words, numbers, and - chemical elements. One of the problems with 3=+6$ is that $ is not a - legal token in mathematics (at least as far as we know). Similarly, - 2Zz is not legal because there is no element with the abbreviation - Zz. -

-

The second type of syntax rule pertains to the structure of a statement— - that is, the way the tokens are arranged. The statement 3=+6$ is - structurally illegal because you can't place a plus sign immediately after an - equal sign. Similarly, molecular formulas have to have subscripts after the - element name, not before.

-

When you read a sentence in English or a statement in a formal language, you - have to figure out what the structure of the sentence is (although in a natural - language you do this subconsciously). This process is called parsing. -

-

For example, when you hear the sentence, The other shoe fell, you understand - that the other shoe is the subject and fell is the verb. Once you have parsed - a sentence, you can figure out what it means, or the semantics of the sentence. - Assuming that you know what a shoe is and what it means to fall, you will - understand the general implication of this sentence.

-

Although formal and natural languages have many features in common — tokens, - structure, syntax, and semantics — there are many differences:

- - - ambiguity -

Natural languages are full of ambiguity, which people deal with by - using contextual clues and other information. Formal languages are - designed to be nearly or completely unambiguous, which means that any - statement has exactly one meaning, regardless of context.

-
- - redundancy -

In order to make up for ambiguity and reduce misunderstandings, natural - languages employ lots of redundancy. As a result, they are often - verbose. Formal languages are less redundant and more concise.

-
- - literalness -

Formal languages mean exactly what they say. On the other hand, - natural languages are full of idiom and metaphor. If someone says, The - other shoe fell, there is probably no shoe and nothing falling.

- -

You'll need to find the original joke to understand the idiomatic - meaning of the other shoe falling. Yahoo! Answers thinks it - knows!

-
-
-
-

People who grow up speaking a natural language—everyone—often have a hard - time adjusting to formal languages. In some ways, the difference between formal - and natural language is like the difference between poetry and prose, but more - so:

- - - poetry -

Words are used for their sounds as well as for their meaning, and the - whole poem together creates an effect or emotional response. Ambiguity - is not only common but often deliberate.

-
- - prose -

The literal meaning of words is more important, and the structure - contributes more meaning. Prose is more amenable to analysis than - poetry but still often ambiguous.

-
- - program -

The meaning of a computer program is unambiguous and literal, and can - be understood entirely by analysis of the tokens and structure.

-
-
-

Here are some suggestions for reading programs (and other formal languages). - First, remember that formal languages are much more dense than natural - languages, so it takes longer to read them. Also, the structure is very - important, so it is usually not a good idea to read from top to bottom, left to - right. Instead, learn to parse the program in your head, identifying the tokens - and interpreting the structure. Finally, the details matter. Little things - like spelling errors and bad punctuation, which you can get away with in - natural languages, can make a big difference in a formal language.

-

- Check your understanding -

- - -

The differences between natural and formal languages include:

-
- - - -

natural languages can be parsed while formal languages cannot.

-
- - Actually both languages can be parsed (determining the structure of the sentence), but formal languages can be parsed more easily in software. - -
- - -

ambiguity, redundancy, and literalness.

-
- - All of these can be present in natural languages, but cannot exist in formal languages. - -
- - -

there are no differences between natural and formal languages.

-
- - There are several differences between the two but they are also similar. - -
- - -

tokens, structure, syntax, and semantics.

-
- - These are the similarities between the two. - -
-
-
- - -

True or False: Reading a program is like reading other kinds of text.

-
- - - -

True

-
- - It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. - -
- - -

False

-
- - It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding. - -
-
-
diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/ExtraTopics/SearchSortAlgorithms.ptx index e14eef481..5909ff91a 100644 --- a/pretext/ExtraTopics/SearchSortAlgorithms.ptx +++ b/pretext/ExtraTopics/SearchSortAlgorithms.ptx @@ -2,92 +2,5 @@
Search and Sort Algorithms - -

If problem solving is a central part of computer science, then the solutions that you create through - the problem solving process are also important. In computer science, we refer to these solutions - as algorithms. An algorithm is a step by step list of instructions that if followed exactly will solve the problem under consideration.

-

Our goal in computer science is to take a problem and develop an algorithm that can serve as a general solution. Once we have such a solution, we can use our computer to automate the execution. As noted - above, programming is a skill that allows a computer scientist to take an algorithm and represent it in - a notation (a program) that can be followed by a computer. These programs are written in programming languages.

-

- Check your understanding -

- - -

What is the most important skill for a computer scientist?

-
- - - -

To think like a computer.

-
- - Computers do not think, they only do what we humans tell them to do via programs. - -
- - -

To be able to write code really well.

-
- - While it is necessary for most computer scientists to know how to write code, it is not the most important skill. - -
- - -

To be able to solve problems.

-
- - Computer scientists are all about solving problems. We use computers to automate solutions to problems and to do things faster and more accurately than we can do by hand or manually. - -
- - -

To be really good at math.

-
- - Computer science and math are similar in many ways and it helps to have a strong mathematical foundation, but you do not have to be good at math to be a good computer scientist. - -
-
-
- - -

An algorithm is:

-
- - - -

A solution to a problem that can be solved by a computer.

-
- - While it is true that algorithms often do solve problems, this is not the best answer. An algorithm is more than just the solution to the problem for a computer. An algorithm can be used to solve all sorts of problems, including those that have nothing to do with computers. - -
- - -

A step by step list of instructions that if followed exactly will solve the problem under consideration.

-
- - Algorithms are like recipes: they must be followed exactly, they must be clear and unambiguous, and they must end. - -
- - -

A series of instructions implemented in a programming language.

-
- - Programming languages are used to express algorithms, but an algorithm does not have to be expressed in terms of a programming language. - -
- - -

A special kind of notation used by computer scientists.

-
- - Computer scientists sometimes use a special notation to illustrate or document an algorithm, but this is not the definition of an algorithm. - -
-
-
+
diff --git a/pretext/ExtraTopics/toctree.ptx b/pretext/ExtraTopics/toctree.ptx index fcae28675..15cab35c6 100644 --- a/pretext/ExtraTopics/toctree.ptx +++ b/pretext/ExtraTopics/toctree.ptx @@ -1,6 +1,7 @@ 4Extra Topics +4 4 4 4 diff --git a/pretext/Figures/ExtraTopics/Figures/complexity.png b/pretext/Figures/ExtraTopics/Figures/complexity.png new file mode 100644 index 0000000000000000000000000000000000000000..5914ca96da43d0abd96484387bd3f88471e0466a GIT binary patch literal 299961 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 z%0A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

i_QK}z61>JvPMUtzPE*B7f?7Ol;E1qWzuA1 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 z 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 Date: Mon, 18 Dec 2023 10:41:49 -0700 Subject: [PATCH 03/22] Add packages chapter --- pretext/ExtraTopics/Packages.ptx | 49 ++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/pretext/ExtraTopics/Packages.ptx b/pretext/ExtraTopics/Packages.ptx index 0e0e8d605..673a8b1d6 100644 --- a/pretext/ExtraTopics/Packages.ptx +++ b/pretext/ExtraTopics/Packages.ptx @@ -2,35 +2,40 @@

Packages and Dependencies +

One key tenant of computer science (or anything, for that matter) is that we don't want to reinvent + the wheel if we don't have to. A lot of very smart people have made very useful code, so why not use it?

+

The is a website that maintains packages, or code that other people + have written for our use. You might also hear the term dependencies, which describes essentially the same thing: code + that our code depends on.

-

- Hi everyone, there's a bit of confusion going around with requirements.txt. This is simply a file in which you specify your project's dependencies, minus those which are already bundled into Python (e.g. csv). +

PyPI can be accessed with pip, which is the command that you will use when installing dependencies. Pip should come + preinstalled with most Python installations on Mac and Windows.

- You only need to provide this file if you're using external dependencies (numpy, scipy, sklearn, etc). The autograder has matplotlib bundled with it which is why you don't have to include it. +

Some common packages include: requests (for sending HTTP requests), boto3 (for dealing with AWS), flask (for making websites), and more.

- One easy way to generate this file is by running this command in the terminal (while navigated to the directory of your final project): - - pip freeze > requirements.txt - - Breakdown of what's happening (aside from generating the proper requirements.txt file): - pip is Python's dependency (aka "package") manager - freeze is just the command, no idea why it's called freeze. Educated guess: I think it's because it's "freezing" your dependencies at a moment in time (or in other words, at a specific version) and saving them to a file. - > is the Linux output redirection operator, which is going to take the result of pip freeze and redirect it to the file you provided, which is requirements.txt - - That's it! Your requirements.txt will be in a format like: - - numpy==1.26.2 - - - (CS majors: read on for why this isn't great) +

Some common packages for data science include numpy, matplotlib, scipy, pandas and more.

+ +

But this is all sounding like a lot to keep track of, right? How can we ensure consistency between + versions installed on different people's computers?

- So actually, this will freeze ALL of your requirements. I ran this on my computer and had like a 100 line file of tons of dependencies, and we want people to install only what they have to (we want to minimize overhead/space taken up). +

requirements.txt is a file we can specify for others to be able install the dependencies + (which is needed to run our code), since others may not have our dependencies installed.

- Probably the best way to do this is to pip show DEPENDENCY where DEPENDENCY is something like numpy, find the version, and type it into requirements.txt in the format listed above. There are also packages (ironically) that do this. +

The following code represents a requirements.txt file that specifies numpy as a dependency:

+ + +numpy==1.26.2 + + - You can also view all packages (and their versions) that people from around the world have created on PyPI. This even includes stuff TA Greg made custom for the autograder, and is also why we made you all install Anaconda (which, for the most part, automatically dealt with this)! -

+

Note that dependencies are not installed immediately. For someone to install the requirements which you specify, + they would run the command: pip install -r requirements.txt.

+

If you're unsure what version of a dependency you have installed, you can run the command: pip show DEPENDENCY, like pip show numpy. + Somewhat ironically, there are also packages that can autogenerate a requirements.txt file for you.

+ One additional tip worth mentioning is to always specify the bare minimum requirements your code needs to work. + Dependencies normally have dependencies of their own, so we want to minimize the install time and space taken up + when someone is installing your program's requirements.
From 0b32e17b9fedb37713b848ef86d2739ce5477516 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:47:05 -0700 Subject: [PATCH 04/22] More package changes --- pretext/ExtraTopics/Packages.ptx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pretext/ExtraTopics/Packages.ptx b/pretext/ExtraTopics/Packages.ptx index 673a8b1d6..9e1a707b0 100644 --- a/pretext/ExtraTopics/Packages.ptx +++ b/pretext/ExtraTopics/Packages.ptx @@ -12,7 +12,7 @@

PyPI can be accessed with pip, which is the command that you will use when installing dependencies. Pip should come preinstalled with most Python installations on Mac and Windows.

-

Some common packages include: requests (for sending HTTP requests), boto3 (for dealing with AWS), flask (for making websites), and more.

+

Some common packages include: pytest (for testing your code), python-dateutil (for working with dates), flask (for making websites), and more.

Some common packages for data science include numpy, matplotlib, scipy, pandas and more.

From f2e28a2e1fae3b22558851ddaa8a5103f333e09f Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Mon, 18 Dec 2023 11:19:22 -0700 Subject: [PATCH 05/22] Add chapter on None --- pretext/ExtraTopics/None.ptx | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/pretext/ExtraTopics/None.ptx b/pretext/ExtraTopics/None.ptx index 5cc33d65e..536dfe58c 100644 --- a/pretext/ExtraTopics/None.ptx +++ b/pretext/ExtraTopics/None.ptx @@ -2,5 +2,80 @@
None +

None, or the NoneType, is a type which represents the absence of a value. + But let's take a step back and think: why is this useful?

+

In Python, sometimes we don't want to return anything from a function. However, Python implicitly will return None + anyways, because nothing was returned. You could also explicitly return None from a function or return a value, + and then you would have to check if the function returned something or not.

+ +

Whether this is good practice or not is debatable, but for the purposes of this + class, you should understand when None appears and why.

+ +

Most commonly when students are learning about strings and lists, us educators see a similar issue, which links back + to sections on mutability. Strings are immutable and lists are mutable, remember?

+ +

When we want to modify a string, we must reassign it, because it's immutable:

+ + +my_string = 'Hello, world!' +new_string = my_string[0:5] +print(new_string) + + + +

Your natural instinct may be to write the same thing with lists:

+ + +my_list = [] +my_list = my_list.append(0) +print(my_list[0]) + + + +

By doing so, you will incur this error:

+ + +print(my_list[0]) +~~~~~~~^^^ +TypeError: 'NoneType' object is not subscriptable + + + +

Frustratingly, your code actually did exactly what you told it to. List functions modify the list directly, because + lists are mutable. Therefore, their functions (such as .append(element)) don't return anything.

+ +

But now we know why: append is actually implicitly returning None. This means that in the previous example, we reassigned my_list + to None, and then we tried to list access element 0 of None, which caused the 'not subscriptable' error, because None isn't a list + and can't have list access done to it.

+ +

The solution is simple: don't reassign the list when calling list functions.

+ + +my_list = [] +my_list.append(0) +print(my_list[0]) + + + +

If you remember nothing else, remember: strings get reassigned, lists don't. This is because + strings are immutable; lists are mutable and their functions don't return anything (they implicitly return None!).

+ +

You won't be tested on the information below, but read on for some interesting thoughts on this.

+ +

If you've been around any other programming languages, you may have heard of equivalent ideas like + null, NULL, nullptr, nil, and more. This is such a universal concept + in programming and is hugely frustrating to many programmers as it often represents something that went wrong.

+ +

Fun (or depressing) fact -- the inventor of null actually regrets his invention:

+ +
+ I call it my billion-dollar mistake... At that time, I was designing the first comprehensive type system for references in an object-oriented language. My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years. +
+ +
+ - Tony Hoare +
+ +

Despite this, None, null, and nil don't seem to be going anywhere anytime soon. :)

From 2ec1dae6e290b84015d2f7fb333b9662f851d110 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Mon, 18 Dec 2023 12:52:29 -0700 Subject: [PATCH 06/22] Add basic search/sort algo chapter --- pretext/ExtraTopics/SearchSortAlgorithms.ptx | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/ExtraTopics/SearchSortAlgorithms.ptx index 5909ff91a..57327589d 100644 --- a/pretext/ExtraTopics/SearchSortAlgorithms.ptx +++ b/pretext/ExtraTopics/SearchSortAlgorithms.ptx @@ -2,5 +2,46 @@
Search and Sort Algorithms +

In computer science, we like algorithms! There are two types of algorithms + that are spoken about very often: search and sort. Not only are they great + for learning about Big O and algorithms, but they're very applicable in the real world.

+ +

As the internet grows and the data we store grows, companies have to wrestle with it, imagine if you're + [insert any big tech company here] and you're looking for one user out of one billion. + Now imagine you need to do that a thousand times a minute, with people doing it at the same time. + The code you write and the algorithms you use become massively important to how quickly + these operations can be done.

+ +

Linear search is the most basic searching algorithm, and the most natural. + Quite simply, you look through whatever you're looking through in a linear order; from first to last. + This could be a stack of papers, or it could be a list in Python.

+ + + +# a program which finds 10 in my list, linearly +my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +for element in my_list: + if element == 10: + print('found 10!') + break + + + +

Linear search has a best case complexity of O(1), average case of O(n), and worst case of O(n).

+ +

Binary search is an improvement upon linear search. Binary search splits the searched list in half, + and if the number we're searching for is less than that number, we know it must be in the left half of the list; + if it's greater, we know it must be in the right half of the list, and we can repeat this process until we find the number.

+ +

Binary search has a best case complexity of O(1), average case of O(logn), and worst case of O(logn).

+ +

However, there's a catch: for binary search to work, the list must be sorted! This is where more sorting algorithms come in.

+ +

Selection sort is a simple sorting algorithm. The idea is that we take the smallest element and swap it with the leftmost element, + and then the leftmost element becomes the sorted list. We repeat this process, and the sorted start of the list grows in size each time, so we're only + swapping from the nonsorted elements at the end of the list.

+

The time complexity of selection sort is O(n^2) in every case.

+ +

Some other common sorting algorithms include Bubble Sort and Insertion Sort, but we won't talk about those.

From 73be2069de8d217d43096b1af0c2fc757b7299d8 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Mon, 18 Dec 2023 13:27:56 -0700 Subject: [PATCH 07/22] Add binary representation chapter --- pretext/ExtraTopics/BinaryRepresentations.ptx | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/pretext/ExtraTopics/BinaryRepresentations.ptx b/pretext/ExtraTopics/BinaryRepresentations.ptx index b018392e8..17fa49096 100644 --- a/pretext/ExtraTopics/BinaryRepresentations.ptx +++ b/pretext/ExtraTopics/BinaryRepresentations.ptx @@ -2,5 +2,51 @@
Binary Representations +

Have you ever seen all of the "hacker" 01010110101010s in the movies? As you probably + know, this is called binary. But it's not really how modern day hacking works. However, + it is the basis of all of computing, and although you won't be typing 0s and 1s at a + keyboard all day, it's useful to know.

+

Quick background: binary is a numbering system, just like decimal (the numbering system we use). + Decimal uses the digits 0-9, but binary only uses the digits 0 and 1, which are called bits.

+ +

Binary deals with powers of two (hence the name), reading from right to left and starting at 0. + If the bit is 0, it is "off" or ignored (or multiplied by 0); if the bit is 1, it is "on" and its + position in the number is the exponent with 2 as the base. Binary numbering is also called base 2 + because of that. For instance:

+ +

1000 (base 2) = (1 * 2^3) + (0 * 2^2) + (0 * 2^1) + (0 * 2^0) = 8

+ +

Believe it or not, this is indirectly how you've been counting your entire life. For instance, in decimal numbering (base 10):

+ +

1023 (base 10) = (1 * 10^3) + (0 * 10^2) + (2 * 10^1) + (3 * 10^0)

+ +

There are even more numbering systems, like octal, but you only need to understand binary for this course.

+ +

Converting decimal to binary: A quick way to convert decimal to binary is to find the largest + factor of 2 that will go into the number, and concatenate 1 if it goes into the number; concatenate 0 if not. Subtract + the number from the running total and repeat until we hit 0. For instance:

+ +

Example: Convert 78 to binary

+

1. If we think about all of our powers of 2, 2^7 = 128 is too large (128 > 78), so we know 2^6 is where we'll start our number, and we need a 1 in that position. We now have: 1xxxxxx.

+

2. 78 - 64 = 14, which is our remainder from the last digit. 2^5 = 32 > 14, so we know 2^5 is a 0. We now have: 10xxxxx.

+

3. 78 - 64 = 14, which is our remainder from the last digit. 2^4 = 16 > 14, so we know 2^4 is a 0. We now have: 100xxxx.

+

4. 78 - 64 = 14, which is our remainder from the last digit. 2^3 = 8 < 14, so we know 2^3 is a 1 because it fits in! We now have: 1001xxx.

+

5. 78 - 64 - 8 = 6, which is our remainder from the last digit. 2^2 = 4 < 6, so we know 2^2 is a 1 because it fits in! We now have: 10011xx.

+

6. 78 - 64 - 8 - 4 = 2, which is our remainder from the last digit. 2^1 = 2 < 4, so we know 2^1 is a 1 because it fits in! We now have: 100111x.

+

7. 78 - 64 - 8 - 4 - 2 = 0, so we are done and can fill any remainders with a 0 bit.

+

Our final answer is: 1001110 (base 2)

+ + + Typically when we write binary, we'll see our bits in groups of 4, because our binary sequences are normally + some multiple of 4, like 8, 16, or 32. Because of this, we would add a leading zero and + write our previous answer as: 0100 1110 (base 2). + + +

Converting binary to decimal: As mentioned above, you can simply look at each bit, + and add 2 to the power of its position if the bit is 1.

+ +

Like usual in math, there are a few different ways to arrive at one conclusion. These are not + the only ways to do conversions. If these explanations don't make sense to you, ask your instructor + or Google for their explanation.

From 2b8cb32f816c7762949c3d4172fd36f774965fde Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Mon, 18 Dec 2023 18:48:28 -0700 Subject: [PATCH 08/22] Add more big O section --- pretext/ExtraTopics/BigO.ptx | 11 -- pretext/ExtraTopics/More-BigO.ptx | 160 ++++++++++++++++++++++++++++++ pretext/ExtraTopics/toctree.ptx | 1 + 3 files changed, 161 insertions(+), 11 deletions(-) create mode 100644 pretext/ExtraTopics/More-BigO.ptx diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index 10a81e175..8e5006282 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -62,15 +62,4 @@ def example_func(n):

All of these lead nicely into a future chapter where we talk about search and sort algorithms, which are closely related to Big O Analysis and are an important topic in computer science.

- -

One more important topic in Big O Analysis is simplification. You will often be asked to do - this on assignments. We won't get too deep into the math, but the general rules are as follows:

- -

Constant time operations always simplify to O(1). You can't have complexities like O(3) or O(1000000).

- -

Added constants are ignored when a larger factor is around. For instance, O(n + 1) is just O(n).

- - - - diff --git a/pretext/ExtraTopics/More-BigO.ptx b/pretext/ExtraTopics/More-BigO.ptx new file mode 100644 index 000000000..4bcb20cea --- /dev/null +++ b/pretext/ExtraTopics/More-BigO.ptx @@ -0,0 +1,160 @@ + +
+ Big O Simplification and Practice + +

One more important topic in Big O Analysis is simplification. You will often be asked to do + this on assignments. We won't get too deep into the math, but here are a few general rules:

+ +

Constant time operations always simplify to O(1). You can't have complexities like O(3) or O(1000000).

+ +

Added constants are ignored when a larger factor is around. For instance, O(n + 1) is just O(n).

+ +

Multiplication by a constant factor simplifies to the factor, such as O(3n) becoming O(n).

+ +

With nested loops, any inner loop factors are multiplied by the outer loop factor.

+ + + +

Example 1: Find the time complexity of this program. Be careful of the nested loop.

+ + + def example_func(n): + for i in range(n): + for j in range(n): + print(i * j) + + +
+ + + +

O(1)

+
+ + Incorrect; we have two nested loops here. + +
+ + +

O(logn)

+
+ + Not quite. You typically see O(logn) more often in search/sort algorithms. + +
+ + +

O(n)

+
+ + Incorrect; both loops (one of which is nested) depend on n. + +
+ + +

O(n^2)

+
+ + Correct! Both loops depend on n, and one loop is nested, which multiplies it by the parent factor. + +
+
+
+ + + +

Example 2: Find the time complexity of this program.

+ + +def example_func(n): + for i in range(n): + for j in range(10000): + print(j) + + +
+ + + +

O(1)

+
+ + Not quite; we one loop going to n and one loop going to a constant time. + +
+ + +

O(logn)

+
+ + Not quite. You typically see O(logn) more often in search/sort algorithms. + +
+ + +

O(n)

+
+ + Correct! O(10000n) simplifies to O(n). + +
+ + +

O(n^2)

+
+ + Incorrect. We only have one loop going to n, the inner loop is going to a constant. + +
+
+
+ + + +

Example 3: Find the time complexity of this program. Apply the same rules that you do for a for loop.

+ + +n = input() +i = 0 +while i < n: + print(i) + i += 1 + + +
+ + + +

O(1)

+
+ + Not quite, since n is an arbitrary user inputted value. + +
+ + +

O(logn)

+
+ + Not quite. You typically see O(logn) more often in search/sort algorithms. + +
+ + +

O(n)

+
+ + Correct! We're going to n in this loop. + +
+ + +

O(n^2)

+
+ + Incorrect. We only have one loop going to n. + +
+
+
+
diff --git a/pretext/ExtraTopics/toctree.ptx b/pretext/ExtraTopics/toctree.ptx index 15cab35c6..3d3152757 100644 --- a/pretext/ExtraTopics/toctree.ptx +++ b/pretext/ExtraTopics/toctree.ptx @@ -5,6 +5,7 @@ 4 4 4 +4 4 4

Ktl0*`L8RK`Qh1S=W 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

From 4c9ca8e661762ebf7edd5039a6affb653c49cea8 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Tue, 26 Dec 2023 20:38:54 -0700 Subject: [PATCH 09/22] Big O improvements --- pretext/ExtraTopics/BigO.ptx | 49 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index 8e5006282..a33a67c1c 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -2,32 +2,40 @@
Big O Analysis -

It's hard (if not impossible) to measure the performance of algorithms on a computer. We won't get - deep into it, but this is due to things like variable hardware between computers and just general performance of software.

+

It's impossible to experimentally measure the theoretical performance of algorithms on a computer as the size of our data (which we call n, to some factor) goes to infinity, + or gets really big. We won't get deep into it, but this is due to things like variable hardware between computers and just general performance of software.

-

This is where Big O Analysis comes in. We can measure the performance of algorithms, or their complexity, +

This is where Big O Analysis comes in. We can measure the theoretical performance of algorithms, or their complexity, in a special mathematical notation.

-

This mathematical notation is denoted with a capital O (a big o!) followed by parenthesis, similar to a basic algebraic f(x), though - it is not a function. Inside of the O() is most commonly a 1 or a n raised to some mathematical factor.

+

This mathematical notation is denoted with a capital O (a big o!) followed by parentheses. + Inside of the O() is most commonly a 1 or a n raised to some mathematical factor.

-

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is.

- -

From left to right, left being the quickest time and right being the slowest time, we typically see these complexities:

+

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is. + From left to right, left being the quickest time and right being the slowest time, we typically see these complexities:

O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^3), O(2^n), O(n!).

Something like an O(nlogn) gain in complexity might seem marginal or redundant, but it makes a - difference at a large scale! Imagine your favorite big tech company and how they sift through billions of - users in a quick amount of time.

+ difference at a large scale! Imagine how Google is able sift through billions of + users in a quick amount of time; whatever algorithm they pick will need to be as quick as possible.

- Big O Complexity Graph +

Worst case complexities are the worst possible performances of our code. + For instance, if you're searching through your contacts list for a name in top-to-bottom fashion, + in the worst case you'll check all n names, and hence your search algorithm's worst case + is O(n). (Hint: We just described linear search!)

+ +

Average case complexities are the average performances of our code. In our + contact list example, the average case is also O(n), because you will probably + have to search through an arbitrary n names to find, say, the 31st contact, out of 100.

-

This figure shows complexities as a graph and which ones we do and don't like. Strive to never write something worse than O(n^3)!

+

Best case complexities describe what happens in the best case with our code. In the contact list + example, the best case is O(1); the contact you were looking for was the very first name in the list!

Take the following code as an example:

-print(1) +sum = 1 + 1 +print(sum)

This code runs in constant time, or O(1). Constant time operations are typically @@ -41,24 +49,17 @@ def example_func(n): print(i) -

As you can see, this function simply prints 0 to n. We measure the complexity of example_func as O(n)

+

As you can see, this function simply prints 0 to n. We measure the complexity of example_func as O(n), + because whether n = 100 or n = 10000000, as the complexity trends to infinity, it remains O(n).

The n here is crucial; it's the upper bound of what our function iterates to. In this example, it will always iterate all the way, but in an actual program, it may not, which leads to worst case, average case, and best case complexities.

In the last code example, O(n) was the complexity for all cases, because the loop always goes to n.

-

Worst case complexities are the worst possible performances of our code. - For instance, if you're searching through your contacts list for a name in top-to-bottom fashion, - in the worst case you'll check all n names, and hence your search algorithm's worst case - is O(n). (Hint: We just described linear search!)

- -

Average case complexities are the average performances of our code. In our - contact list example, the average case is also O(n), because you will probably - have to search through an arbitrary n names to find, say, the 31st contact, out of 100.

+ Big O Complexity Graph -

Best case complexities describe what happens in the best case with our code. In the contact list - example, the best case is O(1); the contact you were looking for was the very first name in the list!

+

This figure shows complexities as a graph and which ones we do and don't like. Strive to never write something worse than O(n^3)!

All of these lead nicely into a future chapter where we talk about search and sort algorithms, which are closely related to Big O Analysis and are an important topic in computer science.

From 00b6b9559ab2f077129de165de697eab7384debf Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Tue, 26 Dec 2023 21:04:44 -0700 Subject: [PATCH 10/22] Miscellaneous changes throughout the new topics --- pretext/ExtraTopics/BigO.ptx | 12 +- pretext/ExtraTopics/BinaryRepresentations.ptx | 28 ++-- pretext/ExtraTopics/Glossary.ptx | 145 ------------------ pretext/ExtraTopics/None.ptx | 8 +- pretext/ExtraTopics/SearchSortAlgorithms.ptx | 10 +- 5 files changed, 36 insertions(+), 167 deletions(-) diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index a33a67c1c..1c15726f4 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -13,12 +13,19 @@

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is. From left to right, left being the quickest time and right being the slowest time, we typically see these complexities:

+

O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^3), O(2^n), O(n!).

+

Big O is like a limit: only the most significant terms matter as n approaches infinity. We will soon + explain how to simplify down to these common complexities.

+

Something like an O(nlogn) gain in complexity might seem marginal or redundant, but it makes a difference at a large scale! Imagine how Google is able sift through billions of users in a quick amount of time; whatever algorithm they pick will need to be as quick as possible.

+

These algorithms will perform differently in a lot of cases, so we can also + assign "grades" or certain levels to our complexities.

+

Worst case complexities are the worst possible performances of our code. For instance, if you're searching through your contacts list for a name in top-to-bottom fashion, in the worst case you'll check all n names, and hence your search algorithm's worst case @@ -31,6 +38,8 @@

Best case complexities describe what happens in the best case with our code. In the contact list example, the best case is O(1); the contact you were looking for was the very first name in the list!

+

Unless other cases are explicitly mentioned, we will talk about Big O in the worst case when designing and analyzing programs.

+

Take the following code as an example:

@@ -53,7 +62,8 @@ def example_func(n): because whether n = 100 or n = 10000000, as the complexity trends to infinity, it remains O(n).

The n here is crucial; it's the upper bound of what our function iterates to. In this example, it will always iterate all the way, but - in an actual program, it may not, which leads to worst case, average case, and best case complexities.

+ in an actual program with branching (conditional if/elif/else statements), it may not, which leads to the aforementioned worst case, + average case, and best case complexities.

In the last code example, O(n) was the complexity for all cases, because the loop always goes to n.

diff --git a/pretext/ExtraTopics/BinaryRepresentations.ptx b/pretext/ExtraTopics/BinaryRepresentations.ptx index 17fa49096..b18c7e12e 100644 --- a/pretext/ExtraTopics/BinaryRepresentations.ptx +++ b/pretext/ExtraTopics/BinaryRepresentations.ptx @@ -2,27 +2,29 @@
Binary Representations -

Have you ever seen all of the "hacker" 01010110101010s in the movies? As you probably - know, this is called binary. But it's not really how modern day hacking works. However, - it is the basis of all of computing, and although you won't be typing 0s and 1s at a - keyboard all day, it's useful to know.

+

Have you ever seen all of the "hacker" 01010110101010s in the movies? As you might + know, this is called binary. But it's not actually how hacking works. However, binary + is the base of all of computing. Every word that you are reading right now was + transmitted to your computer as a series of 1's and 0's. Although you won't + be typing 0's and 1's at a keyboard all day, binary is still useful to know.

-

Quick background: binary is a numbering system, just like decimal (the numbering system we use). - Decimal uses the digits 0-9, but binary only uses the digits 0 and 1, which are called bits.

+

Quick background: binary is a numbering system, just like decimal (the numbering system we normally use). + Decimal uses the digits 0-9, but binary only uses the digits 0 and 1, which are called bits. + In other words, binary is just a different way of counting.

+

Believe it or not, this is indirectly how you've been counting your entire life. For instance, in decimal numbering (base 10):

+ +

1023 (base 10) = (1 * 10^3) + (0 * 10^2) + (2 * 10^1) + (3 * 10^0)

+ +

There are even more numbering systems, like hexadecimal and octal, but you only need to understand binary for this course.

+

Binary deals with powers of two (hence the name), reading from right to left and starting at 0. - If the bit is 0, it is "off" or ignored (or multiplied by 0); if the bit is 1, it is "on" and its + If the bit is 0, it is "off" and the position is multiplied by 0; if the bit is 1, it is "on" and its position in the number is the exponent with 2 as the base. Binary numbering is also called base 2 because of that. For instance:

1000 (base 2) = (1 * 2^3) + (0 * 2^2) + (0 * 2^1) + (0 * 2^0) = 8

-

Believe it or not, this is indirectly how you've been counting your entire life. For instance, in decimal numbering (base 10):

- -

1023 (base 10) = (1 * 10^3) + (0 * 10^2) + (2 * 10^1) + (3 * 10^0)

- -

There are even more numbering systems, like octal, but you only need to understand binary for this course.

-

Converting decimal to binary: A quick way to convert decimal to binary is to find the largest factor of 2 that will go into the number, and concatenate 1 if it goes into the number; concatenate 0 if not. Subtract the number from the running total and repeat until we hit 0. For instance:

diff --git a/pretext/ExtraTopics/Glossary.ptx b/pretext/ExtraTopics/Glossary.ptx index 3bfab9e89..a31a29645 100644 --- a/pretext/ExtraTopics/Glossary.ptx +++ b/pretext/ExtraTopics/Glossary.ptx @@ -2,155 +2,10 @@
Glossary - - activecode

A unique interpreter environment that allows Python to be executed from within a web browser.

- - algorithm -

A general step by step process for solving a problem.

-
- - bug -

An error in a program.

-
- - byte code -

An intermediate language between source code and object code. Many - modern languages first compile source code into byte code and then - interpret the byte code with a program called a virtual machine.

-
- - codelens -

An interactive environment that allows the user to control the step by step execution of a Python program

-
- - comment -

Information in a program that is meant for other programmers (or anyone - reading the source code) and has no effect on the execution of the - program.

-
- - compile -

To translate a program written in a high-level language into a - low-level language all at once, in preparation for later execution.

-
- - debugging -

The process of finding and removing any of the three kinds of - programming errors.

-
- - exception -

Another name for a runtime error.

-
- - executable -

Another name for object code that is ready to be executed.

-
- - formal language -

Any one of the languages that people have designed for specific - purposes, such as representing mathematical ideas or computer programs; - all programming languages are formal languages.

-
- - high-level language -

A programming language like Python that is designed to be easy for - humans to read and write.

-
- - interpret -

To execute a program in a high-level language by translating it one - line at a time.

-
- - low-level language -

A programming language that is designed to be easy for a computer to - execute; also called machine language or assembly language.

-
- - natural language -

Any one of the languages that people speak that evolved naturally.

-
- - object code -

The output of the compiler after it translates the program.

-
- - parse -

To examine a program and analyze the syntactic structure.

-
- - portability -

A property of a program that can run on more than one kind of computer.

-
- - print function -

A function used in a program or script that causes the Python - interpreter to display a value on its output device.

-
- - problem solving -

The process of formulating a problem, finding a solution, and - expressing the solution.

-
- - program -

A sequence of instructions that specifies to a computer actions and - computations to be performed.

-
- - programming language -

A formal notation for representing solutions.

-
- - Python shell -

An interactive user interface to the Python interpreter. The user of a - Python shell types commands at the prompt (>>>), and presses the return - key to send these commands immediately to the interpreter for - processing.

-
- - runtime error -

An error that does not occur until the program has started to execute - but that prevents the program from continuing.

-
- - semantic error -

An error in a program that makes it do something other than what the - programmer intended.

-
- - semantics -

The meaning of a program.

-
- - shell mode -

A style of using Python where we type expressions at the command - prompt, and the results are shown immediately. Contrast with - source code, and see the entry under Python shell.

-
- - source code -

A program, stored in a file, in a high-level language before being compiled or interpreted.

-
- - syntax -

The structure of a program.

-
- - syntax error -

An error in a program that makes it impossible to parse — and - therefore impossible to interpret.

-
- - token -

One of the basic elements of the syntactic structure of a program, - analogous to a word in a natural language.

-
diff --git a/pretext/ExtraTopics/None.ptx b/pretext/ExtraTopics/None.ptx index 536dfe58c..5480f9fb4 100644 --- a/pretext/ExtraTopics/None.ptx +++ b/pretext/ExtraTopics/None.ptx @@ -5,12 +5,12 @@

None, or the NoneType, is a type which represents the absence of a value. But let's take a step back and think: why is this useful?

-

In Python, sometimes we don't want to return anything from a function. However, Python implicitly will return None - anyways, because nothing was returned. You could also explicitly return None from a function or return a value, +

In Python, sometimes we don't want to return anything from a function. However, when we don't + explicitly return anything from a function, Python will implicitly return None. + You could also explicitly return None from a function or return a value, and then you would have to check if the function returned something or not.

-

Whether this is good practice or not is debatable, but for the purposes of this - class, you should understand when None appears and why.

+

For the purposes of this class, you should just understand when None appears and why.

Most commonly when students are learning about strings and lists, us educators see a similar issue, which links back to sections on mutability. Strings are immutable and lists are mutable, remember?

diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/ExtraTopics/SearchSortAlgorithms.ptx index 57327589d..146dafbbd 100644 --- a/pretext/ExtraTopics/SearchSortAlgorithms.ptx +++ b/pretext/ExtraTopics/SearchSortAlgorithms.ptx @@ -6,8 +6,8 @@ that are spoken about very often: search and sort. Not only are they great for learning about Big O and algorithms, but they're very applicable in the real world.

-

As the internet grows and the data we store grows, companies have to wrestle with it, imagine if you're - [insert any big tech company here] and you're looking for one user out of one billion. +

As the internet grows and the data we store grows, companies have to wrestle with the large amounts of data + they have. Imagine if you're Google and you're looking for one user out of one billion. Now imagine you need to do that a thousand times a minute, with people doing it at the same time. The code you write and the algorithms you use become massively important to how quickly these operations can be done.

@@ -27,7 +27,9 @@ for element in my_list: -

Linear search has a best case complexity of O(1), average case of O(n), and worst case of O(n).

+

Linear search has a best case complexity of O(1), average case of O(n), and worst case of O(n). + Remember from the Big O section: in the best case, the element we're looking for is the first element. But in the + average and worst cases, we will have to look through some n elements.

Binary search is an improvement upon linear search. Binary search splits the searched list in half, and if the number we're searching for is less than that number, we know it must be in the left half of the list; @@ -41,7 +43,7 @@ for element in my_list: and then the leftmost element becomes the sorted list. We repeat this process, and the sorted start of the list grows in size each time, so we're only swapping from the nonsorted elements at the end of the list.

-

The time complexity of selection sort is O(n^2) in every case.

+

The time complexity of selection sort is O(n^2) in every case.

Some other common sorting algorithms include Bubble Sort and Insertion Sort, but we won't talk about those.

From b20b787dacb72e98aee8003e3aac5b0e205d42b1 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Tue, 26 Dec 2023 21:29:05 -0700 Subject: [PATCH 11/22] Add initial pseudocode and data science sections --- pretext/ExtraTopics/DataScience.ptx | 6 +++ pretext/ExtraTopics/Pseudocode.ptx | 58 +++++++++++++++++++++++++++++ pretext/ExtraTopics/toctree.ptx | 2 + 3 files changed, 66 insertions(+) create mode 100644 pretext/ExtraTopics/DataScience.ptx create mode 100644 pretext/ExtraTopics/Pseudocode.ptx diff --git a/pretext/ExtraTopics/DataScience.ptx b/pretext/ExtraTopics/DataScience.ptx new file mode 100644 index 000000000..cdfd2f546 --- /dev/null +++ b/pretext/ExtraTopics/DataScience.ptx @@ -0,0 +1,6 @@ + +
+ Data Science + + +
diff --git a/pretext/ExtraTopics/Pseudocode.ptx b/pretext/ExtraTopics/Pseudocode.ptx new file mode 100644 index 000000000..29a9dfc01 --- /dev/null +++ b/pretext/ExtraTopics/Pseudocode.ptx @@ -0,0 +1,58 @@ + +
+ Pseudocode + +

Pseudocode is a mix of English and code (in our case, Python) where + programmers can plan out their programs.

+ +

Writing pseudocode can help if you're wanting to plan before you write + a program, take on a large or confusing programming task, or just as a way to + document your code with comments to make it more readable for yourself and others.

+ +

There isn't necessarily a right or wrong pseudocode (except wrong would be if you just wrote the program!). + Your pseudocode and language will probably look different from this, but should be along the same lines.

+ +

Take the following prompt for a problem:

+ +
+ Write a program that +
+ +

We can approach this problem first by writing the following pseudocode:

+ + + + + + +

This won't be something you see often, but let's reverse engineer and see what + existing Python code might look like in pseudocode.

+ + + +character = input() +if character == "Yoda": + print("No! Try not. Do. Or do not. There is no try.") +elif character == "Han Solo": + print("Never tell me the odds!") +elif character == "Obi Wan Kenobi": + print("Use the Force, Luke.") +else: + print("Character not found!") + + + +

We could write the following pseudocode for this program:

+ + +take user input for a Star Wars character +if the character is Yoda, print "No! Try not. Do. Or do not. There is no try." +if the character is Han Solo, print "Never tell me the odds!" +if the character is Obi Wan Kenobi, "Use the Force, Luke." +in all other cases, print that the character wasn't found + + + +

As you may start to notice, Python is so close to the English language that pseudocode can often + be quickly translated into code.

+
diff --git a/pretext/ExtraTopics/toctree.ptx b/pretext/ExtraTopics/toctree.ptx index 3d3152757..af0f376c9 100644 --- a/pretext/ExtraTopics/toctree.ptx +++ b/pretext/ExtraTopics/toctree.ptx @@ -7,5 +7,7 @@ 4 4 4 +4 +4 4 From eb9c2b65d3e21bef858b40cb0d94337ce7fb2af1 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Wed, 27 Dec 2023 08:54:30 -0700 Subject: [PATCH 12/22] Apply Mete's feedback --- pretext/ExtraTopics/BigO.ptx | 11 ++++++----- pretext/ExtraTopics/More-BigO.ptx | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index 1c15726f4..ff20aeff8 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -3,7 +3,7 @@ Big O Analysis

It's impossible to experimentally measure the theoretical performance of algorithms on a computer as the size of our data (which we call n, to some factor) goes to infinity, - or gets really big. We won't get deep into it, but this is due to things like variable hardware between computers and just general performance of software.

+ or otherwise gets really big. We won't get deep into it, but this is due to things like variable hardware between computers and just general performance of software.

This is where Big O Analysis comes in. We can measure the theoretical performance of algorithms, or their complexity, in a special mathematical notation.

@@ -11,13 +11,13 @@

This mathematical notation is denoted with a capital O (a big o!) followed by parentheses. Inside of the O() is most commonly a 1 or a n raised to some mathematical factor.

-

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is. +

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is relative to an input size n. From left to right, left being the quickest time and right being the slowest time, we typically see these complexities:

O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^3), O(2^n), O(n!).

-

Big O is like a limit: only the most significant terms matter as n approaches infinity. We will soon - explain how to simplify down to these common complexities.

+

Big O is like a limit: only the most significant terms matter as n approaches infinity. In the next + section, we will explain how to simplify down to these common complexities.

Something like an O(nlogn) gain in complexity might seem marginal or redundant, but it makes a difference at a large scale! Imagine how Google is able sift through billions of @@ -33,7 +33,8 @@

Average case complexities are the average performances of our code. In our contact list example, the average case is also O(n), because you will probably - have to search through an arbitrary n names to find, say, the 31st contact, out of 100.

+ have to search through an arbitrary n names to find, say, the 31st contact, out of 100. + On average we expect this to be around n/2 times, but as n increases, n/2 will also increase with the same speed so we simplify it with O(n).

Best case complexities describe what happens in the best case with our code. In the contact list example, the best case is O(1); the contact you were looking for was the very first name in the list!

diff --git a/pretext/ExtraTopics/More-BigO.ptx b/pretext/ExtraTopics/More-BigO.ptx index 4bcb20cea..afd1e039f 100644 --- a/pretext/ExtraTopics/More-BigO.ptx +++ b/pretext/ExtraTopics/More-BigO.ptx @@ -10,6 +10,8 @@

Added constants are ignored when a larger factor is around. For instance, O(n + 1) is just O(n).

Multiplication by a constant factor simplifies to the factor, such as O(3n) becoming O(n).

+ +

Added polynomials are ignored when a larger factor is around. For instance, O(n! + n) is just O(n!), or O(n^2 + n) is just O(n^2).

With nested loops, any inner loop factors are multiplied by the outer loop factor.

From 1791c091655f6b28ec02be06cd943d35808088a3 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Wed, 27 Dec 2023 09:16:16 -0700 Subject: [PATCH 13/22] Finish pseudocode chapter --- pretext/ExtraTopics/Pseudocode.ptx | 41 ++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/pretext/ExtraTopics/Pseudocode.ptx b/pretext/ExtraTopics/Pseudocode.ptx index 29a9dfc01..4aadfee43 100644 --- a/pretext/ExtraTopics/Pseudocode.ptx +++ b/pretext/ExtraTopics/Pseudocode.ptx @@ -5,7 +5,7 @@

Pseudocode is a mix of English and code (in our case, Python) where programmers can plan out their programs.

-

Writing pseudocode can help if you're wanting to plan before you write +

Writing pseudocode can help if you're wanting to plan before you write a program, take on a large or confusing programming task, or just as a way to document your code with comments to make it more readable for yourself and others.

@@ -15,16 +15,51 @@

Take the following prompt for a problem:

- Write a program that + Write a program that takes in a fraction in the format NUMERATOR/DENOMINATOR + from the user and divides them and finds their remainder. Print out both results. + If the denominator is 0, print out an error message; if the denominator is anything else, + let the user run the program normally.

We can approach this problem first by writing the following pseudocode:

+take user input for fraction +split the user input by "/" +make a variable for numerator, type convert to int +make a variable for denominator, type convert to int +if the denominator is 0, + print an error message +otherwise + make a variable for the numerator divided by denominator + make a variable for the numerator mod denominator + print out both variables + + + +

As you can see, this is basically just a high level outline of your program. It may help you + better see the control flow of your program, or even remind you to do the small things, like + converting your string input to an integer if necessary.

+

This pseudocode can then be quickly converted to Python:

+ + + +fraction = input().split('/') +numerator = int(fraction[0]) +denominator = int(fraction[1]) +if denominator == 0: + print("Error, your denominator is 0!") +else: + result = numerator / denominator + remainder = numerator % denominator + print("Division:", result) + print("Remainder:", remainder) +

..and we're done! That's the pseudocode process.

+

This won't be something you see often, but let's reverse engineer and see what existing Python code might look like in pseudocode.

@@ -55,4 +90,6 @@ in all other cases, print that the character wasn't found

As you may start to notice, Python is so close to the English language that pseudocode can often be quickly translated into code.

+ +

Feel free to use pseudocode on exams if it helps you plan, and in your actual programs.

From fd33a2d7d66de5421f1c66333dbc2271187d1f2a Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Thu, 28 Dec 2023 08:48:49 -0700 Subject: [PATCH 14/22] Add big O table --- pretext/ExtraTopics/BigO.ptx | 111 ++++++++++++++++++++++++++++++- pretext/ExtraTopics/Glossary.ptx | 4 +- 2 files changed, 112 insertions(+), 3 deletions(-) diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index ff20aeff8..5cd9dab05 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -72,6 +72,115 @@ def example_func(n):

This figure shows complexities as a graph and which ones we do and don't like. Strive to never write something worse than O(n^3)!

-

All of these lead nicely into a future chapter where we talk about search and sort algorithms, which are +

So what do these factors actually mean? Let's say we have an algorithm with the following complexities, but they all run with the same time (1 milliseconds) for n = 10. This table shows what will happen if we increase the n:

+ + + + + + n + + + O(log(n)) + + + O(n) + + + O(n^3) + + + O(2^n) + + + + + 10 + + + 1 ms + + + 1 ms + + + 1 ms + + + 1 ms + + + + + 11 + + + 1 ms + + + 1.1 ms + + + ~1.3 ms + + + 2 ms + + + + + 20 + + + 1.3 ms + + + 2 ms + + + 8 ms + + + 1 s + + + + + 100 + + + 2 ms + + + 10 ms + + + 1 s + + + 10^16 years + + + + + 100000 + + + 5 ms + + + 10 s + + + 31 years + + + :) + + + +
+ +

This all leads nicely into a future chapter where we talk about search and sort algorithms, which are closely related to Big O Analysis and are an important topic in computer science.

diff --git a/pretext/ExtraTopics/Glossary.ptx b/pretext/ExtraTopics/Glossary.ptx index a31a29645..4542e708a 100644 --- a/pretext/ExtraTopics/Glossary.ptx +++ b/pretext/ExtraTopics/Glossary.ptx @@ -4,8 +4,8 @@ - activecode -

A unique interpreter environment that allows Python to be executed from within a web browser.

+ term +

definition

From 61fab4d197303badb03585388380db9ce242e0d3 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Thu, 28 Dec 2023 10:18:55 -0700 Subject: [PATCH 15/22] Add brief data science chapter --- pretext/ExtraTopics/DataScience.ptx | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/pretext/ExtraTopics/DataScience.ptx b/pretext/ExtraTopics/DataScience.ptx index cdfd2f546..11e11c317 100644 --- a/pretext/ExtraTopics/DataScience.ptx +++ b/pretext/ExtraTopics/DataScience.ptx @@ -2,5 +2,31 @@
Data Science - +

As the world moves more and more towards storing and analyzing large amounts of data, + data science is a vital skill for you to know, whether you're a computer science major or not.

+ +

The data science process consists of three steps:

+ +
    +
  1. Obtain the data
  2. +
  3. Clean the data
  4. +
  5. Explore the data
  6. + +
+ +

The step that always takes the longest is cleaning the data! Data can come in all sorts of different + formats now, with anomalies, with blanks, and so much more. Careful steps should be taken to clean the + data and prepare it for the next steps.

+ +

Obtaining the data: There are many, many sites online now which have a plethora of + data available for free (or paid) use. Your data will likely come in a .csv, .json, or SQL database format.

+ +

Cleaning the data: This can vary, but ultimately, you need to prepare your data + and "wrangle" it into a format that is easily usable in the next steps. In this step, you may + also fix certain things, change missing data, or fill in wrong data.

+ +

Exploring the data: We can do some analysis now! You may do some sort of statistical + analysis or regression model, or you may simply graph values and look for relationships and trends visually.

+ +
From add5e8444a3b80cefd83d56426e1905f36321430 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Thu, 28 Dec 2023 10:45:32 -0700 Subject: [PATCH 16/22] Apply Greg's feedback --- pretext/ExtraTopics/BigO.ptx | 8 ++++---- pretext/ExtraTopics/More-BigO.ptx | 2 +- pretext/ExtraTopics/Pseudocode.ptx | 6 +++--- pretext/ExtraTopics/SearchSortAlgorithms.ptx | 5 +++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index 5cd9dab05..adf28daba 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -2,8 +2,8 @@
Big O Analysis -

It's impossible to experimentally measure the theoretical performance of algorithms on a computer as the size of our data (which we call n, to some factor) goes to infinity, - or otherwise gets really big. We won't get deep into it, but this is due to things like variable hardware between computers and just general performance of software.

+

It's impossible to experimentally measure the theoretical performance of algorithms on a computer as the size of our data (which we call n) goes to infinity, + or otherwise gets really big. We won't get too far into it, but suffice to say, it's impossible due to variations in computer hardware and software.

This is where Big O Analysis comes in. We can measure the theoretical performance of algorithms, or their complexity, in a special mathematical notation.

@@ -16,8 +16,8 @@

O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^3), O(2^n), O(n!).

-

Big O is like a limit: only the most significant terms matter as n approaches infinity. In the next - section, we will explain how to simplify down to these common complexities.

+

Big O is like a limit in that only the most significant terms matter as n approaches infinity. + We will explain Big O simplifications in the next section.

Something like an O(nlogn) gain in complexity might seem marginal or redundant, but it makes a difference at a large scale! Imagine how Google is able sift through billions of diff --git a/pretext/ExtraTopics/More-BigO.ptx b/pretext/ExtraTopics/More-BigO.ptx index afd1e039f..c35172db2 100644 --- a/pretext/ExtraTopics/More-BigO.ptx +++ b/pretext/ExtraTopics/More-BigO.ptx @@ -5,7 +5,7 @@

One more important topic in Big O Analysis is simplification. You will often be asked to do this on assignments. We won't get too deep into the math, but here are a few general rules:

-

Constant time operations always simplify to O(1). You can't have complexities like O(3) or O(1000000).

+

Constant time operations always simplify to O(1). For instance, O(3) and O(1000000) both simplify to O(1).

Added constants are ignored when a larger factor is around. For instance, O(n + 1) is just O(n).

diff --git a/pretext/ExtraTopics/Pseudocode.ptx b/pretext/ExtraTopics/Pseudocode.ptx index 4aadfee43..72cff0df3 100644 --- a/pretext/ExtraTopics/Pseudocode.ptx +++ b/pretext/ExtraTopics/Pseudocode.ptx @@ -2,10 +2,10 @@
Pseudocode -

Pseudocode is a mix of English and code (in our case, Python) where - programmers can plan out their programs.

+

Pseudocode is a mix of English and code (in our case, Python) that + programmers use to plan out their programs.

-

Writing pseudocode can help if you're wanting to plan before you write +

Writing pseudocode can help if you want to plan before you write a program, take on a large or confusing programming task, or just as a way to document your code with comments to make it more readable for yourself and others.

diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/ExtraTopics/SearchSortAlgorithms.ptx index 146dafbbd..fb81e4e10 100644 --- a/pretext/ExtraTopics/SearchSortAlgorithms.ptx +++ b/pretext/ExtraTopics/SearchSortAlgorithms.ptx @@ -2,7 +2,7 @@
Search and Sort Algorithms -

In computer science, we like algorithms! There are two types of algorithms +

A major part of computer science is studying algorithms. There are two types of algorithms that are spoken about very often: search and sort. Not only are they great for learning about Big O and algorithms, but they're very applicable in the real world.

@@ -45,5 +45,6 @@ for element in my_list:

The time complexity of selection sort is O(n^2) in every case.

-

Some other common sorting algorithms include Bubble Sort and Insertion Sort, but we won't talk about those.

+

Some other common sorting algorithms include Bubble Sort and Insertion Sort, but those are out of the + scope of this class.

From 90bd393663164a450e3405455b20d0210963e800 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Thu, 28 Dec 2023 10:54:52 -0700 Subject: [PATCH 17/22] add fourth data science step back --- pretext/ExtraTopics/DataScience.ptx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pretext/ExtraTopics/DataScience.ptx b/pretext/ExtraTopics/DataScience.ptx index 11e11c317..d8664eab8 100644 --- a/pretext/ExtraTopics/DataScience.ptx +++ b/pretext/ExtraTopics/DataScience.ptx @@ -5,13 +5,13 @@

As the world moves more and more towards storing and analyzing large amounts of data, data science is a vital skill for you to know, whether you're a computer science major or not.

-

The data science process consists of three steps:

+

The data science process consists of four steps:

  1. Obtain the data
  2. Clean the data
  3. Explore the data
  4. - +
  5. Predict unknowns

The step that always takes the longest is cleaning the data! Data can come in all sorts of different @@ -28,5 +28,6 @@

Exploring the data: We can do some analysis now! You may do some sort of statistical analysis or regression model, or you may simply graph values and look for relationships and trends visually.

- +

Predicting unknowns: You may want to predict unknowns using machine learning, regression models, + or algorithms such as K-means clustering.

From 0d47253d475ef581d769e5554b204c44e6b58649 Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Sat, 30 Dec 2023 13:31:57 -0700 Subject: [PATCH 18/22] Apply Rob's feedback --- pretext/ExtraTopics/BinaryRepresentations.ptx | 5 ++--- pretext/ExtraTopics/DataScience.ptx | 3 +++ pretext/ExtraTopics/More-BigO.ptx | 3 +-- pretext/ExtraTopics/None.ptx | 5 +++++ pretext/ExtraTopics/Packages.ptx | 2 ++ pretext/ExtraTopics/Pseudocode.ptx | 16 ++++++++++------ 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/pretext/ExtraTopics/BinaryRepresentations.ptx b/pretext/ExtraTopics/BinaryRepresentations.ptx index b18c7e12e..c17467216 100644 --- a/pretext/ExtraTopics/BinaryRepresentations.ptx +++ b/pretext/ExtraTopics/BinaryRepresentations.ptx @@ -3,9 +3,8 @@ Binary Representations

Have you ever seen all of the "hacker" 01010110101010s in the movies? As you might - know, this is called binary. But it's not actually how hacking works. However, binary - is the base of all of computing. Every word that you are reading right now was - transmitted to your computer as a series of 1's and 0's. Although you won't + know, this is called binary. While it's not actually how hacking works, binary is still the base of all computing. + Every word that you are reading right now was transmitted to your computer as a series of 1's and 0's. Although you won't be typing 0's and 1's at a keyboard all day, binary is still useful to know.

Quick background: binary is a numbering system, just like decimal (the numbering system we normally use). diff --git a/pretext/ExtraTopics/DataScience.ptx b/pretext/ExtraTopics/DataScience.ptx index d8664eab8..73e6afe6b 100644 --- a/pretext/ExtraTopics/DataScience.ptx +++ b/pretext/ExtraTopics/DataScience.ptx @@ -2,6 +2,9 @@

Data Science +

Data science is a multidisciplinary field which combines computer science, + math, and other domains to answer questions using data.

+

As the world moves more and more towards storing and analyzing large amounts of data, data science is a vital skill for you to know, whether you're a computer science major or not.

diff --git a/pretext/ExtraTopics/More-BigO.ptx b/pretext/ExtraTopics/More-BigO.ptx index c35172db2..e8b108fb7 100644 --- a/pretext/ExtraTopics/More-BigO.ptx +++ b/pretext/ExtraTopics/More-BigO.ptx @@ -2,8 +2,7 @@
Big O Simplification and Practice -

One more important topic in Big O Analysis is simplification. You will often be asked to do - this on assignments. We won't get too deep into the math, but here are a few general rules:

+

One more important topic in Big O Analysis is simplification. We won't get too deep into the math, but here are a few general rules:

Constant time operations always simplify to O(1). For instance, O(3) and O(1000000) both simplify to O(1).

diff --git a/pretext/ExtraTopics/None.ptx b/pretext/ExtraTopics/None.ptx index 5480f9fb4..6a331270e 100644 --- a/pretext/ExtraTopics/None.ptx +++ b/pretext/ExtraTopics/None.ptx @@ -61,6 +61,11 @@ print(my_list[0])

If you remember nothing else, remember: strings get reassigned, lists don't. This is because strings are immutable; lists are mutable and their functions don't return anything (they implicitly return None!).

+ You may be wondering how to tell the difference between functions that return something or not. Sometimes + the name of the method can be a hint (e.g. if it has "set" in the name, it probably won't return, whereas "get" will). + If that doesn't help or you're still curious, you should reference the documentation (whether it's official Python + documentation or for a library). No shame in looking it up! +

You won't be tested on the information below, but read on for some interesting thoughts on this.

If you've been around any other programming languages, you may have heard of equivalent ideas like diff --git a/pretext/ExtraTopics/Packages.ptx b/pretext/ExtraTopics/Packages.ptx index 9e1a707b0..b6a38282e 100644 --- a/pretext/ExtraTopics/Packages.ptx +++ b/pretext/ExtraTopics/Packages.ptx @@ -1,6 +1,8 @@

Packages and Dependencies + + You won't ever need to deal with dependencies in this course unless you are adding modules to your final project.

One key tenant of computer science (or anything, for that matter) is that we don't want to reinvent the wheel if we don't have to. A lot of very smart people have made very useful code, so why not use it?

diff --git a/pretext/ExtraTopics/Pseudocode.ptx b/pretext/ExtraTopics/Pseudocode.ptx index 72cff0df3..e8daf6466 100644 --- a/pretext/ExtraTopics/Pseudocode.ptx +++ b/pretext/ExtraTopics/Pseudocode.ptx @@ -5,9 +5,13 @@

Pseudocode is a mix of English and code (in our case, Python) that programmers use to plan out their programs.

-

Writing pseudocode can help if you want to plan before you write - a program, take on a large or confusing programming task, or just as a way to - document your code with comments to make it more readable for yourself and others.

+

Writing pseudocode can be helpful for reasons such as:

+
    +
  • It's quicker to write than actual code!
  • +
  • It's readable to more people than actual code, and can still be critiqued like regular code.
  • +
  • It can help you to take on a large or confusing programming task.
  • +
  • It can help you to document your code with comments for yourself and others' readability.
  • +

There isn't necessarily a right or wrong pseudocode (except wrong would be if you just wrote the program!). Your pseudocode and language will probably look different from this, but should be along the same lines.

@@ -16,7 +20,7 @@
Write a program that takes in a fraction in the format NUMERATOR/DENOMINATOR - from the user and divides them and finds their remainder. Print out both results. + from the user and outputs the quotient and the remainder. If the denominator is 0, print out an error message; if the denominator is anything else, let the user run the program normally.
@@ -83,7 +87,7 @@ else: take user input for a Star Wars character if the character is Yoda, print "No! Try not. Do. Or do not. There is no try." if the character is Han Solo, print "Never tell me the odds!" -if the character is Obi Wan Kenobi, "Use the Force, Luke." +if the character is Obi Wan Kenobi, print "Use the Force, Luke." in all other cases, print that the character wasn't found @@ -91,5 +95,5 @@ in all other cases, print that the character wasn't found

As you may start to notice, Python is so close to the English language that pseudocode can often be quickly translated into code.

-

Feel free to use pseudocode on exams if it helps you plan, and in your actual programs.

+

Feel free to use pseudocode on exams (for planning before writing code) and in your actual programs.

From b6a53ffc7848a398636e33a6dc71d3b3cb96c4b7 Mon Sep 17 00:00:00 2001 From: robotuw Date: Thu, 4 Jan 2024 16:18:44 -0700 Subject: [PATCH 19/22] Update BigO.ptx Big overhaul of the Big O chapter to make it (I think) more approachable and in line with how I plan to cover it this term. --- pretext/ExtraTopics/BigO.ptx | 100 ++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 42 deletions(-) diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/ExtraTopics/BigO.ptx index adf28daba..86bb0b8d5 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/ExtraTopics/BigO.ptx @@ -2,54 +2,66 @@
Big O Analysis -

It's impossible to experimentally measure the theoretical performance of algorithms on a computer as the size of our data (which we call n) goes to infinity, - or otherwise gets really big. We won't get too far into it, but suffice to say, it's impossible due to variations in computer hardware and software.

- -

This is where Big O Analysis comes in. We can measure the theoretical performance of algorithms, or their complexity, - in a special mathematical notation.

+

A common question that comes up when programming is: "How long will my program take to run?". Even if a program provides the correct output, if it takes + too long to finish then it is unacceptable. There is a problem here though, it's impossible to reliably say exactly how long a program will take to run. + It depends on too many things. The capabilities of the computer running the code, what else is running on the computer, and the size of the input are just + some of the things that would need to be considered. +

+ +

To simplify this issue, we'll give up trying to estimate exactly how long a program will run, and instead look at the biggest factor that affect + existing code: the size of the input. If we wrote a program that ran for 60 seconds on 100 megabytes of input data, how should we expect the program to + react to 200 megabytes of input data? Maybe it would run in 120 seconds (twice the data for twice the run time)? Maybe it would still run in 60 seconds, + assuming that extra data isn't used. Or maybe the program would run for far longer. The issue is that we don't know what the relationship is between the size + of the input data and the behavior of the program.

+ +

This is where Big O Analysis comes in. Big O is a notation computer scientists use to describe the relationship between the size + of the input data and the behavior of the program. These terms are written like a mathematical function using the variable n. n as a variable represents the + size of the input data provided to the program. The Big O function tells us how n affects the time the program will take to complete.

+ +

Consider the example we had before. We have a program that takes 60 seconds to run on 100 megabytes of input data, we'd like to know (roughly) + how long the program might take to run on 200 megabytes of input data. If we know the run time of the program is the function f(n) = n^2, with n being + the size of the data, now we have enough information to make a guess. If n is doubled, then the time the program runs for will quadruple! (2*n)^2 = 4 * n^2.

-

This mathematical notation is denoted with a capital O (a big o!) followed by parentheses. - Inside of the O() is most commonly a 1 or a n raised to some mathematical factor.

+

The formal mathematical notation for Big O is denoted with a capital O (a big o!) followed by parentheses. + Inside of the O() is most commonly some term of n. In our previous example, we would say the program has O(n^2) behavior.

-

These factors have magnitude, which helps us to quantify how quick or slow an algorithm is relative to an input size n. +

Different functions of n have different magnitudes, which helps us to quantify how quick or slow an algorithm is relative to the input size n. From left to right, left being the quickest time and right being the slowest time, we typically see these complexities:

O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^3), O(2^n), O(n!).

-

Big O is like a limit in that only the most significant terms matter as n approaches infinity. - We will explain Big O simplifications in the next section.

- -

Something like an O(nlogn) gain in complexity might seem marginal or redundant, but it makes a - difference at a large scale! Imagine how Google is able sift through billions of - users in a quick amount of time; whatever algorithm they pick will need to be as quick as possible.

+

Big O is like a limit in that only the most significant terms matter as n gets bigger and bigger. We typically expect n to be very, VERY large because + small inputs aren't as strongly affected by time limits. If a program takes 0.001 seconds to run with most normal data, is it really a big deal if it takes 0.004 + seconds on occasion? What if we were dealing with a program that had to run for a month though? Now that factor of four starts to hurt a lot more.

-

These algorithms will perform differently in a lot of cases, so we can also - assign "grades" or certain levels to our complexities.

- -

Worst case complexities are the worst possible performances of our code. - For instance, if you're searching through your contacts list for a name in top-to-bottom fashion, - in the worst case you'll check all n names, and hence your search algorithm's worst case - is O(n). (Hint: We just described linear search!)

+

There is another important aspect that we have ignored up to this point: programs can often have wildly different behavior depending on their input. + Consider a contrived example:

+ + +var = input() +if 'a' in var: + while True: + print("run forever!") +else: + print("done") + + -

Average case complexities are the average performances of our code. In our - contact list example, the average case is also O(n), because you will probably - have to search through an arbitrary n names to find, say, the 31st contact, out of 100. - On average we expect this to be around n/2 times, but as n increases, n/2 will also increase with the same speed so we simplify it with O(n).

- -

Best case complexities describe what happens in the best case with our code. In the contact list - example, the best case is O(1); the contact you were looking for was the very first name in the list!

+

In this program, the size of the input doesn't matter as much as whether the input string contains a letter "a" or not. If it does, the program runs forever. + If it doesn't, the program ends almost immediately. How do we reconcile this with our Big O notation? The answer is to be a pessimist. We adopt the assumption that + everything that can happen to slow down our program will happen. In the code above, we assume that the input ALWAYS will contain an "a". This assumption is broadly + known as the "worst case". Big O notation uses this assumption in every instance you will see it (at least in this class). -

Unless other cases are explicitly mentioned, we will talk about Big O in the worst case when designing and analyzing programs.

- -

Take the following code as an example:

+

Let's look at some more examples:

sum = 1 + 1 print(sum) -

This code runs in constant time, or O(1). Constant time operations are typically - things in code which do not loop.

+

This code has a Big O of O(1), also referred to as constant time. This is because the program does nothing with its input. In fact, it doesn't + even take input! Constant time operations are typically things in code which do not loop. A constant time program suggests it will always finish in a + consistent amount of time, no matter what happens.

Now, let's check out an example with a loop:

@@ -59,20 +71,19 @@ def example_func(n): print(i) -

As you can see, this function simply prints 0 to n. We measure the complexity of example_func as O(n), +

As you can see, this function simply prints 0 to n. Each print takes a little time, so a larger n means a longer program run time. + We denote the complexity of example_func as O(n), because whether n = 100 or n = 10000000, as the complexity trends to infinity, it remains O(n).

-

The n here is crucial; it's the upper bound of what our function iterates to. In this example, it will always iterate all the way, but - in an actual program with branching (conditional if/elif/else statements), it may not, which leads to the aforementioned worst case, - average case, and best case complexities.

-

In the last code example, O(n) was the complexity for all cases, because the loop always goes to n.

Big O Complexity Graph -

This figure shows complexities as a graph and which ones we do and don't like. Strive to never write something worse than O(n^3)!

+

This figure shows complexities as a graph and which ones are considered "desirable" or at least "acceptable". Context mostly determines if these are "good" terms or not, + but do strive to never write something worse than O(n^3)!

-

So what do these factors actually mean? Let's say we have an algorithm with the following complexities, but they all run with the same time (1 milliseconds) for n = 10. This table shows what will happen if we increase the n:

+

It may be difficult to appreciate the implications of these terms when first seeing them. Let's say we have an algorithm with the following complexities, but they + all run with the same time (1 milliseconds) for n = 10. This table shows what will happen if we increase the size of the input:

@@ -181,6 +192,11 @@ def example_func(n):
-

This all leads nicely into a future chapter where we talk about search and sort algorithms, which are - closely related to Big O Analysis and are an important topic in computer science.

+

As you can see, what started off as a negligible difference exploded into a totally unacceptable time for larger input sizes applied to larger Big O terms. Examples like these are precisely why + computer scientists are so fixated on Big O. 100000 data points is not a lot of data. Large tech companies are often running code on billions or + trillions of data points, and anything less the most efficient code won't be able to run at-scale.

+ +

We will end this section with a disclaimer. We have only covered the bare basic concepts of Big O here today. If you continue to study computer science, + you'll have more opportunities to explore it in much more detail, including seeing the formal definition of Big O as well as learning how to determine the Big O of your own code. + For this specific class, we only ask you to be familiar with the notation of Big O and have a basic intuition behind what it communicates.

From d7bc390b8268847e87a67f4893dcf4d5b94e1643 Mon Sep 17 00:00:00 2001 From: robotuw Date: Fri, 5 Jan 2024 11:23:00 -0700 Subject: [PATCH 20/22] Update DataScience.ptx Expanded the section on Data Science. --- pretext/ExtraTopics/DataScience.ptx | 53 +++++++++++++++++++---------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/pretext/ExtraTopics/DataScience.ptx b/pretext/ExtraTopics/DataScience.ptx index 73e6afe6b..99569ff9f 100644 --- a/pretext/ExtraTopics/DataScience.ptx +++ b/pretext/ExtraTopics/DataScience.ptx @@ -6,31 +6,48 @@ math, and other domains to answer questions using data.

As the world moves more and more towards storing and analyzing large amounts of data, - data science is a vital skill for you to know, whether you're a computer science major or not.

+ data science is a vital skill for you to be familiar with, whether you're a computer science major or not. It is also + a very common and useful application of programming, which is why we're discussing it in this class.

-

The data science process consists of four steps:

+

Data science is perhaps best defined by describing what data science looks like. The data science process consists of four steps:

    -
  1. Obtain the data
  2. -
  3. Clean the data
  4. -
  5. Explore the data
  6. -
  7. Predict unknowns
  8. +
  9. Obtaining data
  10. +
  11. Cleaning the data
  12. +
  13. Exploring the data
  14. +
  15. Predicting unknowns
-

The step that always takes the longest is cleaning the data! Data can come in all sorts of different - formats now, with anomalies, with blanks, and so much more. Careful steps should be taken to clean the - data and prepare it for the next steps.

+

Obtaining the data: We live in a time where data is more abundant then ever before. Getting a hold of data can involve gathering it yourself, + purchasing it, or taking advantage of the many, many sites online now which have a plethora of data + available for free (and sometimes paid) use. if you are getting your data from some 3rd party, it will likely come in a .csv, .json, or SQL database format.

-

Obtaining the data: There are many, many sites online now which have a plethora of - data available for free (or paid) use. Your data will likely come in a .csv, .json, or SQL database format.

+

Cleaning the data: This can vary, but ultimately you need to prepare your data + in a way that makes it easily usable in the next steps. Often data starts out "noisy" or contains errors. In this step you may + fix things in the data, change missing data, or correct wrong data.

-

Cleaning the data: This can vary, but ultimately, you need to prepare your data - and "wrangle" it into a format that is easily usable in the next steps. In this step, you may - also fix certain things, change missing data, or fill in wrong data.

+

Cleaning is regularly considered the longest step in this process! Data can come in all sorts of different + formats now, with anomalies, with blanks, and so much more. It often depends on context and you own goals + what "fixing" data even means.

-

Exploring the data: We can do some analysis now! You may do some sort of statistical - analysis or regression model, or you may simply graph values and look for relationships and trends visually.

+

Exploring the data: Now that the data is prepared, we can do some analysis on it! As the term suggests, exploring the data is about coming to better + understand it. You often don't know what is interesting or useful about data when you first encounter it. You may need to do some sort of statistical + analysis to uncover the interesting aspects, or you may want to graph values and look for relationships and trends visually.

-

Predicting unknowns: You may want to predict unknowns using machine learning, regression models, - or algorithms such as K-means clustering.

+

Predicting unknowns: Having come to understand the data better, you can now use it to create new knowledge. These days, this step typically involves + using machine learning models. These techniques can generally be split into three groups:

+ +
    +
  1. Supervised Learning: With supervised learning, we try to construct a model that describes the relationship between inputs and outputs (regularly + referred to as "labels"). Knowing what labels we want in advance is what makes a method "supervised". For example, we could create a model to guess when an email + is spam or not based on its contents; the label here is "spam" or "not spam". Or we could try to guess what the stock price will be for our favorite company based + on how it has performed in the last few weeks. The label here would be the predicted stock price.
  2. +
  3. Unsupervised Learning: Contrasting with supervised learning, with unsupervised learning we don't know the labels in advance. An example here could be + using social media data to automatically identify friend groups. We don't know in advance how many groups we'll find or what their nature will be. Because of this, it + can be harder to guess what kind of results unsupervised learning will produce.
  4. +
  5. Semi-Supervised Learning: Semi-supervised learning is an attempt to capture the best aspects of both supervised and unsupervised learning. With these + approaches we start with some data that has labels and also some data that doesn't. To use a previous example, we could take a collection of emails, only some of + which have been labeled as spam or not, and still try to construct a reliable method for identifying new emails as spam. If it goes well, then we've saved ourselves + a lot of time that would have otherwise been spent labeling emails.
  6. +
From 9de47e8eb09f4b9e1a5fa98f30c93698070cc6ed Mon Sep 17 00:00:00 2001 From: robotuw Date: Fri, 5 Jan 2024 11:46:39 -0700 Subject: [PATCH 21/22] Section Shuffle Redistributed extra topics sections into relevant chapters or additional topics. --- pretext/AdditionalTopics/toctree.ptx | 7 ++++++- pretext/ExtraTopics/SearchSortAlgorithms.ptx | 16 ++++++++-------- pretext/ExtraTopics/toctree.ptx | 8 -------- pretext/{ExtraTopics => Lists}/None.ptx | 0 pretext/Lists/toctree.ptx | 1 + .../{ExtraTopics => PythonModules}/Packages.ptx | 3 ++- pretext/PythonModules/toctree.ptx | 1 + .../{ExtraTopics => Selection}/Pseudocode.ptx | 7 +++++-- pretext/Selection/toctree.ptx | 1 + pretext/thinkcspy.ptx | 2 +- 10 files changed, 25 insertions(+), 21 deletions(-) rename pretext/{ExtraTopics => Lists}/None.ptx (100%) rename pretext/{ExtraTopics => PythonModules}/Packages.ptx (91%) rename pretext/{ExtraTopics => Selection}/Pseudocode.ptx (87%) diff --git a/pretext/AdditionalTopics/toctree.ptx b/pretext/AdditionalTopics/toctree.ptx index 512f7bfd5..665f794d3 100644 --- a/pretext/AdditionalTopics/toctree.ptx +++ b/pretext/AdditionalTopics/toctree.ptx @@ -1,11 +1,16 @@ 4Additional Topics -4 +4 +4 +4 +4 +4 4 4 4 4 +4 4 4 4 diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/ExtraTopics/SearchSortAlgorithms.ptx index fb81e4e10..5f8dbfb4d 100644 --- a/pretext/ExtraTopics/SearchSortAlgorithms.ptx +++ b/pretext/ExtraTopics/SearchSortAlgorithms.ptx @@ -12,8 +12,8 @@ The code you write and the algorithms you use become massively important to how quickly these operations can be done.

-

Linear search is the most basic searching algorithm, and the most natural. - Quite simply, you look through whatever you're looking through in a linear order; from first to last. +

Linear search is the most basic searching algorithm, and the most intuitive. + Quite simply, you look through whatever you're considering in a linear order; from first to last. This could be a stack of papers, or it could be a list in Python.

@@ -33,18 +33,18 @@ for element in my_list:

Binary search is an improvement upon linear search. Binary search splits the searched list in half, and if the number we're searching for is less than that number, we know it must be in the left half of the list; - if it's greater, we know it must be in the right half of the list, and we can repeat this process until we find the number.

+ if it's greater, we know it must be in the right half of the list, and we can repeat this process on smaller portions of the list until we find the number.

Binary search has a best case complexity of O(1), average case of O(logn), and worst case of O(logn).

-

However, there's a catch: for binary search to work, the list must be sorted! This is where more sorting algorithms come in.

+

However, there's a catch: for binary search to work, the list must be sorted! This is where sorting algorithms can come in. Sorting will not be covered in + this class, but we will describe one sorting algorithm for those that are curious.

Selection sort is a simple sorting algorithm. The idea is that we take the smallest element and swap it with the leftmost element, - and then the leftmost element becomes the sorted list. We repeat this process, and the sorted start of the list grows in size each time, so we're only - swapping from the nonsorted elements at the end of the list.

+ and then the leftmost element becomes the sorted list. We repeat this process, and the sorted portion of the list grows in size each time, so we're only + adding elements from the nonsorted portion of the list to the end of the sorted part of the list.

The time complexity of selection sort is O(n^2) in every case.

-

Some other common sorting algorithms include Bubble Sort and Insertion Sort, but those are out of the - scope of this class.

+

Some other common sorting algorithms include Bubble Sort and Insertion Sort, but we will leave those for another class.

diff --git a/pretext/ExtraTopics/toctree.ptx b/pretext/ExtraTopics/toctree.ptx index af0f376c9..9f2349ba2 100644 --- a/pretext/ExtraTopics/toctree.ptx +++ b/pretext/ExtraTopics/toctree.ptx @@ -1,13 +1,5 @@ 4Extra Topics -4 -4 -4 -4 -4 -4 -4 -4 4 diff --git a/pretext/ExtraTopics/None.ptx b/pretext/Lists/None.ptx similarity index 100% rename from pretext/ExtraTopics/None.ptx rename to pretext/Lists/None.ptx diff --git a/pretext/Lists/toctree.ptx b/pretext/Lists/toctree.ptx index 96b9c0a70..ef9892fee 100644 --- a/pretext/Lists/toctree.ptx +++ b/pretext/Lists/toctree.ptx @@ -14,6 +14,7 @@ 4 4 4 +4 4 4 diff --git a/pretext/ExtraTopics/Packages.ptx b/pretext/PythonModules/Packages.ptx similarity index 91% rename from pretext/ExtraTopics/Packages.ptx rename to pretext/PythonModules/Packages.ptx index b6a38282e..804312967 100644 --- a/pretext/ExtraTopics/Packages.ptx +++ b/pretext/PythonModules/Packages.ptx @@ -2,7 +2,8 @@
Packages and Dependencies - You won't ever need to deal with dependencies in this course unless you are adding modules to your final project. + You won't ever need to deal with dependencies in this course unless you are adding modules to your final project. Nonetheless, using packages + (a package is just a collection of Python modules) is a common practice in Python programming that you should at least be aware of.

One key tenant of computer science (or anything, for that matter) is that we don't want to reinvent the wheel if we don't have to. A lot of very smart people have made very useful code, so why not use it?

diff --git a/pretext/PythonModules/toctree.ptx b/pretext/PythonModules/toctree.ptx index 77275913f..896c0c70a 100644 --- a/pretext/PythonModules/toctree.ptx +++ b/pretext/PythonModules/toctree.ptx @@ -5,6 +5,7 @@ 4 4 4 +4 4 4 diff --git a/pretext/ExtraTopics/Pseudocode.ptx b/pretext/Selection/Pseudocode.ptx similarity index 87% rename from pretext/ExtraTopics/Pseudocode.ptx rename to pretext/Selection/Pseudocode.ptx index e8daf6466..c5ea43ae0 100644 --- a/pretext/ExtraTopics/Pseudocode.ptx +++ b/pretext/Selection/Pseudocode.ptx @@ -2,6 +2,9 @@
Pseudocode +

With the introduction of conditionals and branching, our programs are about to become more complex on average. This is a good time to introduce a technique + that will help you plan and structure your programs before you start writing the more complex code. That technique is to use pseudocode.

+

Pseudocode is a mix of English and code (in our case, Python) that programmers use to plan out their programs.

@@ -13,7 +16,7 @@
  • It can help you to document your code with comments for yourself and others' readability.
  • -

    There isn't necessarily a right or wrong pseudocode (except wrong would be if you just wrote the program!). +

    There isn't necessarily a right or wrong syntax for pseudocode (except wrong would be if you just wrote the program!). Your pseudocode and language will probably look different from this, but should be along the same lines.

    Take the following prompt for a problem:

    @@ -45,7 +48,7 @@ otherwise better see the control flow of your program, or even remind you to do the small things, like converting your string input to an integer if necessary.

    -

    This pseudocode can then be quickly converted to Python:

    +

    This pseudocode can then be more readily converted to Python:

    diff --git a/pretext/Selection/toctree.ptx b/pretext/Selection/toctree.ptx index 5a7ff7e66..f39344864 100644 --- a/pretext/Selection/toctree.ptx +++ b/pretext/Selection/toctree.ptx @@ -12,6 +12,7 @@ 4 4 4 +4 4 4 diff --git a/pretext/thinkcspy.ptx b/pretext/thinkcspy.ptx index b9c1b6641..b992e2002 100644 --- a/pretext/thinkcspy.ptx +++ b/pretext/thinkcspy.ptx @@ -33,7 +33,7 @@ - + From d523ffda4c04703848c3a0e562b0304d2ab185dc Mon Sep 17 00:00:00 2001 From: Ethan Richards <42894274+ezrichards@users.noreply.github.com> Date: Fri, 5 Jan 2024 16:41:26 -0700 Subject: [PATCH 22/22] Finalize new sections --- .../BigO.ptx | 2 +- .../BinaryRepresentations.ptx | 0 .../DataScience.ptx | 0 pretext/AdditionalTopics/Glossary.ptx | 19 ++++++++++++++++++- .../More-BigO.ptx | 0 .../SearchSortAlgorithms.ptx | 0 pretext/ExtraTopics/Glossary.ptx | 11 ----------- pretext/ExtraTopics/toctree.ptx | 5 ----- pretext/Selection/Glossary.ptx | 5 +++++ 9 files changed, 24 insertions(+), 18 deletions(-) rename pretext/{ExtraTopics => AdditionalTopics}/BigO.ptx (99%) rename pretext/{ExtraTopics => AdditionalTopics}/BinaryRepresentations.ptx (100%) rename pretext/{ExtraTopics => AdditionalTopics}/DataScience.ptx (100%) rename pretext/{ExtraTopics => AdditionalTopics}/More-BigO.ptx (100%) rename pretext/{ExtraTopics => AdditionalTopics}/SearchSortAlgorithms.ptx (100%) delete mode 100644 pretext/ExtraTopics/Glossary.ptx delete mode 100644 pretext/ExtraTopics/toctree.ptx diff --git a/pretext/ExtraTopics/BigO.ptx b/pretext/AdditionalTopics/BigO.ptx similarity index 99% rename from pretext/ExtraTopics/BigO.ptx rename to pretext/AdditionalTopics/BigO.ptx index 86bb0b8d5..314e274f6 100644 --- a/pretext/ExtraTopics/BigO.ptx +++ b/pretext/AdditionalTopics/BigO.ptx @@ -50,7 +50,7 @@ else:

    In this program, the size of the input doesn't matter as much as whether the input string contains a letter "a" or not. If it does, the program runs forever. If it doesn't, the program ends almost immediately. How do we reconcile this with our Big O notation? The answer is to be a pessimist. We adopt the assumption that everything that can happen to slow down our program will happen. In the code above, we assume that the input ALWAYS will contain an "a". This assumption is broadly - known as the "worst case". Big O notation uses this assumption in every instance you will see it (at least in this class). + known as the "worst case". Big O notation uses this assumption in every instance you will see it (at least in this class).

    Let's look at some more examples:

    diff --git a/pretext/ExtraTopics/BinaryRepresentations.ptx b/pretext/AdditionalTopics/BinaryRepresentations.ptx similarity index 100% rename from pretext/ExtraTopics/BinaryRepresentations.ptx rename to pretext/AdditionalTopics/BinaryRepresentations.ptx diff --git a/pretext/ExtraTopics/DataScience.ptx b/pretext/AdditionalTopics/DataScience.ptx similarity index 100% rename from pretext/ExtraTopics/DataScience.ptx rename to pretext/AdditionalTopics/DataScience.ptx diff --git a/pretext/AdditionalTopics/Glossary.ptx b/pretext/AdditionalTopics/Glossary.ptx index e6a39e402..a0e7daa8a 100644 --- a/pretext/AdditionalTopics/Glossary.ptx +++ b/pretext/AdditionalTopics/Glossary.ptx @@ -2,11 +2,24 @@
    Glossary + + Binary search +

    A searching algorithm where you look through a sorted list in halves; an improvement upon linear search.

    +
    + + Big O Notation +

    A notation computer scientists use to describe the relationship between the size + of the input data and the behavior of the program, denoted with O() and some factor inside of the parenthesis.

    +
    + + constant time +

    A Big O time complexity of O(1).

    +
    comprehension

    A specific Python construction that allows collection types to be created and filled with a single line of code.

    - + dictionary

    A collection of key-value pairs that maps from keys to values. The keys can be any immutable type, and the values can be any type.

    @@ -21,6 +34,10 @@

    One of the pairs of items in a dictionary. Values are looked up in a dictionary by key.

    + + Linear search +

    A searching algorithm where you look through in a linear order (directly from start to end).

    +
    mapping type

    A mapping type is a data type comprised of a collection of keys and diff --git a/pretext/ExtraTopics/More-BigO.ptx b/pretext/AdditionalTopics/More-BigO.ptx similarity index 100% rename from pretext/ExtraTopics/More-BigO.ptx rename to pretext/AdditionalTopics/More-BigO.ptx diff --git a/pretext/ExtraTopics/SearchSortAlgorithms.ptx b/pretext/AdditionalTopics/SearchSortAlgorithms.ptx similarity index 100% rename from pretext/ExtraTopics/SearchSortAlgorithms.ptx rename to pretext/AdditionalTopics/SearchSortAlgorithms.ptx diff --git a/pretext/ExtraTopics/Glossary.ptx b/pretext/ExtraTopics/Glossary.ptx deleted file mode 100644 index 4542e708a..000000000 --- a/pretext/ExtraTopics/Glossary.ptx +++ /dev/null @@ -1,11 +0,0 @@ - -

    - Glossary - - - - term -

    definition

    -
    -
    -
    diff --git a/pretext/ExtraTopics/toctree.ptx b/pretext/ExtraTopics/toctree.ptx deleted file mode 100644 index 9f2349ba2..000000000 --- a/pretext/ExtraTopics/toctree.ptx +++ /dev/null @@ -1,5 +0,0 @@ - - -4Extra Topics -4 - diff --git a/pretext/Selection/Glossary.ptx b/pretext/Selection/Glossary.ptx index 45f9621a2..1c0683c58 100644 --- a/pretext/Selection/Glossary.ptx +++ b/pretext/Selection/Glossary.ptx @@ -69,5 +69,10 @@

    One program structure within another, such as a conditional statement inside a branch of another conditional statement.

    + + Pseudocode +

    A mix of English and code (in our case, Python) that + programmers use to plan out their programs.

    +