This is the second course in a two-semester sequence introducing fundamental concepts and techniques for computer science and engineering. The course focuses on problem analysis, advanced programming concepts using JAVA and fundamental data structures. Students learn to analyze problems and evaluate potential solutions with respect to choice of data structures and computational efficiency. Student are exposed to the underlying implementation of basic data structures available in JAVA libraries and develop the skilled needs to extend existing data structures and design new data structures to solve increasingly complex problems. This is an integrated writing course