Prerequisite: CS 115 with a grade C or better. A study of advanced programming topics with logical structures of data, their physical representation, design and analysis of computer algorithms operating on the structures, and techniques for program development and debugging. Course covers program specifications, correctness and efficiency, data abstraction, basic aspects of simple data structures, internal searching and sorting, recursion and string processing. Algorithmic analysis is also discussed. Students receiving degree credit for CS 116 cannot receive degree credit for CS 505 or CS 114.