adding a bunch of stuff for midterm review
This commit is contained in:
parent
d8d5a209e2
commit
32f510f6b7
|
@ -0,0 +1,23 @@
|
|||
# we're going to do more than just give an exploration of for loops we're also going to
|
||||
# talk a lot about lists, dictionaries, and the general ways that for loops allow us to traverse
|
||||
# different kinds of data
|
||||
|
||||
# okay so the very first thing here is our basic for loop
|
||||
|
||||
for i in range(10):
|
||||
print(f"Oh look we're counting: {i}") # note that we're using the format strings, f-strings, here
|
||||
|
||||
# and in general whenever you need to do something a certain number of times you're going to be
|
||||
# using a for loop.
|
||||
|
||||
# range lets us pick out a, well, range for the numbers
|
||||
|
||||
for i in range(5,17):
|
||||
print(f"We're counting again: {i}")
|
||||
|
||||
|
||||
# okay but one of the cool things about for loops is that they can operate over anything
|
||||
# that's like a list or a sequence, anything that has an order to it
|
||||
|
||||
# lists? I guess we should talk about those a little more formally here
|
||||
# essentially a list
|
|
@ -0,0 +1,63 @@
|
|||
* Agenda for Tuesday Oct 24th
|
||||
+ Talk about midterm
|
||||
+ Technically available now
|
||||
+ Can take up until Sunday night
|
||||
+ 20 questions
|
||||
+ short answer/multiple choice/multiple selection
|
||||
+ Covers material from modules 1 - 4
|
||||
+ The "four processes a computer performs"
|
||||
+ I didn't really talk about this in class because it's not a definition I like
|
||||
+ But!
|
||||
1. Take in /input/
|
||||
2. Be able to /store/ data or partial results
|
||||
3. Process the data
|
||||
4. Output, or /return/, a result
|
||||
+ Let's talk Turing machines for a second
|
||||
+
|
||||
+ Review of bits and counting
|
||||
+ Binary to decimal
|
||||
+ and back again
|
||||
+ ASCII
|
||||
+ How many bits do you need to count?
|
||||
+ Review of The Internet
|
||||
+ Layers as defined in class:
|
||||
+ Application (HTTP and DNS)
|
||||
+ Builds high-level protocols
|
||||
+ HTTP is just text sent back and forth
|
||||
+ DNS converts names to IP addresses
|
||||
+ Transport (TCP/UDP/&c.)
|
||||
+ Breaks data into packets
|
||||
+ Determines what goes in those packets
|
||||
+ Internet (Internet Protocol and how routing happens)
|
||||
+ Link (Sometimes called physical layer)
|
||||
+ Routing:
|
||||
+ Important take aways
|
||||
+ Many ways to get from one machine to another
|
||||
+ Take different routes according to traffic and varied connections
|
||||
+ Python miscellania
|
||||
+ types
|
||||
+ boolean
|
||||
+ int
|
||||
+ float
|
||||
+ how to check a type
|
||||
+ coercing types
|
||||
+ strings
|
||||
+ so many ways to write strings
|
||||
+ ''
|
||||
+ ""
|
||||
+ """ """
|
||||
+ f""
|
||||
+ formatting: (oh my god I don't care)
|
||||
+ but you should (for this class)
|
||||
+ two ways:
|
||||
+ using format()
|
||||
+ using f-strings
|
||||
+ if-statements
|
||||
+ for-loops
|
||||
+ I/O
|
||||
+ input
|
||||
+ print
|
||||
+ while-loops
|
||||
+ while loops to test data validation
|
||||
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
* What is this document
|
||||
First off, this book is not a replacement for reviewing the material on the course site. It is, however, intended as a brief review of the material of this course up to the point of the midterm!
|
||||
* Bits, bytes, and counting
|
||||
** What is binary?
|
||||
To start, let's talk about how we our normal way of writing numbers works, also called decimal.
|
||||
|
||||
When I write a number like 35116 this is---technically---just a different way of writing
|
||||
|
||||
#+begin_example
|
||||
30000 + 5000 + 100 + 10 + 6
|
||||
#+end_example
|
||||
|
||||
which itself can be rewritten as
|
||||
#+begin_example
|
||||
3*10^4 + 5*10^3 + 1*10^2 + 1*10 + 6
|
||||
#+end_example
|
||||
|
||||
Okay so binary is the same thing as decimal except that instead of it being numbers 0-9 and powers of 10, it's 0 and 1 & powers of 2.
|
||||
|
||||
so a binary number would look like
|
||||
#+begin_example
|
||||
11011101
|
||||
#+end_example
|
||||
which you can rewrite as
|
||||
#+begin_example
|
||||
1*2^7 + 1 * 2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 0*2 + 1
|
||||
#+end_example
|
||||
which in decimal would be written as
|
||||
#+begin_example
|
||||
1*128 + 1 * 64 + 0 + 1*16 + 1*8 + 1 * 4 + 0 + 1
|
||||
#+end_example
|
||||
which is
|
||||
#+begin_example
|
||||
221
|
||||
#+end_example
|
||||
|
||||
So that's not just a definition of binary it also teaches us how you convert from binary to decimal.
|
||||
|
||||
A reasonable question at this point is "how big of a number can n-bits represent" and the answer is if you assume every bit is a 1 and add them all up you'll get =2^n -1= is the largest number.
|
||||
** Converting from decimal to binary
|
||||
But how do you convert from decimal to binary?
|
||||
|
||||
It's easiest to explain with some examples.
|
||||
|
||||
Let's say you have the number 3521.
|
||||
|
||||
Then we're going to figure out what the /largest/ power of 2 is that's smaller than 3521.
|
||||
|
||||
Here let's list out the powers of 2
|
||||
| n | 2^n |
|
||||
|----+------|
|
||||
| 0 | 1 |
|
||||
| 1 | 2 |
|
||||
| 2 | 4 |
|
||||
| 3 | 8 |
|
||||
| 4 | 16 |
|
||||
| 5 | 32 |
|
||||
| 6 | 64 |
|
||||
| 7 | 128 |
|
||||
| 8 | 256 |
|
||||
| 9 | 512 |
|
||||
| 10 | 1024 |
|
||||
| 11 | 2048 |
|
||||
| 12 | 4096 |
|
||||
|
||||
okay and we can stop there because 4096 is bigger than 3521.
|
||||
|
||||
So the largest power of 2 that's /smaller/ than 3521 is 2^11, which is 2048. This automatically tells us we'll be representing 3521 as a 12-bit number (0 through 11 is 12 numbers total).
|
||||
|
||||
so we start writing our number as
|
||||
|
||||
#+begin_example
|
||||
1??? ???? ????
|
||||
#+end_example
|
||||
and I'm putting spaces between groups of 4 bits so it's easier to read, but it doesn't actually affect the "meaning" of the bits.
|
||||
|
||||
So what do we have left?
|
||||
|
||||
#+begin_example
|
||||
3521 - 2048 = 1473
|
||||
#+end_example
|
||||
|
||||
Now what's the biggest power of 2 that's still less than 1473? Why it's 10, which is 1024,
|
||||
|
||||
so now our number is
|
||||
#+begin_example
|
||||
11?? ???? ????
|
||||
#+end_example
|
||||
|
||||
and our next part is
|
||||
#+begin_example
|
||||
1473 - 1024 = 449
|
||||
#+end_example
|
||||
so let's keep repeating the process: what's the largest power of 2 that's less than 449? Well it's 8 which is 256. So now we actually know *two* more bits
|
||||
|
||||
#+begin_example
|
||||
1101 ???? ????
|
||||
#+end_example
|
||||
because we had to skip 9, which is 512, we put a zero in for it instead
|
||||
|
||||
so continuing in ever more painful detail the remainder we have left is
|
||||
#+begin_example
|
||||
449 - 256 = 193
|
||||
#+end_example
|
||||
|
||||
which means we fill in the next bit as a 1
|
||||
|
||||
#+begin_example
|
||||
1101 1??? ????
|
||||
#+end_example
|
||||
and are left with
|
||||
#+begin_example
|
||||
193 - 128 = 65
|
||||
#+end_example
|
||||
|
||||
so we have
|
||||
#+begin_example
|
||||
1101 11?? ????
|
||||
#+end_example
|
||||
and a remainder of 1 but that's easy because the only way to get a 1 is if the last bit is a 1 and all the others that haven't been filled in are zeros. So our final binary number is
|
||||
|
||||
#+begin_example
|
||||
1101 1100 0001
|
||||
#+end_example
|
||||
** How many things can be counted by n-bits?
|
||||
So how many things total can actually be described by n-bits?
|
||||
|
||||
Well from above we know that the largest number that can be represented by n-bits is =2^n-1=, but that's for us starting to count from 0.
|
||||
|
||||
The same way that if I have the numbers 0,1,2,3,4,5,6,7,8,9 then you can count them and get "10", this means that if I count 0, 1, 2, ..., up to =2^n-1= then you're counting 2^n numbers.
|
||||
|
||||
So let's say you need to count three thousand things, we can play a really similar game to up above and
|
Loading…
Reference in New Issue