diff options
Diffstat (limited to 'comp')
-rwxr-xr-x | comp/gift/build.sh | 3 | ||||
-rwxr-xr-x | comp/gift/clean.sh | 4 | ||||
-rwxr-xr-x | comp/gift/fmt.sh | 5 | ||||
-rwxr-xr-x | comp/gift/wordcount.sh | 2 | ||||
-rw-r--r-- | comp/gift/writeup.tex | 339 | ||||
-rw-r--r-- | comp/work/57/question | 35 | ||||
-rw-r--r-- | comp/work/57/starter | 0 | ||||
-rw-r--r-- | comp/work/58/example.c | 54 | ||||
-rw-r--r-- | comp/work/58/libraylib.a | bin | 0 -> 2766972 bytes | |||
-rw-r--r-- | comp/work/58/starter | 27 | ||||
-rw-r--r-- | comp/work/58/test.s | 35 | ||||
-rw-r--r-- | comp/work/59/ed.hup | 2 | ||||
-rwxr-xr-x | comp/work/60/question | bin | 0 -> 20728 bytes | |||
-rw-r--r-- | comp/work/60/question.hi | bin | 0 -> 776 bytes | |||
-rw-r--r-- | comp/work/60/question.hs | 18 | ||||
-rw-r--r-- | comp/work/60/question.o | bin | 0 -> 8864 bytes | |||
-rw-r--r-- | comp/work/60/starter | 8 | ||||
-rw-r--r-- | comp/work/60/test | 12 | ||||
-rw-r--r-- | comp/work/61/question | 8 | ||||
-rw-r--r-- | comp/work/62/starter | 19 | ||||
-rw-r--r-- | comp/work/63/final | 90 |
21 files changed, 661 insertions, 0 deletions
diff --git a/comp/gift/build.sh b/comp/gift/build.sh new file mode 100755 index 0000000..ae48bda --- /dev/null +++ b/comp/gift/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash +pdflatex writeup.tex +pdflatex writeup.tex diff --git a/comp/gift/clean.sh b/comp/gift/clean.sh new file mode 100755 index 0000000..f4d65f4 --- /dev/null +++ b/comp/gift/clean.sh @@ -0,0 +1,4 @@ +#!/bin/bash +shopt -s extglob + +rm -rf !(*.tex|*.sh|ref.bib|examples) diff --git a/comp/gift/fmt.sh b/comp/gift/fmt.sh new file mode 100755 index 0000000..fbb2fe6 --- /dev/null +++ b/comp/gift/fmt.sh @@ -0,0 +1,5 @@ +#!/bin/sh +latexindent writeup.tex > tmp +mv tmp writeup.tex +./clean.sh +./build.sh diff --git a/comp/gift/wordcount.sh b/comp/gift/wordcount.sh new file mode 100755 index 0000000..74eb254 --- /dev/null +++ b/comp/gift/wordcount.sh @@ -0,0 +1,2 @@ +#!/bin/sh +detex writeup.tex | wc -w diff --git a/comp/gift/writeup.tex b/comp/gift/writeup.tex new file mode 100644 index 0000000..74bf0d8 --- /dev/null +++ b/comp/gift/writeup.tex @@ -0,0 +1,339 @@ +\documentclass[a4paper,12pt]{article} + +\usepackage{geometry} +\usepackage{titling} +\usepackage{titlesec} +\usepackage[english]{babel} +\usepackage[hidelinks]{hyperref} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{graphicx} +\usepackage[export]{adjustbox} +\usepackage{forest} +\usepackage{tikz-qtree} +\usepackage{bchart} +\usepackage[T1]{fontenc} + +\titleformat{\section}{\Huge}{}{0em}{}[\titlerule] +\geometry{a4paper, total={170mm,257mm}, left=30mm, right=30mm} + +\author{Lucas Standen} +\title{A parting gift of my knowledge} + +\begin{document} + +\maketitle +\newpage +\tableofcontents + +\setlength{\parskip}{1em} +{\setlength{\parindent}{0cm} + +\section{Headnote} +I leave this as a gift and thanks for all the things I learnt in your +class, hopefully you can learn something from this. This document +contains almost all the things I know about computer science; please +enjoy! Not much of this will be stuff needed to teach the course but I +still thought it would be nice to give you a wealth knowledge for the +fun of it; If knowing me for 2 years wasn't enough tell, doing things +for the fun of it is the best way to learn (in my opinion). + +I will be laying this document out into sections on general +topics and then subsections of specifics, see the table of +contents to do further reading. + +\section{The Unix wizard handbook} +\subsection{The history} +Unix was originally made at AT and T's bell labs, their research centre +at the time (It belongs to Nokia now). It was designed as a small and +lightweight OS for the 'weaker' computer at the site although it still +took up and entire room. It was made by Ken Thompson and Denis Richie in +the early 70's. They built everything from the ground up for the system, +it was written in C, which they made specifically to write the system. + +It is often cited, but we will never truly know, that Ken was +the person with all the ideas, and Denis was very good at +implementing them, so most of the code in the original Unix was +written by Denis. I don't know if there is anything relevant in +that, but I thought it was interesting. + +Unix was sold to many university's in the late 70's and early +80's, and it was through this that it really started to gain +some traction with the students. Many developed Unix further, +because unlike modern paid software, Unix was distributed in +source form, meaning you could tinker it as much as you liked, +assuming you had brought a license. One of the main outcome of +this would be BSD (The Bearkly software distribution) version of +Unix. The people who worked on this system later went on to +develop Java (All of computer science is so interlinked, its a +small world!). + +In the 80/90's Unix was de facto in Uni's but the free software +movement was starting to gain traction, and many re-writes or +clones of Unix were starting to show up, like GNU (fun fact, GNU +is a recursive acronym for GNU's not Unix!) + +\subsection{The philosophy} +The main idea's behind Unix were that it needed to be small to run on +the 'weaker' computer at bell labs. One of the leading limitations with +this system was its small storage size of about 20Mb. To avoid this +being an issue they came up with the following philosophy to ensure all +software remained small, and simple even on the weaker computer. + +\begin{description} \item[Small reusable tools] The idea was + that if + you made one small program that did one thing and provided the + ability to combine programs easily, you could let the user put + together it together to make the tools they needed to their own + needs. + \item[Everything is a file] This was the idea that if everything + is a file, from talking between systems, to talking to kernel, + you could avoid many different APIs that would repetitive, + instead all you needed was one single file and you could work + with the entire system. +\end{description} + +Something that was more unintentional but still worth noting is the Unix +was designed for Teletypes, (paper printers that talked to computers), +that didn't have the ability to overwrite sections of the page, and +printed at a slow 10 characters per second. This effects a large amount +of the user interfaces for Unix. + +\subsubsection{GNU/Linux} +One of the many outcomes of the free software movement, it quickly +became the easiest way for anyone to use Unix, releasing in 1991. There +were open and free versions available at the time, such as BSD, however +you still needed to be in a university to get a copy, as the internet +wasn't really active at this time. It is ironic that Linux became a core +part of this system, as it was in fact a small hobby project that the +creator Linus Torvalds said 'this is just a small thing, it won't go +anywhere'. + +The GNU part of GNU/Linux is the user land utility's of the +system. Linux is only the kernel of the system, handling the low +level system, such as the file system, memory allocation and +process scheduler, the rest of the GNU/Linux system is the GNU +core utils, such as the GNU bash shell. + +\subsection{The shell} +\subsubsection{The interactive shell} +The shell is the part of the system that you time commands into, it's a +whole programming language that can run line by line (if +it helps you think about it, its like using the python +shell in IDLE). + +The shell was designed to be a helpful interface to take the +user in and out of programs, it is fast and simple. So here is a +whistle stop tour of all the things it does. + +The shell can store variables that contain strings, these +strings can then be accessed by any program that is run in the +same shell that the variable is in (think of it like a +parent-child thing, the child process knows all the same things +as the parent shell). The can be created like so 'myvar="hello"' +and then can be accessed using a '\$' like so '\$myvar', this +syntax is also seen in Perl and php, which are often compared to +the Unix shell as they are all interpreted scripting languages. + +On a Unix system applications are stored in /bin, /usr/bin, +/usr/local/bin, and \url{~/.local/bin} (and sometime other +places too). The shell will allow you to type a commands name, +like 'cp' (copy paste), and it will search through all the known +locations of programs and run the first one it finds. The shell +stores all the known locations of programs in a variable called +\$PATH. + +Programs can be started in parallel using a '\&' sign, which can +be very helpful when testing networked software. + +Modern shells such as Bash and Zsh provide autocompletion of +possible commands when tab is pressed, just like modern code +IDE's allowing you to auto complete code. + +Commands are always processed in the following structure +COMMAND-NAME -ARG -ARG -ARG [FILE] [...] Some commands may take +a fixed amount of arguments, while others maybe more variable, +some may take in none. Most commands will perform some +operations on a file. + +Almost every command can be run like so COMMAND-NAME -h or +COMMAND-NAME --help to get a list of available options and how +to use it. + +Arguments that are only 1 letter long will usually only use a +single - and arguments that are words will usually use a double +--. + +The shell has a current working directory, this is a folder that +it is currently navigated too. When typing commands, file +arguments can be given as a relative path to the current working +directory. For example 'cp file1 file2' will copy file1 to +file2, where both files are in the same directory. You can also +use absolute paths which always start with '/'. + +There are 3 magic shell paths, ../ which is equivalent to the +parent folder of the current working directory, ./ which is the +current working directory and \url{~/} which is the currently +logged in users home director (where their documents, downloads, +videos, etc folders are stored). + +\subsubsection{The common commands} +Items given in brackets are optional arguments +\begin{description} + \item{cp file1 file2} \\ cp will copy file 1 to the file 2, if file 2 + already exists it is overwritten, if it doesn't exist created. The -r + option is often used to allow it to co instead of individual files. + + \item{rm file1 [fileN]} \\ rm will delete any files provided, it + is often used with the -r flag like cp is removed folders as + well as files. The -f option is also used to avoid prompts of + weather you want to delete the just deleting it straight away + + \item{mv file1 [fileN] file2} \\ mv moves 1 file to another + location, it is equivalent to copying a file then deleting + original. For some reason unlike rm and cp, it doesn't the -r + option to work with folders. If file2 is afolder (something + that ends in /) multiple files can be given and they will all + copy to the folder. + + \item{cd [folder]} \\ cd will set the shell's current working + directory to the folder specified. You can use this wi magic + paths, for example cd .. will move you back one directory, and + cd \url{~} will move you to you home directory. Running cd + without any arguments is the same as cd \url{~} + + \item{ls [folder]} \\ ls will show the folders and files that are + contained with in the folder provided. If no folder provide it will + default to the current working directory can use the -l option to get + file permissions and the -a show hidden files. (you can think of cd and + ls equivalent clicking on a folder in file explorer and observing th + contents). + + \item{cat file1 [fileN]} \\ Cat is a simple command that will + print the contents o files given to it as arguments. + + \item{grep regex [file]} \\ Grep is one of the larger commands + and has + many abilities however its main one is to search through a file + for a + expression. If no file is given to the command, it will read + from standard input (typing input) + \item {sed expression [file]} \\ sed is a find and replace of a + file (or stdin if no file is given), the expression should look + something like this. "s/word/newword/". the 's' at the start + tells you that it is in subsitution mode (other modes exist), + the word is the expression to search for, and the newword is wat + to replace it with. By default this will only substiute 1 word + per line, if you want to do it more times the g (global) flag + can be given like so, "s/word/newword/g". No matter how the file + is give, via stdin or a file name, the output will be printed to + stdout. +\end{description} + +\subsubsection{Pipes and redirections} +This is where the real magic Unix starts, as previously mentioned, Unix +was designed with the id of making a small reusable tools, and this is +how the tools can work together. + +One can take the output of one command pass it to another, or +copy the outputs to a file. (A commands input is what is typed +in by the user, and the commands output is what is printed to +the screen) This can be done like so. ls > files.txt This will +take the output of the 'ls' command and copy it to the file +'files.txt' (which is in the current working directory, we can +tell this because it doesn't have any '/' in its name). You can +also do: + +ls >> files.txt + +Which will do the same thing, however if the file already exists +it will append to it instead of truncating it. + +This on its own is quite helpful, as many commands take files as +arguments, and this will allow to use one command to help +another (the '>' and '>>' is called a redirection in Unix). + +One can also use a '|' to take the output of one command and use +it as the input to another. + +Here is an example: + +cat file.txt | grep [0-9]+ + +This has taken the output of the cat command, and put put it +into the input of the grep command (as if you had typed what the +cat command printed), and has append a special EOF character to +the end of the cat command output, to specify the end of file. + +Grep has then read this input, and performs an operation on it, +based on its arguments. + +\subsubsection{Shell scripting} +This is where you take all the things you've used in the shell, and wr +ite them into a file, as simple as it gets really. The only notable +differences is the fact that you have to prefix a file with a special +string to say it is a shell script and make it executable. + +This can be done like so: +\begin{lstlisting}[language=bash, caption=example.sh] + #!/bin/sh + sed "s/word/newword/g" myfile > tmp + myvar=$(grep "[0-9]+" tmp) + echo $myvar +\end{lstlisting} + +This simple example will run sed, and put its output in tmp, then run +grep on the output and then echo the output of grep. The \$() syntax is +used t o specify run the following value as a command and put its output +here. A mixture of sed and grep can create some rather insane programs, +in 2023 i use these two tools to do almost all of advent of code, by +taking the inpu t and then manipulating into valid python code, which +then solved the task for me . Sadly i dont have the scripts I used +anymore, but there are some great videos of Russ Cox (co creator of the +GO programming language) doing the same thing +\url{https://www.youtube.com/watch?v=hmq6veCFo0Y}. + +\subsection{Device files} +As mentioned prior, everything in unix is a file, this went all the wa y +down to devices and hardware attached to the system. Here is a quick +list of a ll the major files that you can use inside of programs to +communicate with th e hardware on a device. +\begin{description} + \item{/dev/random (/dev/urandom)} \\ These are both random text + generators that can be found on most unix systems. You can use commands + like head (another small unix tool that prints the first 10 lines of a + file), to read it like so + \begin{lstlisting}[language=bash, caption=/dev/random example] + key=\$(head /dev/random) + \end{lstlisting} + urandom works the same, although it uses a slower, more random + algorithum to generate text. + \item{/dev/null} \\ this is just a bottemless pit file, it + contains nothing, it is often used to compare if something is + empty, saying if the contents of a file is equal to /dev/null + then its empty. It can also be used to delete files if you + wanted, via mv file /dev/null (although rm does the same + thing). + + \item{/dev/sdXN} \\ this is how devices are listed, your + harddrive (or whatever the kernel detected first) is equal to + /dev/sda and then each partion on the drive is equal to + /dev/sda1, /dev/sda2, etc, etc. These file can be used for many + things, for example if you want to burn an ISO or IMG file to a + dvd/cd, the dvd will show up as /dev/sdb (or somethimes /dev/sr0 + depending on weather you are using linux, bsd or something + else), and you can use the dd command to copy it to the disk. + You can also use the mount command to access the files on a + drive. You can say mount /dev/sdb1 /mnt (which could be the + first partion of a usb drive currently connected). This will + mean that if you cd into /mnt, you will see the contents of the + usb drive, and you can copy or edit files on /mnt to copy or + edit the content of the drive. +\end{description} + +\subsection{Some examples of things and how to try them} + +\section{The C wizard handbook} +\subsection{Why is C the way it is?} +} +\end{document} diff --git a/comp/work/57/question b/comp/work/57/question new file mode 100644 index 0000000..9ee9079 --- /dev/null +++ b/comp/work/57/question @@ -0,0 +1,35 @@ +5.1) It avoids the worry of running out of IP addresses on the local +network (1) + +5.2) Because the external ip address of the computer will be the +same for the entire network, meaning each lan only takes up 1 IP address +(2) + +5.3) By blocking websites that may contain malware on a blacklist basis. +By blocking all comunications through specific ports that could be holding +dangerous info. By inspecting all incoming data and blocking it if it +is dangerous. By redirecting some sites to other ones, avoiding tracking +sites. +(3) + +5.4) A subnet mask will be used to check if the 2 computers are +connected to eachother via the same router, or if they can comunicate +via a chain of local routers. The packets will be set over a network by +first sending them down the link (physcal) connection, to the router, +they will have been processed to work with the ip protocol, and tcp or +udp, and a applications specific formating. The packet will be sent to +the routher which will check if the device that is going to recive the +data is on the same network, if it is, it will send it straight to it, +otherwise it will be sent over the internet. Packet switching will be +used to ensure that the data is sent quickly. The packet will be broken +into many peices and sent accorss many different wires accross the world. +When the data is recived on the otherside it will be put back together in +the right order. The data will have been sent with a checksum, this can +be checked by the recipient. It will contain some form of information, +in a known format (like the number of 1's in the data) and check if +that value matches what was recived in the packet. If it is not, then +the data was currupted, and the recipient will ask for it to be resent. +When it is sent properly the process ends. +(8) + +2)a) diff --git a/comp/work/57/starter b/comp/work/57/starter new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/comp/work/57/starter diff --git a/comp/work/58/example.c b/comp/work/58/example.c new file mode 100644 index 0000000..1fb81b8 --- /dev/null +++ b/comp/work/58/example.c @@ -0,0 +1,54 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef enum op { + ADD, + SUB, + MUL, + DIV, +} op; + +struct operation { + int a, b; + op o; + int (*funcs[2][2])(int, int); +}; + +int add(int a, int b) { + return a + b; +} +int sub(int a, int b) { + return a - b; +} +int mul(int a, int b) { + return a * b; +} +int Div(int a, int b) { + return a / b; +} + +int runop(struct operation *o) { + switch (o->o) { + case ADD: return o->funcs[0][0](o->a, o->b); + case SUB: return o->funcs[0][1](o->a, o->b); + case MUL: return o->funcs[1][0](o->a, o->b); + case DIV: return o->funcs[1][1](o->a, o->b); + } + return -1; +} + +struct operation *initop(int a, int b, op ope) { + struct operation *o = malloc(sizeof(struct operation)); + o->a = a; + o->b = b; + o->funcs[0][0] = &add; + o->funcs[0][1] = ⊂ + o->funcs[1][0] = &mul; + o->funcs[1][1] = &Div; + o->o = ope; +} + +int main() { + struct operation *o = initop(5, 5, MUL); + printf("%d\n", runop(o)); +} diff --git a/comp/work/58/libraylib.a b/comp/work/58/libraylib.a Binary files differnew file mode 100644 index 0000000..8af9033 --- /dev/null +++ b/comp/work/58/libraylib.a diff --git a/comp/work/58/starter b/comp/work/58/starter new file mode 100644 index 0000000..0261da9 --- /dev/null +++ b/comp/work/58/starter @@ -0,0 +1,27 @@ +130 | R1 | R2 | R3 | R4 + 83 | 83 | 0 | | 0 + | | 1 | 1 | + | | | | 1 + | 41 | | | + | | 2 | 1 | + | | | | 2 + | 20 | | | + | | 3 | 0 | + | 10 | | | + | | 4 | 0 | + | 5 | | | + | | 5 | 1 | 3 + | 2 | | | + | | 6 | 0 | + | 1 | | | + | | 7 | 1 | 4 + | 0 | | | + | 83 | | | 0 + | 211| | | + 211| | | | + +It adds a parity bit to the number + +faster, lower level access + +not OO or functional diff --git a/comp/work/58/test.s b/comp/work/58/test.s new file mode 100644 index 0000000..cbf161f --- /dev/null +++ b/comp/work/58/test.s @@ -0,0 +1,35 @@ +.text +.global _start + +_start: + push %rbp + mov %rsp, %rbp + + mov $100, [rsp - 4] + mov $100, (rsp - 8) + push $name + call InitWindow + + add $16, %rsp + pop %rbp + ret + + mov $0, %r12 +loop: + push %rbp + mov %rsp, %rbp + call WindowShouldClose + pop %rbp + ret + + cmp %r12, %rax + je loop + + push $1 + call exit + +.data +name: +.asciz "testing" + + diff --git a/comp/work/59/ed.hup b/comp/work/59/ed.hup new file mode 100644 index 0000000..3607ff5 --- /dev/null +++ b/comp/work/59/ed.hup @@ -0,0 +1,2 @@ +1) A,D +2) -0.017578125 diff --git a/comp/work/60/question b/comp/work/60/question Binary files differnew file mode 100755 index 0000000..30d3673 --- /dev/null +++ b/comp/work/60/question diff --git a/comp/work/60/question.hi b/comp/work/60/question.hi Binary files differnew file mode 100644 index 0000000..ff75cdd --- /dev/null +++ b/comp/work/60/question.hi diff --git a/comp/work/60/question.hs b/comp/work/60/question.hs new file mode 100644 index 0000000..b8970a7 --- /dev/null +++ b/comp/work/60/question.hs @@ -0,0 +1,18 @@ +temps = [50, 68, 95, 86] + +fu a = (a - 32) * 5 / 9 + +fv b = map fu b + +fw [] = 0 +fw (x:xs) = 1 + fw (xs) + +fx [] = 0 +fx (x:xs) = x + fx (xs) + +fy c = fx(c) / fw(c) + +fz d = fy(fv(d)) + +main = do + print (fz temps) diff --git a/comp/work/60/question.o b/comp/work/60/question.o Binary files differnew file mode 100644 index 0000000..e7de03e --- /dev/null +++ b/comp/work/60/question.o diff --git a/comp/work/60/starter b/comp/work/60/starter new file mode 100644 index 0000000..f83dd6a --- /dev/null +++ b/comp/work/60/starter @@ -0,0 +1,8 @@ +call no | arg | ret +1 | [4,2,5,3] | 52 +2 | [2,5,3] | 24 +3 | [5, 3] | 11 +4 | [3] | 3 +5 | [] | 0 + + diff --git a/comp/work/60/test b/comp/work/60/test new file mode 100644 index 0000000..ce8a64c --- /dev/null +++ b/comp/work/60/test @@ -0,0 +1,12 @@ +11.1)1) 192.168.192.1 +11.1)2) 192.168.64.1 +11.1)3) 192.168.64.16 + +11.2) C + +11.3) To avoid running out of avalibe ip addresses, as IPV4 has a "low" limit +comapared to IPV6 + +11.4) star + +11.5) balls diff --git a/comp/work/61/question b/comp/work/61/question new file mode 100644 index 0000000..3084b0f --- /dev/null +++ b/comp/work/61/question @@ -0,0 +1,8 @@ +0 | 1 | 2 | 3 | 4 | 5 | 6 +------------------------- +1 | - | 2 | 5 | 3 | - | 8 +2 | 2 | - | 1 | - | - | - +3 | 5 | 1 | - | - | - | 4 +4 | 3 | - | - | - | 1 | - +5 | - | - | - | 1 | - | 5 +6 | 8 | - | 4 | - | 5 | - diff --git a/comp/work/62/starter b/comp/work/62/starter new file mode 100644 index 0000000..67dc3c5 --- /dev/null +++ b/comp/work/62/starter @@ -0,0 +1,19 @@ +The transport layer will format the packet with the send address and return address, this is the IP part of the protocol. It will package the data up in such a way that it can be sent down many different routes. The transport layer is the section that desides the route, sending many packets down different routes is called packet switching. + +To act as a connection point for all the devices. + +IMAP -- recives mail from the internet and stores it in a "mail box", this can be retrieved by many devices, allowing mail to be synced between them. + +SMTP -- sends mail, will send it to another users mail box. + +A well known port is a port that all applications implementing a spceific protocol will use. + +This is to ensure that these applications are cross compatibe with eachother, and that communication can be automatic (no need to have a different port for every person you want to talk too). + +Computer A has a private key +The email will be sent with a public key +The private key is used to encrypt the data +The public key can decrypt the data +Computer B will recive the email and attempt to decrypt it with the public key +If it can do this, then it means the email must have been sent from computer A +If not, then it couldn't have been sent from computer A diff --git a/comp/work/63/final b/comp/work/63/final new file mode 100644 index 0000000..22c4a47 --- /dev/null +++ b/comp/work/63/final @@ -0,0 +1,90 @@ +1) +less repeted code -- code can be writen once and used many times +allows for recursion -- subroutines can call themselfs +creates more maintainable code -- allows for only 1 point to be changed to edit the whole program + +2) +avoid un-reputable websites +use https only +keep backups so systems with viruses can be wiped without lossing anything +don't click on links in emails + +3) +protocol -- http +domain name -- loveapug.org.uk + +4) +it can be slow to query +duplicate data takes up extra space + +5) +it is faster to run +it provides lower level hardware access + +6) +the set real numbers + +7) +no side effects or global state meaning any server can run a function to get the same output +because everything is a function, a program can be executed accross many servers at once + +8) +NO + +9) +lifetime +packet id + +10) +the data can be checked if it matches the checksum, which can tell the system if there was an error in transmition. It will be calculated from the data on the senders side, and will be attached to the packet + +11) +sjeydchdj + +12) +the key must be the same length as the input, the key must not repeat + +13) +2 + +14) +all the lines of data are sent using a shared clock, and are recvied at the same time + +15) +bt: O(log n) +bs: O(n^2) +ls: 0(n) +ms: O(nlog n) + +16) +sending many lines of data at once, to achieve a faster speed + +17) +you only need 1 wire + +18) +B + +19) +to tell the other end of the signal to start reading data + +20) +to tell the other end of the signal to stop reading data + +21) +to manage system reasores +to provide a simple programming interface for programmers + +22) + + + + + + + + + + + + |