Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Computer Science: The Good Parts
Jeff Cohen
August 04, 2017
Programming
0
69
Computer Science: The Good Parts
Kansas City Developers Conference
Jeff Cohen
August 04, 2017
Tweet
Share
More Decks by Jeff Cohen
See All by Jeff Cohen
Modern Cryptography for Absolute Beginner
jeffcohen
0
110
(RubyConf 2016) Computer Science: The Good Parts
jeffcohen
0
160
Computer Science: The Good Parts (2016)
jeffcohen
3
150
Computer Science: The Good Parts
jeffcohen
1
130
Secrets Revealed: Web Development is for Everyone
jeffcohen
0
410
Coding for MBA's
jeffcohen
0
54
Other Decks in Programming
See All in Programming
LINE Messaging APIの概要 - LINE API総復習シリーズ
uezo
0
100
What's new in Android development tools まとめ
mkeeda
0
260
Web API連携でCSRF対策がどう実装されてるか調べた / how to implements csrf-detection on Web API
yasuakiomokawa
2
290
Jakarta EE 10 and Beyond
ivargrimstad
0
1.7k
模組化的Swift架構(二) DDD速成
haifengkao
0
340
即、New Relic / New Relic NOW!
uzulla
0
270
設計ナイト2022 トランザクションスクリプト
shinpeim
11
2k
engineer
spacemarket
0
460
The strategies behind ddd – AdeoDevSummit 2022
lilobase
PRO
4
230
Meet Swift Regex
usamik26
0
270
ドメインモデル方式のクラス設計 座談会
masuda220
PRO
3
1k
Improving Developer Experience Through Tools and Techniques 2022
krzysztofzablocki
0
390
Featured
See All Featured
Thoughts on Productivity
jonyablonski
43
2.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
172
8.4k
Debugging Ruby Performance
tmm1
65
10k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.3k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Building Adaptive Systems
keathley
25
1.1k
Support Driven Design
roundedbygravity
86
8.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Happy Clients
brianwarren
89
5.6k
Design by the Numbers
sachag
271
17k
Designing for Performance
lara
597
63k
Transcript
Computer Science: The Good Parts csthegoodparts.com @jeffcohen
None
None
1. Encoding All The Things 2. Containers for Things 3.
Doing Things 4. Building Big Things 5. Thinking About Things
Data Structures
Data Structures
Linked List 60 31 5 45 70 head
Queue New elements are appended to the end of the
list 60 31 5 45 70 head
Stack 60 45 70 31 5 head New elements are
inserted at the front of the list
60 31 5 45 80 70 74 99 87 68
Binary Tree root
Graph
None
None
None
Algorithms
Babbage and Lovelace
Apollo 11
Margaret Hamilton Source code of the Apollo Guidance Computer
Complexity
Complexity Some computer programming implementations are more complex than others.
Complexity A "green" test suite is not an indicator of
sustainability nor is it a guarantee of an optimal solution.
Complexity Science relies on standard systems of weights and measures.
For software, we measure resources, which are typically time and space.
O(n) def search(name_to_find, names) for name in names if name
== name_to_find return true end end return false end
def search(name_to_find, names) for name in names if name ==
name_to_find return true end end return false end O(n) 0 100 200 300 O(n)
O(log n) def search(name_to_find, sorted_names) return false if sorted_names.size
== 0 midpoint = sorted_names.length / 2 if name < sorted_names[midpoint].name search(name_to_find, sorted_names[0, midpoint]) elsif name > sorted_names[midpoint].name search(name_to_find, sorted_names[midpoint, -1]) end return true end
def search(name_to_find, sorted_names) return false if sorted_names.size == 0
midpoint = sorted_names.length / 2 if name < sorted_names[midpoint].name search(name_to_find, sorted_names[0, midpoint]) elsif name > sorted_names[midpoint].name search(name_to_find, sorted_names[midpoint, -1]) end return true end O(log n) 0 100 200 300 O(log n) O(n)
Atom.io blog post
O(n2) def all_permuations(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]]
def all_permuations(items) items.map do |item| items.map { |inner_item| [item, inner_item]
} end end O(n2) 0 100 200 300 O(n2) O(n) O(log n)
Cryptography
Cryptography
Cryptography
Cryptography
The Future
Traditions We know our history. We value progress over reinvention.
We seek solutions to meaningful problems.
Alan Turing
Alan Turing Computer science is not computer programming
Alan Turing It's a way of thinking
Grace Hopper
Grace Hopper
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.
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.
Questions? Thoughts? Find me on twitter @jeffcohen Notes, Links, Resources:
csthegoodparts.com