CMPU 203: Software Design and Implementation

Spring 2018 Sameer Pradhan

Google Classroom

Quick Facts

When
Class— Mondays and Wednesdays at 12:00-1:15 p.m.
Lab— Tuesdays at 6:00-8:00 p.m.
Where
New England NE-206 [Lecture]
Sanders Physics SP-309 [Lab]
Website
https://www.cs.vassar.edu/​~sameerpradhan/courses/spring-2018/cmpu-203/
Textbook
We will draw from various books for this course. There are a few books that are recommended reading. Details further below.


Course Objective

This course will help you develop techniques for design and implementation of complex software systems. We will cover advanced techniques in object-oriented modeling, design patterns, inheritance, parametric polymorphism, generic algorithms, containers, iterators, function objects and storage management, with a focus on collaborative software development. The course uses Java programming language and make extensive use of git for version control via GitHub, and maven for automated build, dependency management and versioning. Development of a software system of significant complexity is required. A weekly laboratory period provides guided hands-on experience.



Logistics

Instructor
Sameer Pradhan (sameerpradhan@vassar.edu)
Office: Sanders Classroom 003
Office Hours: Tuesdays from 2:004:00 pm. Or, in person or Google Hangouts by appointment.
Coaches
Rafi Khaled (rkhaled@vassar.edu)
Where: Sanders Physics—Either the Asprey Lab on the third floor
When: Tuesdays and Thursdays from 12:002:00 pm., Or by appointment
Annie Hsu (anhsu@vassar.edu)
Where: Sanders Physics—Either the Asprey Lab on the third floor, or the CS Lounge on the first floor.
When: Tuesdays from 1:003:00 pm.; Wednesdays from 2:454:45 pm.; Fridays from 10:0012:00 pm.
Class Time

Mondays and Wednesdays 12:00-1:15 pm in New England NE-206

Lab Time

Tuesdays 6:00-8:00 pm in Sanders Physics SP-309

Contacting me

If you have a question that is not confidential or personal, post it on the Google Classroom. Rresponses tend to be quicker and have a wider audience. To contact me directly, I strongly encourage you to come to office hours. If that is not possible, you can also email (non-technical questions only) to the course mailing list, TBD. If you have a matter to be discussed privately, please come to office hours, or make an appointment with me. You can also send me message on Google Hangout. That is the fastest way to reach me. For grading questions, please talk to me after class or during office hours.

Announcements will be send to the class mailing list. Please read these messages.

If you do send me an email, I would appreciate if you address me as Prof. Pradhan

Honor Code

Since we occasionally reuse homeworks that were previously assigned, and the fact that one can search for similar problems online, we expect students not to copy, refer to, or look at the solutions in preparing their answers. It is an honor code violation to intentionally refer to a previous year's solutions. This applies both to the official solutions and to solutions that you or someone else may have written up in a previous year. It is also an honor code violation to find some way to look at the test set or interfere in any way with programming assignment scoring or tampering with the submit script.

Since quizzes are a form of assessment, students are not allowed to collaborate on completing quizzes. It is an honor code violation to discuss quiz questions with other students.

In signing the matriculation pledge at Vassar, you have assumed the responsibility for the integrity of your academic work. Please follow the pamphlet "Originality and Attribution: A Guide for Student Writers at Vassar College." which contains detailed discussions of the requirements of academic honesty.

Textbooks
  • There are no required textbook, but I will expect you to know the material listed above, drawn from the textbooks and other readings. The material in the readings will be tested on the final exam. Different people may learn better from different combinations reading the chapters, doing the assigned exercises, and attending class and participating in class discussions. The best-prepared students who do the best on the final exams tend to do all three. But I won't take roll for lectures and attendance is up to you.
    • Software Engineering: Principles and Practice 3rd Edition by
    • Head First Java Second Edition by Kathy Sierra and Bert Bates
    • Java Precisely Third Edition by Peter Sestoft
    • JUnit in ActionSecond Edition by Petar Tahchiev, Felipe Leme, Vincent Massol, and Gary Gregory
    • Head First Design Patterns First Edition by Eric Freeman and Elisabeth Freeman, with Kathy Sierra and Bert Bates

Prerequisites

CMPU 102



Required Work

Lectures

Attendence is highly recommended in all classe. Although a significant portion of what I will cover in class is available in textbooks, the number of potential texts that cover is far more than the ones listed in the syllabus. Also, depending on student participation and interests, we might cover topics and have discussions which could have a bearing on the questions in the exams.

Class Participation

Extra credits would be given for students participation in the classroom. Students can also participate by providing helpful answers on the class forum, helping out other students in office hours, etc.

Assignments

There will be roughly 5 assignments throughout the semester.

Programming Assignment Collaboration: You may talk to anybody you want about the assignments and bounce ideas off each other. But you must write the actual programs yourself.

Late homeworks

You have 3 free late (calendar) days to use on each programming assignment. Once late days are exhausted, the assignment will be penalized 2% per late day. I am likely to assign individual extensions based on extenuating circumstances as long as you communicate with me in advance.

Readings

This class has a significant amount of textbook reading. Most weeks have around 30-60 pages worth of content (as it varies by the type of book). The homeworks and exams will be based heavily on the readings.

Exams:

We will be two exams and a final project. Details below.

Final grade
  • 40% Labwork and Homework
  • 10% Pre-spring break exam
  • 20% Mid-term exam
  • 30% Final Project