Elements of Discrete Probability Theory, Recursive and Iterative Implementations, Analysis and Complexity of Algorithms, Sorting and Searching Algorithms