MSU MastheadMSU Masthead

CSE 335: Object-Oriented Software Development
Course Syllabus

Spring Term, 2022

Course Information

This course will introduce students to the development of object-oriented software with emphasis on design concerns that dominate the development of such software. These concerns include reliability, reusability, maintainability, and ease of extension and contraction. Students will learn how to use object-oriented design techniques to address these concerns. The course emphasizes explicit modeling and critical analysis of designs prior to implementation. Students will learn heuristic methods to design for integration and changes in requirements.

This course focuses on implementation techniques, analysis and design heuristics, and best practices that have proved useful in making the software-development process rigorous, systematic, repeatable, and manageable. Students will be introduced to current methods, which they will apply to programming and design projects.

This course is primarily about design, which is very difficult to learn by reading a book or cramming for a test. Design problems involve choices and tradeoffs, and often there is no single "right" answer. The instructor's role in such a course is to set up an environment that will help students to confront and appreciate difficult design issues and to provide critical and continual feedback to students on their choices. It is the student's responsibility to actively participate in this environment and to reflect and respond to the issues that are discussed.

Course Objectives:                  

Instructors:Matthew Rupp

Office: 3501 Engineering Building

Office Hours: See the course web site.


Charles B. Owen

Office: 3134 Engineering Building

Phone: 353-6488

Office Hours: See the course web site.


This is an online course and this is the course web site. All course information will be posted on the course web site. This course does not use desire2learn.

The contents of the course require a login using a CSE department id and password. If you are a new CSE student and are unable to access the secure site, please follow the instructions on the department facilities page for Logging in for the first time. If you continue to have difficulty accessing the site, please contact

Course Staff:See the course website for teaching assistants, learning assistants, and all course help office hours. This course is an online course. A TA or learning assistant will be available during specified lab times and/or via Zoom for student help.

Textbooks: Object-Oriented Modeling and Design with UML (Second Edition) by Blaha and Rumbaugh, Pearson/Prentice-Hall, 2004. ISBN-13: 978-0130159205.

Design Patterns: Elements of Reusable Object-oriented Software by Gamma, Helm, Johnson, and Vlissides, Addison Wesley, 1994. ISBN-13: 978-0201633610

Important Dates: See the online calendar on the class web site home page for all important dates. The course schedule is subject to change with appropriate notice.

Semester starts: Monday, 1/10/2022

Classes start: Monday, 1/10/2022

Last date to drop with no grade reported: Wednesday, 3/2/2022

Computing: This course will utilize specific software tools. Details can be found on the course web site.

An Internet connection is required to complete online assignments and access the course website (DSL, LAN, or cable connection desirable).

Administrative Drops: As per the University Attendance Policy, students who do not submit multiple assignments may be dropped from the course. In particular, it is the policy of this course that students who fail to submit multiple assignments prior to the selection of teams for Project 1 will be dropped from the course.

Contingency Plans:In the case of connectivity issues particularly during exams, please contact either of the instructors.

Privacy: Electronic conversation via email, bulletin boards, or any of the Interact! features, is different from verbal communication because it retains the identity of the participant. In this course, all participants will have access to a list of names and e-mail addresses of other course participants. Participants in the course will be able to send bulk e-mail to all other participants.


Exams: There will be one final exam. Details can be found on the course web site.

Step Assignments: Many weeks there will be a tutorial/programming assignment that must be completed during that week.  All step assignments are due when indicated on the class home page.

Design Assignments: Many weeks will include a design assignment that must be completed during that week.


Two programming projects will be assigned during the course of the term.  Project 1 will be a team project. Some additional assignments may include team components.

Penalty Grades:If you fail to turn in a significant effort on any step or design assignment tasks, that assignment will be assigned a grade of negative 100%. A significant effort is defined as at least 10% of the work required for the assignment and the task. Failing to submit tasks for Design or Step assignments will result in application of the penalty grade.

If you are declared a non-participant on Project 1, you will be assigned a grade of -100% for that project.

Grading: On the course web site, click the link Grades in Site Tools and Resources to see the elements of the course grade and your current grade at any time.

The grading categories for this course and their contribution to the final grade:

  • 20%: Design Assignments
  • 30%: Step Assignments
  • 35%: Projects
  • 15%: Final Exam

To be eligible to earn a non-zero grade in the course, a student must do all the following:

  • Earn at least 50% of the total points available for Design Assignments
  • Earn at least 50% of the total points available for Step Assignments
  • Earn at least 50% of the total points available for Project 2 -or- Earn at least 50% of the total points available for Project 2 Part 2 (Implementatiuon)

Final grades for students who achieve the course minimum requirements are based on this scale:

  • 90%+: 4.0
  • 85%: 3.5
  • 80%: 3.0
  • 75%: 2.5
  • 70%: 2.0
  • 65%: 1.5
  • 60%: 1.0
  • <60%: 0.0

Grades are rounded to the nearest integer. Therefore, a grade of 89.5 will round to 90 and result in a grade of 4.0. A grade of 89.45 will round down to 89 and result in a grade of 3.5.

