Course Homepage: http://www.eecs.umich.edu/~aprakash/eecs282/
This is a highly-interactive software design and programming class that builds on the basic programming skills that you should have acquired from an earlier programming course, such as EECS 182, 183, or Engin 101. A common thread in this course is on problem solving techniques and how to manage and analyze large datasets programmatically. You will learn object-oriented design techniques to help achieve modular systems design, software testing techniques for robust software, use of data structures such as arrays, stacks, queues, and trees to help search and sort large datasets efficiently, asymptotic complexity analysis of programs to help assess algorithm efficiency, and the use of SQL and JDBC to store and access large datasets in databases.
The best way to learn software design and programming is to do hands-on work. To facilitate that, the course has a 2-hour lab. Typically, students bring their own laptops to work on the assignments during the lab. The teaching staff will be there during the labs and often provide one-on-one help on the assignments.
The boundary between the lectures and the labs is fuzzy. We will often do hand-on work during the lectures as well to illustrate software design concepts.
As an example of types of assignments in this course, we have used datasets from the IMDB movie database and analyzed them in the course. One of the dataset files stores information on over one million movies or TV shows. Users of IMDB often do search queries, for example, find movies for a particular year, search for movies that contain a particular keyword, etc. The lab assignments explore performance tradeoffs among different possible design methods to answer such queries.
Downey, Allen. How to Think like a Computer Scientist: Java Version. 4th ed. Woodstock, N.Y.: SoHo, 2009. Available in PDF at: http://www.greenteapress.com/thinkapjava/ and for purchase in hardcopy for about $22.
Online free SQL tutorials. To be decided
Hunt, Andy, and Dave Thomas. Pragmatic Unit Testing in Java with JUnit. Raleigh, NC: Pragmatic Programmers, 2007. This is an inexpensive book (relatively). $21.86 at Amazon.
Slides/notes handouts from the lectures: Generally made available via the web.
Free Java Tutorials by Sun.
Any book on Java would do if you want an additional reference. Here are two popular books. Look for books that use Java 1.5 or later.
Deitel, Paul J., and Harvey M. Deitel. Java: How to Program. 7th ed. New Delhi: Prentice-Hall of India, 2008. About $106 at Amazon. OR
Sierra, Kathy, and Bert Bates. Head First Java. 2nd ed. Sebastopol, CA: O'Reilly, 2005. About $30 at Amazon.
The current syllabus is available from the Course Website.