Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
(RubyConf 2016) Computer Science: The Good Parts
Search
Jeff Cohen
November 09, 2016
Programming
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(RubyConf 2016) Computer Science: The Good Parts
My keynote talk from RubyConf 2016 in Cincinnati.
Jeff Cohen
November 09, 2016
More Decks by Jeff Cohen
See All by Jeff Cohen
Modern Cryptography for Absolute Beginner
jeffcohen
0
210
Computer Science: The Good Parts
jeffcohen
0
150
Computer Science: The Good Parts (2016)
jeffcohen
3
240
Computer Science: The Good Parts
jeffcohen
1
230
Secrets Revealed: Web Development is for Everyone
jeffcohen
0
470
Coding for MBA's
jeffcohen
0
110
Other Decks in Programming
See All in Programming
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
330
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.3k
ジョジョの世界をXRで再現する
mofurune
0
150
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
1
170
mrbgem 三角測量 開発
ogom
0
240
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
590
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
200
Event is what happens
moro
1
260
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
150
ChromeでローカルLLM
ryu1013
0
110
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.4k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Design in an AI World
tapps
1
350
Evolving SEO for Evolving Search Engines
ryanjones
0
320
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
Being A Developer After 40
akosma
92
590k
Practical Orchestrator
shlominoach
192
12k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
The SEO Collaboration Effect
kristinabergwall1
1
590
Transcript
Computer Science: The Good Parts Jeffrey Cohen @jeffcohen jeffcohenonline.com
None
Data Structures
Data Structures
Linked List
60 31 5 45 80 70 74 99 87 68
Binary Tree
Data Structures
Graph
None
None
None
None
None
None
Algorithms
Babbage and Lovelace
Apollo 11
Margaret Hamilton Source code of the Apollo Guidance Computer
Complexity A "green" test suite is not an indicator of
sustainability. Some implementations are more complex than others. • Time • Space
O(n) def exists?(name_to_find, names) names.each do |name| return true if
name == name_to_find end return false end
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)
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
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)
Atom.io blog post
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]]
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)
The Future
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 jeffcohenonline.com