Course Syllabus, CSE331 Spring 2015

Logistics and Contact Information

See the main course webpage.

Goals and Prerequisites

The only formal prerequisite is CSE143. We will very much rely on a thorough understanding of the concepts from CSE143 as well as Java programming skills. We will go much further and you will be challenged to approach software development much differently than you have in CSE143 or other courses.

There is a level of programming maturity beyond introductory programming that comes from building larger systems and understanding how to specify them precisely, manage their complexity, and verify that they work as expected. After completing this course successfully students should be able to:

To gain experience we will use Java and associated tools like Eclipse, JUnit, JavaDoc, and Subversion, but the goal is to understand the underlying ideas and concepts that are widely applicable to software construction.

Overall Course Grade

Your overall grade will be determined as follows (subject to change as necessary, but change beyond parameters below is unlikely):

We will have approximately one assignment per week, but not on an exact schedule (i.e., assignments will not always be due on the same day). The assignments are not weighted equally because they are of different length and sophistication. The exact weighting is to-be-determined and is not likely to be published in advance (we need to see how the course goes). Later assignments are likely to be weighted more heavily because they are more involved.

Late Policy

Deadlines will be given with each assignment. These deadlines are strict. For the entire quarter, you may have four "late days." You are strongly advised to save them for emergencies. You may not use more than two for the same assignment. They must be used in 24-hour (integer) chunks. You must fill out a form on the course web-page to use late days.

Academic Integrity

Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are in a separate document. You are responsible for knowing the information in that document.


There are two required books for the course:

These books contain a great deal of distilled wisdom about software construction in general and Java best practices, technical details, and style issues. Reading about software development is an important skill.

There will be assigned readings from these books during the quarter, and you will be required to complete short online quizzes about the material.

Besides the two required books, a good Java programming book for reference is invaluable. Feel free to pick one that you like, but a good one is:


Approximate Topic List (Subject to Change)

We expect to cover the following, with an emphasis on specification and design. The order these are listed is only very rough as we will revisit some topics iteratively.

Valid CSS! Valid XHTML 1.1