CSE 331 Summer 2018 Syllabus

CSE 331 Summer 2018

Syllabus


Logistics and Contact Information

See the main course web site for information about the course, including meeting times, staff, office hours, communications, etc.

Goals

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 git, but the goal is to understand the underlying ideas and concepts that are widely applicable to software construction.

Prerequisites

The only formal prerequisite is CSE 143. We will very much rely on a thorough understanding of the concepts from CSE 143 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 CSE 143 or other courses.

Grading and Exams

Your overall grade will be determined as follows (subject to change as necessary, but substantial changes to the numbers below are unlikely):

There is approximately one assignment per week, but not on an exact schedule (i.e., assignments may be due on different days). 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.

The midterm and final exams will take place during normal lecture hours.

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. Assignments will not be accepted for credit after late days have expired. You are responsible for understanding this policy if you choose to submit late work.

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.

Texts

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 from time to time about the readings.

Besides the two required books, a good Java programming book for reference may be valuable. Feel free to pick one that you like, but two good ones are:

Besides books, it is very valuable to know your way around the online Java library documentation.

Advice

Approximate Topics (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.