480 likes | 575 Views
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
E N D
The Craft of Coding Computer Science in Action
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 Encapsulation Polymorphism
Django Inheritance 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
Why Data Structures > Relational? • Performance • Scalability • Meaningful • Loose Coupling
Data Structures • Queue • Stack • Hash • Arrays • Linked Lists • Trees • Graphs
Job Queue (Resque) Ruby code from https://github.com/defunkt/resque
Random Question Who invented Ruby on Rails? David Heinemeier Hansson
Kestrel Queue (Twitter) SCALA code from https://github.com/robey/kestrel
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
Question What error is typically caused by infinite recursion? Stack Overflow
F# Example • DEMO
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?
How Will we Cope? • Functional languages (Low side effects) • Software transactional memory • Implicit > Explicit computing
Implicit > Explicit computing • Demo!
Creative Commons Acknowledgments and Thanks! 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 • 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