1 / 48

The 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

phyre
Download Presentation

The Craft of Coding

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Craft of Coding Computer Science in Action

  2. Many IT Careers

  3. Some Involve Code

  4. Things to Discuss • Object orientation • Data Structures • Recursion • Algorithms

  5. 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.

  6. 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.

  7. Question What are the 3 fundamental concepts in OOP? Inheritance Encapsulation Polymorphism

  8. Django Inheritance Python code from https://github.com/django

  9. MongoDB Encapsulation C++ code from https://github.com/mongodb

  10. Polymorphism • The most important of the three? • See AuditHistoryViewModel.cs

  11. OOP: The Future

  12. Objects aren’t going anywhere

  13. Data Structures

  14. Why Data Structures > Relational? • Performance • Scalability • Meaningful • Loose Coupling

  15. Data Structures • Queue • Stack • Hash • Arrays • Linked Lists • Trees • Graphs

  16. Queues

  17. Job Queue (Resque) Ruby code from https://github.com/defunkt/resque

  18. Random Question Who invented Ruby on Rails? David Heinemeier Hansson

  19. Kestrel Queue (Twitter) SCALA code from https://github.com/robey/kestrel

  20. Stacks

  21. Stacks example: GDI+ Architect DEMO

  22. The Future?

  23. Primitives in the Cloud

  24. Windows Azure Service Bus

  25. Recursion

  26. Re.cur.sion (noun): See Recursion

  27. Should we recurse? • Historically developers avoid recursion. • Some data is recursive in nature. • Looking toward the future, recursion has advantages

  28. Question What error is typically caused by infinite recursion? Stack Overflow

  29. The Future?

  30. Functional Languages

  31. F# Example • DEMO

  32. Algorithms

  33. Shlemiel the Painter's Algorithm

  34. Algorithms • O notation is helpful • Key question is what are you trying to achieve?

  35. 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?

  36. Memory Efficiency

  37. The Future

  38. Utility Model (Amazon EC2)

  39. Utility Model (Windows Azure)

  40. And this other thing…

  41. The Free Lunch is over

  42. How Will we Cope? • Functional languages (Low side effects) • Software transactional memory • Implicit > Explicit computing

  43. Implicit > Explicit computing • Demo!

  44. 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

More Related