Mastery of college algebra. Introductory Java programming in CS 110.
Upon successful completion of this course, students will be able to design and implement classes in Java using object oriented programming, generics, interfaces, inheritance, polymorphism, and encapsulation; will understand the goals and principles of software engineering and be able to demonstrate those skills in their work; will be able to design and implement recursive solutions and abstract data types such as stacks, queues, lists, and trees; and will be able to analyze and compare the efficiency of different algorithms and different implementations of abstract data types.
The optional text is Data Structures: Abstraction and Design Using Java 3rd Edition
ISBN 978-1-119-18652-6 by Koffman and Wolfgang for reading and reference.