Understand some notions about fundamentals of basic algorithms, like are for instance greedy algorithms, binary search, sorting and dynamical programming, with the final purpose of understanding the main characteristics of the programming problems. Get basic knowledge on advantages and disadvantages of various data structures so that the students can cave an educated choice about their best data structure for their future applications. Get knowledge on the most important sorting algorithms so that the applications will perform efficiently.