Slide 1

Slide 1 text

Computer Science: The Good Parts Jeffrey Cohen
 @jeffcohen jeffcohenonline.com

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Data Structures

Slide 4

Slide 4 text

Data Structures

Slide 5

Slide 5 text

Linked List

Slide 6

Slide 6 text

60 31 5 45 80 70 74 99 87 68 Binary Tree

Slide 7

Slide 7 text

Data Structures

Slide 8

Slide 8 text

Graph

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Algorithms

Slide 16

Slide 16 text

Babbage and Lovelace

Slide 17

Slide 17 text

Apollo 11

Slide 18

Slide 18 text

Margaret Hamilton Source code of the Apollo Guidance Computer

Slide 19

Slide 19 text

Complexity A "green" test suite is not an indicator of sustainability. Some implementations are more complex than others. • Time • Space

Slide 20

Slide 20 text

O(n) def exists?(name_to_find, names) names.each do |name| return true if name == name_to_find end return false end

Slide 21

Slide 21 text

def exists?(name_to_find, names) names.each do |name| return true if name == name_to_find end return false end O(n) 0 100 200 300 O(n)

Slide 22

Slide 22 text

O(log n) def exists?(name_to_find, sorted_names) 
 
 midpoint = sorted_names.length / 2 
 return true if sorted_names[midpoint].name == name_to_find 
 if name < sorted_names[midpoint].name 
 search(name_to_find, sorted_names[0, midpoint]) 
 else 
 search(name_to_find, sorted_names[midpoint, -1]) 
 end 
 return false
 end

Slide 23

Slide 23 text

def exists?(name_to_find, sorted_names) 
 
 midpoint = sorted_names.length / 2 
 return true if sorted_names[midpoint].name == name_to_find 
 if name < sorted_names[midpoint].name 
 search(name_to_find, sorted_names[0, midpoint]) 
 else 
 search(name_to_find, sorted_names[midpoint, -1]) 
 end 
 return false
 end O(log n) 0 100 200 300 O(log n) O(n)

Slide 24

Slide 24 text

Atom.io blog post

Slide 25

Slide 25 text

O(n2) def make_combinations(items) items.map do |item| items.map { |inner_item| [item, inner_item] } end end [1,2,3] => [[1,1], [1,2], [1,3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]]

Slide 26

Slide 26 text

O(n2) def make_combinations(items) items.map do |item| items.map { |inner_item| [item, inner_item] } end end 0 100 200 300 O(n2) O(n) O(log n)

Slide 27

Slide 27 text

The Future

Slide 28

Slide 28 text

Alan Turing

Slide 29

Slide 29 text

Alan Turing Computer science
 is not
 computer programming

Slide 30

Slide 30 text

Alan Turing It's a way of thinking

Slide 31

Slide 31 text

Grace Hopper

Slide 32

Slide 32 text

Grace Hopper

Slide 33

Slide 33 text

Grace Hopper Humans are allergic to change. They love to say, "We've always done it this way." I try to fight that.
 
 That's why I have a clock on my wall that runs counter-clockwise.

Slide 34

Slide 34 text

Grace Hopper A ship in port is safe; but that is not what ships are built for. Sail out to sea and do new things.

Slide 35

Slide 35 text

Questions? Thoughts? Find me on twitter
 @jeffcohen
 
 
 jeffcohenonline.com