This course presents a group of elementary and advanced Algorithms and Programming Techniques. It is the result of my own experience as a trainer in the field of Competitive Programming, teacher, author and (many times) competitor. It is based on the most important theoretical issues and knowledge a student should master. The topics that are discussed stretch from Recursion and its different peculiar applications (Backtracking, Divide and Conquer) to the Branch and Bound method. The course has two different lessons dedicated to the Dynamic Programming Technique, due to the importance this method has.
The course contains many well known problems, presents their solutions in a comprehensible way and offers C++ solutions. A clear purpose and objective that the author had in mind was to have neat statements, proper examples, efficient solutions, easy to understand C++ programs. I suppose that the students already have some elementary background in the C++ language, some experience with STL data structures and implemented methods, CodeBlocks Integrated Development Environment, Online Judges .
Each lesson is followed by some quizzes.
The students are advised to try to implement on their own the C++ programs for the problems they encounter in the lessons.
Every time when it was possible, I used some pictures, animations, free templates offered by different sites.
I hope you will enjoy and appreciate this course.