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

Slides:



Advertisements
Similar presentations
Branching, Switching and tagging Francesco Furfari CNR-ISTI Italy.
Advertisements

CS0004: Introduction to Programming Visual Studio 2010 and Controls.
Introducing SysAid 5.1 New Features. 12/ 2 Content New Knowledgebase and FAQ abilities Improved Search Additional protocols Improved history and.
Learning and Teaching Conference 2012 Skill integration for students through in-class feedback and continuous assessment. Konstantinos Dimopoulos City.
Lesson 6 Software and Hardware Interaction
Chapter 15: System Modeling with UML
Slide 1 Systems Analysis & Design CS183 Spring Semester 2008 Dr. Jonathan Y. Clark Course Website:
CSC 395 – Software Engineering Lecture 25: SCM –or– Expecting Change From Everything But Vending Machines.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Russell Taylor Lecturer in Computing & Business Studies.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
1 Object Oriented Programming Computer Systems Engineering (D2) and Programming (P)
1 Software Maintenance and Evolution CSSE 575: Session 8, Part 2 Analyzing Software Repositories Steve Chenoweth Office Phone: (812) Cell: (937)
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Pointers to more effective software & data in audio research Mark D Plumbley, Chris Cannam, Steve Welburn Centre for Digital Music Queen Mary, University.
AgileCamp Presents: Agile Software Development. Good luck in your presentation! This slide deck has been shared by AgileCamp Kit under the Creative Commons.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Lesson 7 Guide for Software Design Description (SDD)
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Chapter 2 The process Process, Methods, and Tools
May 14, 2001E. Gallas/Trigger Database1 Status of the Trigger Database Elizabeth Gallas, Rich Wellner, Vicky White Fermilab - Computing Division See my.
The DSpace Course Module – An introduction to DSpace.
Subversion, an Open Source Version Control System An Introduction.
Defining Digital Forensic Examination & Analysis Tools Brian Carrier.
The Pipeline Processing Framework LSST Applications Meeting IPAC Feb. 19, 2008 Raymond Plante National Center for Supercomputing Applications.
CSCA48 Course Summary.
1 Lecture 19 Configuration Management Software Engineering.
Chapter 1 In-lab Quiz Next week
CPSC 2150 August 21, Chapter 1 Object Oriented Software Development This is an introductory course In this chapter we will look at 3 topics Challenges.
Version Control. What is it? Software to help keep track of changes made to files Tracks the history of your work Helps you collaborate with others.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
An Agile Method for E-Service Composition Author : Pouya Fatehi, Seyyed Mohsen Hashemi Department of Computer Software, Science and Research Branch, Islamic.
Informatics 43 – May 14, Open Source Source code is freely available and (usually) re-distributable Examples: Firefox web browser Apache HTTP Server.
Fundamentals of Algorithms MCS - 2 Lecture # 15. Bubble Sort.
Advanced Algorithms Analysis and Design Lecture 6 (Continuation of 5 th Lecture) By Engr Huma Ayub Vine 1.
Lesson 1 Operating Systems, Part 1. Objectives Describe and list different operating systems Understand file extensions Manage files and folders.
Software Waterfall Life Cycle
Cole David Ronnie Julio. Introduction Globus is A community of users and developers who collaborate on the use and development of open source software,
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Collections Data structures in Java. OBJECTIVE “ WHEN TO USE WHICH DATA STRUCTURE ” D e b u g.
Announcements: Project 5 Everything we have been learning thus far will enable us to solve interesting problems Project 5 will focus on applying the skills.
Community Codes Free and shared resource Ongoing distributed development by both research and operational communities – Maintained under version control.
Extraction Tools and Relational Database Schemas for CVS, SVN, and Bazaar Revision Control Systems.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Version Control and SVN ECE 297. Why Do We Need Version Control?
Refactoring and Integration Testing or Strategy, introduced reliably by TDD The power of automated tests.
Principles of Imperative Computation Lecture 1 January 15 th, 2012.
Sorting  Selection Sort  Bubble Sort  Insertion Sort  Merge Sort (chap. 14)  Quick Sort (chap. 14)  Heap Sort (chap. 9)
1 Lesson 6 Software and Hardware Interaction Computer Literacy BASICS: A Comprehensive Guide to IC 3, 3 rd Edition Morrison / Wells.
By: Lacey Williams. Introduction Troubles in CS education Lack of comprehension of the basics Seen in first-year CS students Are there long-term effects?
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
CSC 222: Object-Oriented Programming
Chapter 7: Software Engineering
Program Design Invasion Percolation: Aliasing
A Simple Introduction to Git: a distributed version-control system
Warmup What is an abstract class?
Software Maintenance Main issues: why maintenance is such an issue
Principles of Imperative Computation
Coupling Interaction: It occurs due to methods of a class invoking methods of other classes. Component Coupling: refers to interaction between two classes.
Lecture 13 Teamwork Bryan Burlingame 1 May 2019.
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
1. GitHub.
Presentation transcript:

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