1. Prerequisites
This course expects that you have successfully completed CSE 8B or CSE 11 at UCSD. We assume comfort and skill with basic Java programming, including using and creating objects, drawing memory models, developing and programming algorithms to manipulate strings, arrays, and numerical data, writing programs that read and write from and to files and building small to moderate size Java programs using the Java API as a reference.
If you have completed a rigorous introductory class in another object-oriented language (e.g. C++), you are probably OK to take this course, but you must learn the basics of Java on your own BEFORE this course begins. If you have taken an introductory course in a different language (Python, C), we recommend you take CSE 11 before this course.
2. Critical information, at a glance
You should read this entire syllabus. It is important. It may be the most important thing you read for this course. But here are the pieces of information you absolutely do not want to forget. I don't mean for this to sound scary, but so many students fail to read or understand these points, so I want to make them as clear as possible.
In this course, you will continue to develop your sophistication as a programmer by learning to write larger-scale programs that use and manage data efficiently and correctly. You will learn several basic ways of storing data (data structures), how to analyze your programs and your data structures, and how to use abstraction appropriately to create efficient, correct and reusable programs.
This course is more challenging than CSE 8B and CSE 11 in that your projects will be slightly larger, you will be expected to do more of the design (and analysis) on your own, and you will be given more freedom in your implementations. However, we expect that everyone who has succeeded in CSE 8B or CSE 11 can succeed in this course too.
Here are some detailed topics
We assign reading from the book as well as some in session exercises.