A study of algorithm development to solve more complex problems, the analysis of more complicated programs as well as the modification of the programs. Main topics include string processing, searching and sorting algorithms, and abstract data types such as linked list, stack, and queue. The course also include the study of a second high level language which will be widely used in the further courses by emphasizing the characteristics on the structured and object-oriented programming. Students will learn to apply the basic data structures and algorithms to solve various complicated problems.