31
Copyright © Software Carpentry 2012 This work is licensed under the Creative Commons Attribution Lice See http://software-carpentry.org/license.html for more informati Putting it all together

Copyright © Software Carpentry 2012 This work is licensed under the Creative Commons Attribution License See

Embed Size (px)

Citation preview

Copyright © Software Carpentry 2012

This work is licensed under the Creative Commons Attribution License

See http://software-carpentry.org/license.html for more information.

Putting it all together

Putting it all together

Version control

Python

Testing

Databases

Putting it all together

Version control

Preserve the evolution of your code

Bind data to the code that produced it

Work collaboratively

Python

Testing

Databases

Putting it all together

Version control

Python

Develop readable and understandable code

Testing

Databases

Putting it all together

Version control

Python

Testing

Develop code that can be shown to be correct

Change code without introducing bugs

Databases

Putting it all together

Version control

Python

Testing

Databases

Efficiently access and filter data

Putting it all together

Or, let’s look at it another way...

Putting it all together

Pair programming

Putting it all together

RedGreenRefactor

Pair programming

Test-driven development

Putting it all together

Pair programming

Test-driven development

Version control

Putting it all together

Pair programming

Test-driven development

Version control

Continuous integration

Putting it all together

Pair programming

Test-driven development

Version control

Iteration and release

Continuous integration

Putting it all together

Pair programming

Test-driven development

Version control

Iteration and release

Continuous integration

Putting it all together

Pair programming

and/orcode

reviews

Test-driven development

Version control

Iteration and release

Continuous integration

Putting it all together

Review code before commit

Prevent bugs entering the repository

Ensure that reviews are done

Distributed version control

Merge developer branch into trunk after review

Patch files

List of differences between two sets of files

Putting it all together

Principles of computational thinking

Putting it all together

It’s all just data

Shopping list

DNA sequence

Galactic coordinates

Function

Program

0s and 1s

Putting it all together

Data doesn’t mean anything on its own,

it has to be interpreted

01100100011000010111100001100001

data

1,684,108,385

1.6635613602263159e+22

Putting it all together

Programming is about creating and

composing abstractionsMeaningful names

Comprehensible units

Separate interface from implementation

Clarity over cleverness

Putting it all together

Models are for computers,

views are for us

Structured data is better than unstructured data

Putting it all together

Paranoia makes us productive

Improving quality improves productivity

Think before you code

Validate

Review

Automate

Putting it all together

Better algorithms are better than

better hardware

Algorithmic complexity

Insertion sort: O(n2) … O(n2)

Quick sort: O(n log n) … O(n2)

Merge sort: O(n log n) … O(n log n)

Putting it all together

Better algorithms are better than

better hardware

Algorithmic complexity

Insertion sort: O(n2) … O(n2) O(1)

Quick sort: O(n log n) … O(n2) O(log n)

Merge sort: O(n log n) … O(n log n) O(n)

Putting it all together

Better algorithms are better than

better hardware

Algorithmic complexity

Insertion sort: O(n2) … O(n2) O(1)

Quick sort: O(n log n) … O(n2) O(log n)

Merge sort: O(n log n) … O(n log n) O(n)

Algorithms and data structures

Putting it all together

The tool shapes the hand

Using a tool changes how you do the work

the tool helps you to do

Writing software changes your understanding

of what computers/software can do

Putting it all together

“All work and no play…”

Greatest productivity occurs in the first four

to six hours

Continuous work reduces cognitive function 25%

for every 24 hours!

“Why Crunch Modes Doesn't Work: Six Lessons”, Evan Robinson

http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons

Putting it all together

Why Software Carpentry is as it is

http://software-carpentry.org/4_0/softeng/ebse

Putting it all together

Iterative development does not just

apply to software!

Putting it all together

Iterative development does not just

apply to software!

so

what do you think of this course?

Putting it all together

Pair programming

Test-driven development

Version control

Iteration and release

Continuous integration

Putting it all together

What next?

• Online follow-ups

• You’ll be notified by e-mail

• Online lectures

• http://software-carpentry.org

• Recommended books

• http://software-carpentry.org/4_0/reading