If a student wishes to question any grade, they must contact the TA first to discuss the issue. The grading page has a link to the appropriate contact for grading questions. If the problem cannot be resolved after consultation with the TAs, the TAs will forward a summary of the problem to the instructor (with an e-mail copy to the student).

Course Topics

  • Inheritance
  • Polymorphism
  • Professional C++ Coding
  • C++ Debugging Techniques
  • UML Class Modeling
  • Factory classes and patterns
  • Design Patterns
  • Visitor Pattern
  • Adapter Pattern
  • Observer Pattern
  • Composite Pattern
  • Iterator Pattern
  • Tools
  • Memory Management
  • Unit testing
  • Test-driven development
  • CRC Cards
  • Interfaces
  • Problem Solving and Defensive Programming
  • Software Engineering Basics
  • Ethics and Professionalism

Additional Information

Academic Integrity: This course has adopted the Chegg and Similar Sites policy. Submission of student work (e.g. assignments and/or exam solutions) based on those found on Chegg, Brainly, Quizlet, and other similar websites will result in an Academic Dishonesty Report (ADR) and an automatic failing grade of zero (0.0) for the course. The ADR for students personally posting questions from assignments or exams to these sites will request additional sanctions.

The Spartan Code of Honor states, "As a Spartan, I will strive to uphold values of the highest ethical standard. I will practice honesty in my work, foster honesty in my peers, and take pride in knowing that honor is worth more than grades. I will carry these values beyond my time as a student at Michigan State University, continuing the endeavor to build personal integrity in all that I do." In addition, Article 2.III.B.2 of the Student Rights and Responsibilites (SRR) states that "The student shares with the faculty the responsibility for maintaining the integrity of scholarship, grades, and professional standards." The (insert name of unit offering course) adheres to the policies on academic honesty as specified in General Student Regulations 1.0, Protection of Scholarship and Grades; the all-University Policy on Integrity of Scholarship and Grades; and Ordinance 17.00, Examinations. (See Spartan Life: Student Handbook and Resource Guide and/or the MSU Web site:

Therefore, unless authorized by your instructor, you are expected to complete all course assignments, including homework, lab work, quizzes, tests and exams, without assistance from any source. You are expected to develop original work for this course; therefore, you may not submit course work you completed for another course to satisfy the requirements for this course. Also, you are not authorized to use the Web site to complete any course work in this course. Students who violate MSU academic integrity rules may receive a penalty grade, including a failing grade on the assignment or in the course. Contact your instructor if you are unsure about the appropriateness of your course work. (See also the Academic Integrity webpage.)

That’s the university policy.  My specific policies are as follows: You may discuss individual assignments with other students, but the assignment must be entirely your own work.  Plagiarism just makes me mad! All work turned in must be your own.  If you borrow or adapt software from a textbook or from source code that is obviously public, you must treat this as a quotation or paraphrase, acknowledging the source in the heading or the program module. All incidents of academic dishonesty will be reported to the University System.

You may discuss assignments in general terms with your classmates, the course staff, or the instructor, but you are not permitted to receive solutions from others or to read or copy part or all of another person’s solution to a problem.

MOSSConsistent with MSU's efforts to enhance student learning, foster honesty, and maintain integrity in our academic processes, we have chosen to use a tool called MOSS (Measure of Software Similarity) to compare assignments with others submitted in the course.  The tool will compare each assignment you submit to other assignments submitted, providing links to possible matches and a 'similarity score.'  The tool does not determine whether academic dishonesty has occurred or not.  Instead, course staff will make a complete assessment and judge the originality of your work.  Submissions to this course may be checked using this tool.

Disabilities:Michigan State University is committed to providing equal opportunity for participation in all programs, services and activities. Requests for accommodations by persons with disabilities may be made by contacting the Resource Center for Persons with Disabilities at 517-884-RCPD or on the web at Once your eligibility for an accommodation has been determined, you will be issued a Verified Individual Services Accommodation ("VISA") form. Please arrange for this form to sent to the instructor at the start of the term and/or two weeks prior to the accommodation date (test, project, etc.). Requests received after this date may not be honored.

Commercialization: Commercialization of lecture notes and university-provided course materials is not permitted in this course.

Religious Holidays:You may make up course work missed to observe a major religious holiday only if you make arrangements in advance with the instructor.

Required Activities:To make up course work missed to participate in a required activity for another course or a university-sanctioned event, you must provide the instructor with adequate advanced notice and a written authorization from the faculty member of the other course or from a university administrator.

Disruptive Behavior:Article 2.3.5 of the Academic Freedom Report (AFR) for students at Michigan State University states that "The student's behavior in the classroom shall be conducive to the teaching and learning process for all concerned." Article 2.3.10 of the AFR states that "The student has a right to scholarly relationships with faculty based on mutual trust and civility." General Student Regulation 5.02 states that "no student shall . . . interfere with the functions and services of the University (for example, but not limited to, classes . . .) such that the function or service is obstructed or disrupted. Students whose conduct adversely affects the learning environment in this classroom may be subject to disciplinary action through the Student Faculty Judiciary process.