This course is the continuation of CSIS 293. Students will concentrate more on the Java techniques available for the development of large, complex systems. Students will utilize the concepts of Abstract Data Type to analyze real world requirements and design class structures to meet those requirements. In particular, students will apply these skills to the understanding and use of Data Structures. The course will progress from arrays, to linear lists, to stacks, queues, deques, and trees. Big-Oh notation will be introduced and used for the analysis and comparison of algorithms to perform sorting and searching of the structures. Students will become familiar with design techniques and tools (such as UML) necessary to develop larger programs. Instruction will also focus on object oriented programming and its principles of polymorphism, encapsulation, inheritance, collection classes and iteration protocals. Recursion and recursive data searching techniques will also be utilized in the creation of efficient, optimized algorithms. (C-ID COMP 132) (CSU/UC)