Theoretical design and analysis of computer algorithms may be supplemented by small amounts of programming.
The central goal of this course is for students to gain basic skills in designing and implementing efficient and effective computer programs. The course begins by developing models and mathematical tools for measuring the efficiency of algorithms. Then students are introduced to a variety of useful data structures and to algorithms for a variety of fundamental problems. Finally, the course will provide an introduction to classification of computational problems into different complexity classes. The course will include a small amount of actual programming in addition to theoretical analysis.
The ability to design and analyze efficient algorithms; understanding of the necessary models and mathematical tools; understanding of a variety of useful data structures and fundamental algorithms; exposure to the classification of computational problems into different complexity classes.