The Craft of Coding

Post on 23-Feb-2016

26 views 0 download

Tags:

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 Presentation

Transcript of 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• 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