the craft of coding
DESCRIPTION
The Craft of Coding. Computer Science in Action. Many IT Careers. Some Involve Code. Things to Discuss. Object orientation Data Structures Recursion Algorithms. Object Orientation. The most fundamental skill in modern software development - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/1.jpg)
The Craft of Coding
Computer Science in Action
![Page 2: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/2.jpg)
Many IT Careers
![Page 3: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/3.jpg)
Some Involve Code
![Page 4: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/4.jpg)
Things to Discuss• Object orientation• Data Structures• Recursion• Algorithms
![Page 5: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/5.jpg)
Object Orientation• The most fundamental skill in
modern software development• Almost all “real world” languages are
object oriented.• Inheritance is an important concept,
but OOP is more than inheritance.
![Page 6: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/6.jpg)
Object Orientation• The most fundamental skill in
modern software development• Almost all “real world” languages are
object oriented.• Inheritance is an important concept,
but OOP is more than inheritance.
![Page 7: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/7.jpg)
Question
What are the 3 fundamental concepts in OOP?
Inheritance EncapsulationPolymorphism
![Page 8: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/8.jpg)
DjangoInheritance
Python code from https://github.com/django
![Page 9: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/9.jpg)
MongoDB
Encapsulation
C++ code from https://github.com/mongodb
![Page 10: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/10.jpg)
Polymorphism• The most important of the three?• See AuditHistoryViewModel.cs
![Page 11: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/11.jpg)
![Page 12: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/12.jpg)
![Page 13: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/13.jpg)
OOP: The Future
![Page 14: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/14.jpg)
Objects aren’t going anywhere
![Page 15: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/15.jpg)
Data Structures
![Page 16: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/16.jpg)
Why Data Structures > Relational?
• Performance• Scalability• Meaningful• Loose Coupling
![Page 17: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/17.jpg)
Data Structures• Queue• Stack• Hash• Arrays• Linked Lists• Trees• Graphs
![Page 18: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/18.jpg)
Queues
![Page 19: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/19.jpg)
Job Queue (Resque)
Ruby code from https://github.com/defunkt/resque
![Page 20: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/20.jpg)
Random QuestionWho invented Ruby on Rails?
David Heinemeier Hansson
![Page 21: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/21.jpg)
Kestrel Queue (Twitter)
SCALA code from https://github.com/robey/kestrel
![Page 22: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/22.jpg)
Stacks
![Page 23: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/23.jpg)
Stacks example: GDI+ Architect
DEMO
![Page 24: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/24.jpg)
The Future?
![Page 25: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/25.jpg)
Primitives in the Cloud
![Page 26: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/26.jpg)
Windows Azure Service Bus
![Page 27: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/27.jpg)
Recursion
![Page 28: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/28.jpg)
Re.cur.sion (noun):See Recursion
![Page 29: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/29.jpg)
Should we recurse?• Historically developers avoid
recursion.• Some data is recursive in nature. • Looking toward the future, recursion
has advantages
![Page 30: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/30.jpg)
QuestionWhat error is typically caused by infinite recursion?
Stack Overflow
![Page 31: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/31.jpg)
The Future?
![Page 32: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/32.jpg)
Functional Languages
![Page 33: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/33.jpg)
F# Example• DEMO
![Page 34: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/34.jpg)
Algorithms
![Page 35: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/35.jpg)
Shlemiel the Painter's Algorithm
![Page 36: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/36.jpg)
Algorithms• O notation is helpful• Key question is what are you trying
to achieve?
![Page 37: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/37.jpg)
Algorithms and Runtime Analysis
• O notation is a start• But in the real world performance is
situational• The key question is what are you
trying to achieve?
![Page 38: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/38.jpg)
Memory Efficiency
![Page 39: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/39.jpg)
The Future
![Page 40: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/40.jpg)
Utility Model (Amazon EC2)
![Page 41: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/41.jpg)
Utility Model (Windows Azure)
![Page 42: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/42.jpg)
And this other thing…
![Page 43: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/43.jpg)
![Page 44: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/44.jpg)
![Page 45: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/45.jpg)
The Free Lunch is over
![Page 46: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/46.jpg)
How Will we Cope?• Functional languages (Low side
effects)• Software transactional memory• Implicit > Explicit computing
![Page 47: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/47.jpg)
Implicit > Explicit computing
• Demo!
![Page 48: The Craft of Coding](https://reader036.vdocument.in/reader036/viewer/2022062302/568163ae550346895dd4c41a/html5/thumbnails/48.jpg)
Creative Commons Acknowledgments and Thanks!
• US Navy• Lostechies• Flickr user otrocalpe• Flickr user Reportergimmi• Flickr user rjrgmc28• Flickr user seanmcgrath• Flickr user Valerie Everett• Flickr user ashcroft54• Flickr user bfishadow• Flickr user Brett Jordan• c Flickr user ryptic_star
• Flickr user fenng• Flickr user flakyredhead• Flickr user FrenchKheldar• Flickr user gadl• Flickr user groovelock• Flickr user jeff_werner• Flickr user katiew• Flickr user limowreck666• Flickr user Minifig• Flickr user EugeniusD80• Openclip user liftarn