Sudipto Ghosh
Office: 468 CS Building
Office Hours: TBD
Mohammed Al-Refai
Office: CSB 120 lab
Office Hours: Mon and Fri, 9-11 AM
Lecture Time and Place:
1:00-1:50 PM, MWF, CSB 130

The objective of the course is to provide students with a working knowledge of the underlying foundations of object-oriented design and analysis and the current state of practice. Object-oriented analysis involves developing conceptual models of the problem domain of a software product. Object-oriented design involves developing models of the software solution to the problem clarified during analysis, and constructing programs that implement the design models. A fundamental objective of the course is for students to learn to think in terms of objects, so that they can identify the objects in a system and assign responsibilities to system components.

During the course, students will learn to analyze problems and develop conceptual models, generate designs from the models, and write program code that implements the designs. Students will also learn to evaluate and improve object-oriented models and code. They will use the Unified Modeling Language (UML) to develop object models, and Java to implement the designs. The course will also introduce some facets from agile programming: very short software build cycles, and test-first programming.

The topics covered in this course are listed below (subject to change, not in exact order, as time permits):
  • Java coding style and idioms.
  • Object-oriented analysis and design.
  • Problem analysis.
  • Conceptual modeling.
  • System behavior modeling.
  • Software architecture.
  • Design modeling.
  • Design patterns.
  • Design principles.
  • Refactoring.


  • This is not an introductory course on Java programming. Students must have experience in programming and debugging object-oriented software (e.g., Java and C++). Programming exercises in CS414 use Java. Our department uses Java in many courses (CS160, CS161, CS200, CS314, etc), so students are expected to be proficient in Java programming.

  • Students are expected to know the basics of software engineering as taught in an undergraduate course using a text such as

    • Lethbridge and Laganiere, "Object-Oriented Software Engineering: Practical software development using UML and Java"
    • Pressman, "Software Engineering: A Practitioners Approach"
    • Somerville, "Software Engineering"

  • A good understanding of discrete math and logic including first-order predicate calculus is expected (CS 166), and data structures (CS 200). CS 200 and CS 253 are prerequisites to CS 314 which is a prerequisite to this course.

Communication with instructor and GTA

You must have a Colorado State University eIdentity (eID), before you can be installed into the CS414 Canvas courseware system. The CS414 Canvas page will have all of the course notes, assignments, discussions, and exams, so it is very important for you to be installed on this system. Visit the eIdentity and eServices web page to get your eID. You will not be able to take part in the course until you have an eID.

Once the semester starts, communication with the instructors must be done by emailing us at Before the semester starts, you can send email directly to Prof. Ghosh.

All queries to the instructors should be sent by email to or posted only on appropriately named discussion groups in Canvas. Queries posted on any other discussion group will not be monitored.

