(Taken from the UC Berkeley Course Guide)
Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language.
CS 61A, CS 88, or E 7
3 hours of lecture, 1 hour of discussion, and 2 hours of laboratory per week.