summaryrefslogtreecommitdiff
path: root/00.md
blob: 659077c5a928e00d1183888b8763a91096e21ccd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---
author: Adam T. Carpenter, Carpenter Tutoring
---

# Computational problem solving with _Rust_

## Introduction

```
 __________
< Welcome! >
 ----------
        \
         \
            _~^~^~_
        \) /  o o  \ (/
          '_   -   _'
          / '-----' \
```

---

# What is this course?

This course will focus on computational problem solving using Rust as a first
language. _It aims to provide students with the knowledge and skills to write
programs to solve problems._

Consider this an introductory, "101"-level computer science course on
programming fundamentals taught by Carpenter Tutoring.

---

# Who is this course for?

- people in school who are new to computer programming
- people with careers who want to use programming to get work done
- people who tinker with machines and want to experiment with programming

Computer programming is for everyone, not just a select few ("programmers").
Text processing and number crunching i.e., working with data, are two primary
instigators for computer programming. Everyone will likely find these things
useful.

_This course is for everyone who wants to solve problems using computers._

---

# Who is this course _not_ for?

- people who are already proficient in programming
- programmers who want to pick up Rust fast
- people who aren't interested in learning something hard to make life easy

---

# Materials

This course is a translation from one language to another. Instead of being
taught in Python, it's being taught in Rust.

[Practice of Computing Using Python](https://www.pearson.com/en-us/subject-catalog/p/practice-of-computing-using-python-the/P200000003329/9780137524839)

The above textbook is used for course framework and method. The syntax and other
language content comes from the [Rust Book](https://doc.rust-lang.org/book/).

---

# Who am I?

- Bachelor's of Science from College of William and Mary, majoring in CS
- Nearly five years employed as software engineer focusing on server-side
  automation and support self-service
- Using Rust productively for over three years

[Bio](https://www.53hor.net/info)

[Carpenter Tutoring](https://carpentertutoring.com)

---

# Why the Rust programming language?

- enables writing useful programs that are easy to share
- prevents beginners from making mistakes (in other languages)
- 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.?

- C forces you to think about computer organization (more)
- Java forces you to think Object-Oriented
- Python forces you to think dynamic type conversion

These languages contain many foot guns for novice programmers!

---

# Setup and resources

[The playground](https://play.rust-lang.org)

[Getting started/installation](https://www.rust-lang.org/learn/get-started)

[Docs, books, and self-learning](https://www.rust-lang.org/learn)