The first day of class is Wednesday, January 17. Be ready to start then. Go to the Progress page to view the weekly schedule. The on-campus class meets on Mondays, Wednesdays, and Fridays. Since we will make video recordings of the on-campus lectures for the benefit of the distance students, on-campus students will also have access to them. However, on-campus students are expected to attend lectures. There is a grade for class participation.


  • Required texts:

    • None

  • iClicker (only for on-campus students, sections 001 and 301):

    • You must register your iClicker on Canvas in the CS414 course. DO NOT register your iClicker on any other website (e.g.,; it does not help sync your iClicker data and course registration data on Canvas.

    • To register your iClicker on Canvas, use the Canvas tab on the course web page. Log in to Canvas, select CS414 as your course, and then use the iClicker menu to register your iClicker. In the iClicker ID field, enter your remote ID and select the Register button. The remote ID is the number found on the back of your iClicker remote. If you cannot read the ID on your iClicker, there is a kiosk in the bookstore where you can retrieve it.

  • Lecture slides:

    • Video recordings of lectures will be available via Canvas.
    • Powerpoint slides will be available on Canvas under Modules->Slides.
    • Handouts regarding getting accounts, using specific tools and environments, etc, will be available on the Resources webpage.

  • Minimal equipment and resources required:

    Students must have adequate computing resources able to do the following:

    • Access the class Canvas page. Students must use a browser installed on their computer that is compatible with Canvas. Browsers are generally available for free.

    • Create, compile, and run Java programs. Any up to date personal computer or workstation should be adequate for Java development. The Java Development Environment is available for free on the internet. Students typically use the Eclipse IDE.

    • Create and edit UML diagrams. Various object modeling tools are available. Students may use any drawing tool that can construct the required UML diagrams. They may hand draw their diagrams (if they can do so legibly) and scan them in order to submit them electronically.

    • The instructor will make private GitHub repositories available to each team. These must be used appropriately.


Here are the formally graded elements of the course and associated weighting:

Activity Weight
Class participation 10 %
Assignments 40 %
Projects 30 %
Final exam (take home) 20 %

Final letter grades will be based on the relative distribution of total scores and not on any preset numerical grade.

  1. Class participation will be determined in different ways for students in distance (801) and on-campus (001 and 301) sections.

    Since distance students are not physically attending class, their participation will be based on Canvas quizzes (5%) and Canvas discussions (5%). Each Canvas quiz except for the first one will allow three attempts and the highest score will be automatically recorded. The first Canvas quiz will be graded by the instructor and only one attempt will be allowed.

    Active participation is required in the discussion assignments for full credit. While specific instructions will be given for each discussion assignment, in general, we expect each student to make an initial posting for each assignment, followed by responses to other students' postings. Merely having one sentence that says, for example, "I agree with everyone", is not enough to get a grade.

    For on-campus students, there will be unannounced iClicker quizzes and in-class paper quizzes. They are also strongly encouraged to ask questions in class and actively participate in class discussions.

  2. Assignments will involve individual work that requires modeling and/or programming. Each assignment needs to be turned in electronically via Canvas by 11:59 pm on the due date.

  3. The project will involve iterative development with code due several times during the semester. As part of the project there will be also be a requirement to develop requirements and design models. On-campus team members will present various aspects of their project (e.g., requirements, designs and design decisions, demo) in class. On-campus students will work in teams of 4. Distance students have a choice to work in a team or individually. Github must be used for the project. Individuals within the same team will not necessarily get the same grade. The individual grade depends on the level and quality of participation, as determined from GitHub logs and interviews during project demos or other sources of information.

  4. There is one exam, which is a "take-home" final exam. Students can expect to get about six days to write their answers. The final exam is assigned in the last week of lectures and is due during finals week. Exact dates will be announced later.


  • Class participation:
    1. Canvas quizzes may not be taken or submitted after the due date.

    2. Canvas discussions submitted after the due date will get no points.

    3. There will be no makeups scheduled for missed iClicker and in-class quizzes. To allow for occasional absences for any reason, quiz grades will be computed such that you will be able to obtain a full score even if you missed 10% of the class sessions.

  • Assignments and projects:
    1. We will be glad to re-grade the same submission if you feel that there was a mistake in grading. Contact us within 4 calendar days for a re-grade. Work will be re-graded in its entirety, and may result in an increase, decrease, or no change in the grade. Note that, once we have graded an assignment, we will not allow you to re-do and re-submit it for grading.

    2. Late assignments and projects will not be accepted without prior permission. If you cannot finish the work by the deadline, contact the instructor as soon as possible. Extensions will be granted on a case-by-case basis and are more likely when permission is sought in advance, for reasons which are unexpected and beyond your control, and which involve only a short extension. The instructors reserve the right to assign a score penalty to the late work, depending on the circumstances and degree of lateness. Late penalties for assignments and projects are as follows:

      • Up to 12 hours late: 10% penalty
      • 12 to 24 hours late: 25% penalty
      • 24 to 48 hours late: 50% penalty
      • More than 48 hours late: No credit

      Note that the percentages refer to the total points available for the deliverable, not the points that you have received. That is, if an assignment is worth 100 points, and you get 76 and are 7 hours late, you will receive 66 points.

  • Final exam
    1. If you miss an exam, you receive a score of zero.

    2. Students must consult with the instructor as soon as possible in case there are extraordinary circumstances.

Professional Conduct

All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you are familiar with the policies in the student information sheet for the department and the department conduct code. Additionally, you are computing professionals, albeit perhaps just starting. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.

This course will adhere to the CSU Academic Integrity Policy as found in the Student Conduct Code. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.

Students not already familiar with the CSU Honor Pledge should review this clear and simple pledge and always adhere to it. Academic dishonesty will be dealt with severely. The first instance of cheating will result in negative credit. The second instance will result in a failing grade and other penalties dictated by departmental and university policies.

We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:

  • Please turn off the ring on your cell phone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that an electronic device is becoming a distraction the student may be asked to to turn it off and put it away.

We require you to follow the guidelines listed below for postings on Canvas:

  • Be professional.
  • Be courteous.
  • Do not post any questions about your grade or any grading issues. Such questions are private communication and must be emailed.
  • Do not post any opinions regarding your graded assignment or any aspect of the course. You will have a chance to submit anonymous reviews at the end of the semester. Email feedback to the instructor regarding the course is acceptable and welcome.
  • The instructor reserves the right to delete postings that do not promote a conducive learning experience for students in the class.