From 8954368b22404f877a07e9a7ac0fedcc76ba188c Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Tue, 2 May 2023 18:26:25 -0400 Subject: renames --- 01/README.md | 191 ---------------------------------------------------------- 01/readme.md | 193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 193 insertions(+), 191 deletions(-) delete mode 100755 01/README.md create mode 100755 01/readme.md (limited to '01') diff --git a/01/README.md b/01/README.md deleted file mode 100755 index 0949931..0000000 --- a/01/README.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -author: Adam T. Carpenter, Carpenter Tutoring ---- - -# Computational problem solving with _Rust_ - -## The study of computer science - -``` -~~~fsays -Not just for computer scientists -~~~ -``` - -[practice of computing using python](https://www.pearson.com/en-us/subject-catalog/p/practice-of-computing-using-python-the/p200000003329/9780137524839) - -[rust book](https://doc.rust-lang.org/book/) - ---- - -# Why computer science? - -Computers are "more universally applicable than any other commodity in history." -(Punch & Enbody) - -There is no other machine with as many diverse uses as the computer. A -reprogrammable machine is a machine that works for _you_. - -## Not just computer programming - -- theory of computation -- efficiency -- algorithms and data structures -- parallelism -- software engineering - -_Computer programming is a great way to begin exploring these fields_ - ---- - -# Difficulty in first-time programming - -It's like learning how to write poetry in a foreign language. You need: - -- fluency: the vocabulary and grammar to read and write the language -- ability: the skill to rhyme, write in verse, _make poetry_ - -Learning to program has similar roadblocks. You need: - -- syntax and semantics: the structure of Rust as a language -- problem solving: the skill to transform your problem into a solution - ---- - -# Good programs are essays - -Programming is writing how _you_ think a problem should be solved. - -A program is your thoughts! - -## 1. Think before you program - -Writing a program should describe your thoughts well. - -Not just for computers, but for other human beings! You're going to read your -program over and over again. Eventually you'll inevitably write programs in a -group. Then others will need to read it too. - -## 2. A program is a human-readable essay on problem solving (that also runs on a computer) - ---- - -# The promise - -A program, or an essay on problem-solving, has impact because it can be executed -on a computer. Your problem-solving thoughts - -- are executable -- are repeatable -- are independent of you - -Programming is a leap forward in the way the printing press was hundreds of -years ago. - ---- - -# Choosing a language - -The variety of languages is enormous, each one with a specific intended purpose. - -## Why Rust? "performance, reliability, productivity" - -- useful types and memory guarantees -- makes it easy to write concurrent programs -- has a friendly compiler and helpful borrow checker -- provides good documentation -- offers great standard library and third-party libraries - -Thanks to middle school math, most folks have the prerequisite knowledge to -understand variables, functions, and types. - -## Why not C, Java, Python, etc.? - -Some of these languages force you to think about computer organization. Others -may direct you into an object-oriented programming mindset. Still others promote -dynamic type conversion or make it easy to dereference null values. - -The most important reason for using Rust is it helps prevent you from making -mistakes, regardless of your skill level. - ---- - -# Is Rust the best language? - -If you don't already know you'll soon learn there is no "best language." - -All languages compromise on something; Each has its strengths and weaknesses. - -Rust is a good, _general-purpose_ programming language with _broad_ -_applications_. - -Once you've gotten started, you'll be better equipped to explore other languages -that may be better suited to solving your specific problems. - ---- - -# Computation and computers - -_Computation_ is the manipulation of data by humans or machines - -...be that data numbers, letters, or other symbols. - -A _computer_ is something that does computation - -Note this does not specify _how_ the computation is accomplished. However, there -are some things that every computer needs in order to do its job. - -- accept data as input -- manipulate data (do computation on the input) -- output data - ---- - -# Mechanical and electronic computers - -_Computer_ used to be a job description for human beings! - -General-purpose, reprogrammable, electronic digital computers first appeared in -the 20th century. - -The basis of every digital computer is an on-off switch. The technology behind -these "switches" has evolved from mechanical relays to vacuum tubes to -transistors. - -_Transistors_, the tiny electronic switches powering modern computers, are -either on or off. Just like a light switch, when turned on, they allow -electricity to flow. Using switches to power other switches, you can create -circuits that represent logic. - ---- - -# Example: a three-pole light switch - -``` -~~~graph-easy --as boxart -[hall switch] .. off ..> [ceiling lamp] -[den switch] - on -> [ceiling lamp] -[hall switch] <-> [den switch] -~~~ -``` - -``` -~~~graph-easy --as boxart -[hall switch] - on -> [*ceiling lamp*] { border: bold; } -[den switch] - on -> [*ceiling lamp*] { border: bold; } -[hall switch] <-> [den switch] -~~~ -``` - -Note: this is actually an XNOR gate, but we'll talk more about logical operators -later. - ---- - -# Replace light with truth - -Off: false, 0 - -On: true, 1 - -Both switches off: light off, false, 0 diff --git a/01/readme.md b/01/readme.md new file mode 100755 index 0000000..becb6d9 --- /dev/null +++ b/01/readme.md @@ -0,0 +1,193 @@ +--- +author: Adam T. Carpenter, Carpenter Tutoring +--- + +# Computational problem solving with _Rust_ + +## The study of computer science + +``` +~~~fsays +Not just for computer scientists +~~~ +``` + +[practice of computing using python](https://www.pearson.com/en-us/subject-catalog/p/practice-of-computing-using-python-the/p200000003329/9780137524839) + +[rust book](https://doc.rust-lang.org/book/) + +--- + +# Why computer science? + +Computers are "more universally applicable than any other commodity in history." +(Punch & Enbody) + +There is no other machine with as many diverse uses as the computer. A +reprogrammable machine is a machine that works for _you_. + +## Not just computer programming + +- theory of computation +- efficiency +- algorithms and data structures +- parallelism +- software engineering + +_Computer programming is a great way to begin exploring these fields_ + +--- + +# Difficulty in first-time programming + +It's like learning how to write poetry in a foreign language. You need: + +- fluency: the vocabulary and grammar to read and write the language +- ability: the skill to rhyme, write in verse, _make poetry_ + +Learning to program has similar roadblocks. You need: + +- syntax and semantics: the structure of Rust as a language +- problem solving: the skill to transform your problem into a solution + +--- + +# Good programs are essays + +Programming is writing how _you_ think a problem should be solved. + +A program is your thoughts! + +## 1. Think before you program + +Writing a program should describe your thoughts well. + +Not just for computers, but for other human beings! You're going to read your +program over and over again. Eventually you'll inevitably write programs in a +group. Then others will need to read it too. + +## 2. A program is a human-readable essay on problem solving (that also runs on a computer) + +--- + +# The promise + +A program, or an essay on problem-solving, has impact because it can be executed +on a computer. Your problem-solving thoughts + +- are executable +- are repeatable +- are independent of you + +Programming is a leap forward in the way the printing press was hundreds of +years ago. + +--- + +# Choosing a language + +The variety of languages is enormous, each one with a specific intended purpose. + +## Why Rust? "performance, reliability, productivity" + +- useful types and memory guarantees +- makes it easy to write concurrent programs +- has a friendly compiler and helpful borrow checker +- provides good documentation +- offers great standard library and third-party libraries + +Thanks to middle school math, most folks have the prerequisite knowledge to +understand variables, functions, and types. + +## Why not C, Java, Python, etc.? + +Some of these languages force you to think about computer organization. Others +may direct you into an object-oriented programming mindset. Still others promote +dynamic type conversion or make it easy to dereference null values. + +The most important reason for using Rust is it helps prevent you from making +mistakes, regardless of your skill level. + +--- + +# Is Rust the best language? + +If you don't already know you'll soon learn there is no "best language." + +All languages compromise on something; Each has its strengths and weaknesses. + +Rust is a good, _general-purpose_ programming language with _broad_ +_applications_. + +Once you've gotten started, you'll be better equipped to explore other languages +that may be better suited to solving your specific problems. + +--- + +# Computation and computers + +_Computation_ is the manipulation of data by humans or machines + +...be that data numbers, letters, or other symbols. + +A _computer_ is something that does computation + +Note this does not specify _how_ the computation is accomplished. However, there +are some things that every computer needs in order to do its job. + +- accept data as input +- manipulate data (do computation on the input) +- output data + +--- + +# Mechanical and electronic computers + +_Computer_ used to be a job description for human beings! + +General-purpose, reprogrammable, electronic digital computers first appeared in +the 20th century. + +The basis of every digital computer is an on-off switch. The technology behind +these "switches" has evolved from mechanical relays to vacuum tubes to +transistors. + +_Transistors_, the tiny electronic switches powering modern computers, are +either on or off. Just like a light switch, when turned on, they allow +electricity to flow. Using switches to power other switches, you can create +circuits that represent logic. + +--- + +# Example: a three-pole light switch + +``` +~~~graph-easy --as boxart +[hall switch] .. off ..> [ceiling lamp] +[den switch] - on -> [ceiling lamp] +[hall switch] <-> [den switch] +~~~ +``` + +``` +~~~graph-easy --as boxart +[hall switch] - on -> [*ceiling lamp*] { border: bold; } +[den switch] - on -> [*ceiling lamp*] { border: bold; } +[hall switch] <-> [den switch] +~~~ +``` + +Note: this is actually an XNOR gate, but we'll talk more about logical operators +later. + +--- + +# Replace AC power with truth + +Off: false, 0 + +On: true, 1 + +Both switches off: light off, false, 0 + +--- -- cgit v1.2.3