Download - Craft of coding
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• Almost all “real world” languages are
object oriented.• Inheritance is an important concept,
but OOP is more than inheritance.
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.
Question
What are the 3 fundamental concepts in OOP?
Inheritance EncapsulationPolymorphism
DjangoInheritance
Python code from https://github.com/django
MongoDB
Encapsulation
C++ code from https://github.com/mongodb
Polymorphism• The most important of the three?• See AuditHistoryViewModel.cs
OOP: The Future
Objects aren’t going anywhere
Data Structures
Why Data Structures > Relational?
• Performance• Scalability• Meaningful• Loose Coupling
Data Structures• Queue• Stack• Hash• Arrays• Linked Lists• Trees• Graphs
Queues
Job Queue (Resque)
Ruby code from https://github.com/defunkt/resque
Random QuestionWho invented Ruby on Rails?
David Heinemeier Hansson
Kestrel Queue (Twitter)
SCALA code from https://github.com/robey/kestrel
Stacks
Stacks example: GDI+ Architect
DEMO
The Future?
Primitives in the Cloud
Windows Azure Service Bus
Recursion
Re.cur.sion (noun):See Recursion
Should we recurse?• Historically developers avoid
recursion.• Some data is recursive in nature. • Looking toward the future, recursion
has advantages
QuestionWhat error is typically caused by infinite recursion?
Stack Overflow
The Future?
Functional Languages
F# Example• DEMO
Algorithms
Shlemiel the Painter's Algorithm
Algorithms• O notation is helpful• Key question is what are you trying
to achieve?
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?
Memory Efficiency
The Future
Utility Model (Amazon EC2)
Utility Model (Windows Azure)
And this other thing…
The Free Lunch is over
How Will we Cope?• Functional languages (Low side
effects)• Software transactional memory• Implicit > Explicit computing
Implicit > Explicit computing
• Demo!
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