This is not an introductory course in programming. This is a fast-paced college level course in computer science. Student must demonstrate understanding of the fundamentals of Java programming covered in Introduction to Java Programming in order to be successful in this course. This course continues where introduction to Java Programming ends. Students will be given a diagnostic test at the start of the course to check their proficiency in Java programming. The programs written in this course will be understandable, adaptable, and, when appropriate, reusable. This course covers other important aspects of computer science, including the development and analysis of algorithms, the development and use of fundamental data structures, the study of standard algorithms and typical applications, and the use of logic and formal methods.