課程概述 
1.Prerequisite
Computer programming, data structure, and algorithm design.
2.Outline
This course will focus on how to prepare a CS major student as a skilled computer programmer. There will be three major themes in this course  computer algorithm designs, data structure, and computer program implementation techniques.
The computer algorithm design will focus on various methodologies, including divideandconquer, dynamic programming, combinatorial optimization, graph theory and its applications, randomized and amortized algorithm analysis. These methodologies will be illustrated by examples from ACM online problem archive, so that the student can learn to solve realworld problem.
This course will also focus on advanced data structures. Several selfadjusting data structures, including splay trees and pointerjumping trees for unionandfind operation will be introduced. The introduction of these advanced data structures will facilitate the efficiency of computer programs, and provide useful tools for other related applications.
The computer implementation techniques will cover various disciplines in computer programming, including structure programming, programming style, debugging techniques, system tools utilization, and objectoriented programming. The goal of this training is that the students will be able to establish a solid foundation in expression what they want to implement, so that they could write code to realize the algorithms they learn from the first part of the course.
This course will be accompanied by weekly homework assignments, mainly from the ACM online problem archive, to give the students a handon experience on how to solve difficult problems with computers. Therefore, extensive understanding of C/C++ programming environment is required. The students will need to understand how to write program, so that they can combine the idea of algorithm design with solid implementation techniques to solve real problem correctly.
