Instructor:
Laura Moreno
Office: CSB 458
Office Hours: Mon & Wed, 3:50pm - 4:50pm
Email: cs414@cs.colostate.edu
GTA:
Wei Xi
Office: TBA
Office Hours: TBA
Lecture Time and Place:
3:00pm - 3:50pm, Mon, Wed & Fri, Clark A 202

General course information

Description

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.

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.
  • Refactoring.

Learning outcomes

By the end of the course:

  • Students will be able to analyze problems and develop conceptual models, generate designs from the models, and write program code that implements the designs.
  • Students will be able to evaluate and improve object-oriented models and code.
  • Students will be proficient at using the Unified Modeling Language (UML) to develop object models, and Java to implement the designs.
  • Students will be familiar with some facets from agile programming.

Course credits

4 semester hours (3 lecture, 1 lab)

Lab hour to be arranged by students to work on assignments and project deliverables.

Audience

This course is geared towards undergraduate students in Computer Science.

Prerequisites

  • 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 CS314 using a text such as:
    • Lethbridge, T.C. and Laganiere, R., 2005. Object-oriented software engineering: Practical software development using UML and Java. New York: McGraw-Hill.
    • Pressman, R.S., 2005. Software engineering: a practitioner's approach. Palgrave Macmillan.
    • Sommerville, I., 2004. Software Engineering. International computer science series. Ed: Addison Wesley.
  • A good understanding of discrete math and logic including first-order predicate calculus is expected (CS166), and data structures (CS200). CS200 and CS253 are prerequisites to CS314, which is a prerequisite to this course.

Class material

Required texts

  1. Fowler, M., Beck, K., Brant, J., Opdyke, W. and Roberts, D., Refactoring: improving the design of existing code. 1st edition. 1999. ISBN: 0-201-48567-2.
  2. Larman, C., 2002. Applying UML and Patterns: an introduction to object-oriented analysis and design. 3rd edition. Prentice-Hall Inc. ISBN: 0-131-48906-2.

Optional (but useful) texts

  1. Schildt, H., Java: The Complete Reference. 9th edition, McGraw-Hill Education. 2014. ISBN: 0-071-80855-8.
  2. Johnson, R., Gamma, E., Helm, R. and Vlissides, J., Design patterns: Elements of reusable object-oriented software. 1sr edition, Addison-Wesley. ISBN: 0-201-63361-2

Lecture slides

  • Video recordings of lectures will be available via Canvas.
  • Slides will be available on Canvas.
  • 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.

Communication

Although CS 414 has a general email account, Canvas will be the main communication platform for this course. Therefore, if you need to communicate with the instructor or the GTA, you should do so through Canvas. The CS 414 email account should be only used as a last resort, or if you do not have access to the course in Canvas. Do not email the instructor or the GTA directly.

Important dates

All presentations will be held in the same classroom as the regular lectures.

August 25* Assignment 1 posted
September 4 No class (Labor day)
September 8* Assignment 1 due
Project 1.0 posted
September 18* Project 1.0 due
Project 1.0 presentations (i)
Project 2.0 posted
September 20* Project 1.0 presentations (ii)
October 2* Project 2.0 due
Project 2.0 presentations (i)
Project 3.0 posted
October 4* Project 2.0 presentations (ii)
October 23* Project 3.0 due
Project 3.0 presentations (i)
Project 4.0 posted
October 25* Project 3.0 presentations (ii)
November 13* Project 4.0 due
Project 4.0 presentations (i)
November 15* Project 4.0 presentations (ii)
November 20, 22, 24 No class (Fall break)
December 6* Project final delivery due
Project final delivery presentations (i)
December 8* Project final delivery presentations (ii)
Finals week* Final exam

* Subject to changes. A detailed class schedule will be made available.

Course policies

Grading

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

Activity Weight*
Assignments 10%
Project 55%
  • Iterations (1.0 - 4.0): 10% each
  • Final delivery: 15%
Readings 10%
Class participation 10%
Discussion participation on Canvas 10%
Final exam 10%

* Subject to changes.

Calculation of the final class score is the average of grades for the category times the weight for the category shown in table above. The final point score will not be curved. The assignment of letter grades will be made as follows:

Letter grade Point range
A 95-105
A- 90-94
B+ 86-89
B 82-85
B- 78-81
C+ 74-77
C 70-73
F below 70

Some clarifications:

  1. Class participation will be determined in a variety of ways. Attendance is required. There may be in-class exercises or quizzes that are graded. You are strongly encouraged to ask questions in class.
  2. Design assignments will be of two types, short assignments and long team projects. Each design assignment needs to be turned in electronically via Canvas or GitHub (depending on the assignment requirements) by 2:59pm on the due date.
    Short assignments: There will be a couple of short modeling assignments, as well as programming assignments that involve writing code to implement requirements and use design patterns, and also writing code to implement test cases. Short assignments are individual.
    Long team project: There will be a long project with several deliverables including requirements, use cases, domain models, design models, program code, and test code. This will be done as an iterative project with code due several times during the semester. Each team will have 5 members.
  3. Canvas will be used by students to discuss challenges and issues related to the project (e.g., its analysis, design and implementation), class topics, or questions formulated by the instructor along the semester. Students are strongly encouraged to start discussions and actively participate in them. We expect each student to make an initial posting, 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.
  4. There will be one final exam to take place around week 16. Exact dates will be announced later.

Submissions can be re-graded 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 an assignment has been graded, no re-dos or re-submissions are allowed.

Makeup policy

There will be no makeup for missed assignments or in-class activities, and students will receive a score of zero. If a student is unable to deliver an assignment due to a documented illness, accommodations will be made by the instructor according to university policy.

If a student miss the final exam, the student will receive a score of zero.

Late work policy

Assignments are to be submitted through Canvas, presentend in class or stored in a repository. Specifics will be included in each assignment. Always check the assignment information for due dates. You lose 15% of the maximum possible grade per day for any late submissions. No late submissions will be accepted after three days of the original due date.

Class attendance

Students are expected to attend every class. Students should not ask for special considerations to allow them to miss classes or not take examinations, including finals, at appointed times.

Classroom citizenship

Respect for your classmates is necessary at all times. 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, unless otherwise directed for an in-class activity:

  • Put away your cellphone. 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 your use of an electronic device is becoming a distraction to others, you may be asked to to turn it off and put it away. Laptop/tablet users must sit in the back row starting from the corners.

Forum citizenship

Respect for your classmates is necessary at all times. We work to maintain an environment supportive of learning in the discussion forum. 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:

  • Be professional and corteous.
  • 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.
  • Be constructive and provide complete answers.
  • Provide references and attribute credit for the content you post when needed.

The instructor reserves the right to delete postings that do not promote a conducive learning experience for students in the class.

Communication guidelines

Students are expected to be professional in the way they communicate with their fellow participants (i.e., classmates, instructors, GTAs and any tutors). Many guidelines exist for academic etiquette and written communication. Students are highly encouraged to read the next articles:

Professional Conduct

All students are expected to conduct themselves professionally. . Students are assumed to be familiar with the policies in the student information sheet for the department.

This course will adhere to CSU Academic Integrity Policy as found in the the General Catalog and 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 are considered computing professionals, albeit perhaps just starting. Students should be familiar with the code of conduct for the primary professional society, ACM. The ACM Code of Conduct can be found HERE.

Other policies