Mais conteúdo relacionado Semelhante a Better Developers (20) Better Developers2. Introduction
As a Developer you are mainly in charge of conception:
Transform business functionalities into code.
Had to deal with pieces of messy code before?
© 2014 Mikaël DONIKIAN
2
4. Definition: developer
• The coder, the programmer
and the developer
• Tasks:
–
–
–
–
–
–
–
–
Write code
Spec documents
Configuration management
Code reviews
Testing
Automated tests
Documentation
Solving tough customer problems
© 2014 Mikaël DONIKIAN
4
5. Definition: Algorithm 1/2
• “An algorithm is a sequence of unambiguous instructions for
solving a problem”[1] As it is supposed to be followed with
pencil and paper. It is usually expressed in pseudo-code.
• Algorithm comes from Al-Khowarazmi the mathematician who
introduce around the year 825, the use of Hindu-Arabic
numerals.
• Some algorithm are intuitive as we can find them trough logical
thinking but the most complex ones need to be learned so they
can be used to improve the efficiency of problem solving.
[1]
A. Levitin, Introduction to The Design & Analysis of Algorithms , Addison-Wesley, 2003
© 2014 Mikaël DONIKIAN
5
6. Definition: Algorithm 2/2
• Programming is the process of writing programs in a
logical way. Programs are implementing algorithm.
• Despite programs, algorithm are finite.
© 2014 Mikaël DONIKIAN
6
7. Common Algorithms
• Shortest Path (Dijkstra,
Graph theory, Trees …)
• Binary Search
• Merge, Quick, Insertion &
Bubble Sort
•
•
•
•
Collections
Recursively
Concurrency
Graph theory (Trees…)
© 2014 Mikaël DONIKIAN
7
8. Complexity
• Runtime analysis of an algorithm
• Need to estimate the relative time cost of an
algorithm (efficiency)
• Big O notation: infinite approximation of
infinite growth of a particular function in
infinite asymptotic notation.
© 2014 Mikaël DONIKIAN
8
9. Complexity - Example
• Given T(n) = 4n2 − 2n + 2
• As n grow large the term n2 will dominate
therefore T(n)=O(n2)
© 2014 Mikaël DONIKIAN
9
10. Complexity - order of growth
Notation
Name
O(1)
Constant
O(log n)
Logarithmic
O(n)
Linear
O(n log n)
Linearithmic
O(n2)
Quadratic
O(nc), c >1
Polynomial
O(cn), c >1
Exponential
O(n!)
Factorial
Big O cheat sheet can be found here: http://bigocheatsheet.com/
© 2014 Mikaël DONIKIAN
10
11. Fibonacci Algorithm
• Fn = Fn-1 + Fn-2
with seed value
F0=0 and F1=1
• This is a recursive algorithm
def fib(n):
if n==0: return 0
elif n==1 return 1
Else return (fib(n-1)+fib(n-2))
© 2014 Mikaël DONIKIAN
11
12. Bubble sort
• Complexity O(n2)
• This algorithm is not the best when “n” is very
large
• It compares in a list each pair of adjacent items
and swap them if they are not in the right order.
Every iteration, the last value is considered
sorted and then the number of values checked
is decreased by one.
© 2014 Mikaël DONIKIAN
12
13. Questions & Answers
N.B. Algorithms are used everywhere and very early
in biology to simulate the process of natural
selection.
© 2014 Mikaël DONIKIAN
13
14. References
•
•
•
•
•
•
•
•
•
•
•
Donald E. Knuth, “The Art of Computer Programming Vol.1 Fundamental
Algorithms”, Addison Wesley, (3rd Ed.) 1997
http://www.software.ac.uk/blog/2011-04-14-coder-programmer-or-softwaredeveloper-spot-difference
http://www.ericsink.com/No_Programmers.html
Robert C. Martin, ‘’Clean Code’’, Pearson, 2009
http://www.topcoder.com/tc?d1=tutorials&d2=alg_index&module=Static
http://www.cut-the-knot.org/WhatIs/WhatIsAlgorithm.shtml
http://www.matrixlab-examples.com/algorithm-examples.html
http://www.quora.com/Programming-Interviews/What-are-fundamentals-youshould-know-before-a-technical-interview
http://www.careercampus.net/resources/programming_fundas.htm
http://en.wikipedia.org/wiki/Big_O_notation
http://en.wikipedia.org/wiki/Analysis_of_algorithms
© 2014 Mikaël DONIKIAN
14