Builds on the fundamental programming concepts introduced in ATLS 1300. Students will learn to write sophisticated programs that employ efficient means of representing and manipulating information. They will learn to analyze algorithms in terms of complexity, gain an understanding of fundamental data structures (lists, stacks, queues, trees), and acquire practical experience implementing algorithms to solve common problems (sorting, graph traversal).