Copyright © Software Carpentry 2012 This work is licensed under the Creative Commons Attribution License See for more information. 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 Red Green Refactor 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/or code 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 data 1,684,108, e+22
Putting it all together Programming is about creating and composing abstractions Meaningful 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(n 2 ) … O(n 2 ) Quick sort: O(n log n) … O(n 2 ) 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(n 2 ) … O(n 2 ) O(1) Quick sort: O(n log n) … O(n 2 ) 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(n 2 ) … O(n 2 ) O(1) Quick sort: O(n log n) … O(n 2 ) 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
Putting it all together Why Software Carpentry is as it is
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 Online lectures Recommended books