Software Engineering Practices (CS4260)

Course Information & Policies

Course Information

Title: Software Engineering Practices
Institution: Metropolitan State University of Denver
Course ID: CS 4260, §1
Semester: Spring 2018
Meetings: Mondays & Wednesdays 2:00PM - 3:50PM
Location: AES 285
Credit Hours: 4
Prerequisites: CS4250 with grade of "C" or better (including cascaded prerequisites) and Senior standing
Policies: http://www.jodypaul.com/cs/sweprac
Moodle Site: http://gouda.msudenver.edu/moodle
Instructor: Dr. Jody Paul (schedule & office hours)
E-mail: jody @ computer . org
Office: AES 200AA (303-615-0978)
Campus Mail: Campus Box 38
Students are required to attend all sessions during the first week of class. (See: University policy on Class Attendance)

Objectives

Expected learning outcomes that students should be able to do upon completion:

  • Assess a software development project to determine the appropriate principles and practices that will maximize the likelihood of success
  • Apply principles and practices that improve the likelihood of success of a software engineering effort
  • Apply interpersonal and team skills that support maximizing team effectiveness
  • Exercise individual and team reflective skills that assist in evaluating and adapting software engineering activities to achieve success

Description

Software Engineering Practices (CS4260) is the Computer Science capstone course and a continuation of CS 4250, Software Engineering Principles. Facility with content addressed in CS4250 is prerequisite and necessary for success in this course. Students will work in teams and apply the principles of software engineering to real-world projects. Such projects may involve external stakeholders with progress evaluated in conjunction with those stakeholders. (Senior Experience)

This course provides students the opportunity to practice the principles of software engineering while developing significant software artifacts.

Students will:
  • Work as members of a software engineering project team
  • Evaluate a software development project
  • Determine and justify an appropriate software development model
  • Define appropriate procedures, practices, and techniques for their project
  • Determine and justify deliverables that their project team will provide
  • Develop and maintain appropriate project plans
  • Provide periodic reports on project status
  • Follow their life-cycle model, procedures, practices, and techniques
  • Provide periodic self-assessments of their practices, both those that are successful as well as those areas in need of improvement
  • Deliver completed software artifacts that satisfy their stakeholders

This team-oriented course places significant demands on participant's time and schedule. Students should expect to spend no fewer than 12 hours per week, 8 of which engaged in collaborative activities, to achieve competent/average (grade of 'C') outcomes. Additional time beyond this minimum is generally necessary to achieve good/better-than-average ('B') or superior/excellent ('A') outcomes. The final few weeks inevitably require extended hours.

Required Book

How Open Source Ate Software How Open Source Ate Software: Understand the Open Source Movement and So Much More
by G. Haff
[Springer][Amazon]

Recommended Readings

Readings from the previous semester's CS4250 offering are very relevant to this course. In addition, the following references are recommended.

The Pragmatic Programmer The Pragmatic Programmer: From Journeyman to Master
by A. Hunt & D. Thomas
[PragProg][Amazon]
The Developer's Code The Developer's Code: What Real Programmers Do
by K. W. Cheung
[PragProg][Amazon]
New Programmer's Survival Guide New Programmer's Survival Guide
by Josh Carter 
[PragProg][Amazon]
Cover of Debugging Teams Debugging Teams:
Better Productivity through Collaboration

by B. W. Fitzpatrick and B. Collins-Sussman
O'Reilly (2015); ISBN 9781491932056

Cover of Passionate Programmer The Passionate Programmer:
Creating a Remarkable Career in Software Development

by C. Fowle
Pragmatic Bookshelf (2009); ISBN 1934356344


General Philosophy

[The following is adapted from course information developed and published by Dr. Noel LeJeune, whose work in developing this text is gratefully acknowledged.]

Software Engineering is a dynamic field. For the most part, there are no "right" answers. (However, there can be "wrong" ones!) This is often difficult for scientifically and mathematically oriented people who expect that there is one correct answer. You are required to think, examine the context of the problem, reflect upon possible solutions, select the most suitable one(s), and support or justify your conclusions.

This course should help prepare you for the practice of real-world software engineering in which you are likely to perform software engineering for an employer or customer. Thus we will approach this in the same manner as a real-world software engineering environment.

Successful software engineering is rarely, if ever, a solitary endeavor. Teamwork is the norm. A significant part of your individual evaluation (see Grading) is based upon your team’s performance. You will be successful only if your team is successful. Just as in the work environment, individual performance may be recognized but the entire project team is judged by the team’s collective performance. The team is responsible as a whole. Help each other to make all successful.

Class Session Attendance

If you are not present, your team is missing a vital team member and your instructor is unable to assess your performance as a collaborative member of the team. The team remains accountable whether you are there or not so please plan to attend. In addition, failure to demonstrate such collaborative contribution will negatively impact your grade. Please contact your instructor directly concerning special circumstances or need for assistance.

Project teamwork will require meeting with your other team members at times in addition to class time. While class time will be available for teamwork, it will not be sufficient. You must be willing and able to dedicate significant additional time outside of class to be successful.

Special Note: Because group work represents a significant aspect of this course, if you think you will drop, do your classmates a favor and drop early. If you drop after you are part of a team, your fellow students are adversely impacted.

Grading

Activities and deliverables that contribute to the course grade include the following:

  • Contributions, Participation, Learning, Presentations (65%)
    • Individual Portfolio
    • Reports & Reflections
    • Presentation Development and Deliveries
  • Project (35%)
    • Project Notebook
    • Product Deliverables
    • Product and Process Presentations

Note that all members of a team may not receive the same grade for team activities and deliverables.

Peer team members and the instructor will evaluate each individual’s contribution within the context of the team’s efforts.


Projects

This Senior Experience course is primarily concerned with work on a software development project and real-world software engineering experiences.

Software Engineering

Reminder: While it is stated above, a restatement to stress the importance of Software Engineering in product development is in order:

Software Engineering is concerned with the processes and practices used to develop software systems. The underlying principle is that good processes and practices are more likely to produce a quality product within expected resource constraints than are poor ones. Therefore, a significant component of scoring and grade is based on the processes and practices used to produce the product. Rarely, but occasionally, a good product is produced using poor processes and practices, usually due to heroics of individual team members. (A very poor practice!) The overall assessment will be negatively impacted regardless of the quantity and quality of the product itself.

Teamwork & Assessment

Work will be done as teams. Teamwork will require significant effort to achieve success. Your success depends on active participation.

Team deliverables are expected to be a collective effort involving all team members. An overall assessment will be determined for each deliverable that reflects the quality of the deliverable. An individual assessment for each team member will also be determined for project deliverables. This individual assessment will be a combination of instructor assessment and peer assessments. You will be expected to assess each team member's contribution (including your own).

A team may have the opportunity to release (remove from future team participation) any non-contributing member with instructor approval. Any released team member becomes a team-of-one and is solely responsible for the same products as any other team. However, a team-of-one will suffer a significant grade reduction for all products completed as a team-of-one. The remaining team will be expected to produce the same level of quality and quantity of products as if the team was at its original size.

Project Notebook

In addition to contributing to the product, each team must maintain and deliver a Project Notebook. The project notebook is a collection of artifacts that record important activities and decisions relevant to the project. The project notebook must also include comprehensive final analyses (for example, well-documented metrics applied to the project and deliverables).

Project Assessment

Projects will be assessed with respect to the following criteria:

  • Software Engineering Principles and Practices
    • An appropriate software development process is selected and employed properly
      • Change management
      • Software configuration management
      • Tools, techniques, and practices
      • Quality engineering and assurance
      • Adequate elicitation and management of requirements & specifications
    • The project is properly planned and managed
      • Explicit work breakdown structure
      • Effective task management
      • Sufficient tracking and reporting
    • Ample communication maintained with stakeholders
    • Well documented
  • The Product
    • Meets stakeholders objectives
    • Delivered on-time and within constraints
    • Well packaged
    • High quality
    • Designed for maintainability

Individual Portfolio

You must actively maintain an individual portfolio. The portfolio is a collection of key artifacts that document (a) your contributions to the project and (b) your learning during the semester. These artifacts may include copies of external deliverables, internal deliverables, intermediate products, products not ending up as part of the final deliverables, research findings, and documentation of ancillary learning activities. Each artifact must be accompanied by an annotation that consists of a title, a description, and a reflection. A subset of the artifacts in the collection should comprise a professional portfolio such as would be used to demonstrate credibility during job interviews or when bidding on contracts. The full collection of artifacts should document key learning experiences.

The portfolio must be maintained during the semester and be continually available for review. The final version will be turned in prior to the end of the course and is the primary documentation used in assessment of individual contribution, participation, and learning.

Activity Logging

You are required to document your individual activities as well as your accomplishments. This provides documentation of effort and data collection for reporting and estimation.

Status Updates

Status updates provide the vehicle to communicate your activiites, outcomes, and concerns; including:

  • Your accomplishments
  • Your current status with respect to the project
  • What roadblocks are preventing you from helping the project to move forward
  • Areas in which you wish to improve and what activities you are undertaking to develop in those areas, and
  • What you intend to accomplish in the interval before the next status update
These updates are augmented with in-person meetings where you and your instructor address the status of your work and continuous improvement, strategize together, and share advice, support, and motivation.

Academic Dishonesty

Turning in work that includes quotations without corresponding citations, does not properly cite references, or does not credit collaborators, will be treated as an act of academic dishonesty. All incidents of suspected dishonesty will be reported to the Chair of the department and the Dean of the college. Consequences may include a score of 0 on the assignment, a grade of "F" for the course, academic probation, or dismissal from the institution. This is a very serious matter and should not be taken lightly. If you have any uncertainty or concerns, please discuss them with your instructor or your advisor.

 

Official Information

Official policies applicable to all CS courses may be accessed at https://msudenver.edu/cs/policies

CLAS Statements for faculty to include in syllabi:
Students are responsible for full knowledge of the provisions and regulations pertaining to all aspects of their attendance at MSU Denver, and should familiarize themselves with the policies found in the MSU Denver Catalog. For more information and recent updates, go to the CLAS website: https://msudenver.edu/las/studentinformation/forms/
NOTE: If you have any difficulty accessing the hyperlinks in this document, please inform the instructor.
RESOURCES
The College of Letters, Arts, and Sciences is committed to, and cares about, all students. To help you manage personal challenges and basic needs security, the university offer several resources. Any student who has difficulty affording groceries or accessing sufficient food to eat every day, or who lacks a safe and stable place to live, and believes this may affect their performance in the course, is urged to contact the Dean of Students (303-615-0220 or 303-615-0423), the Gender Institute for Teaching and Advocacy (303-615-2052), or our CLAS office (303-615-0995 or 303-615-1301) for support.

MSU Denver College Catalog: http://catalog.msudenver.edu
Official announcements, including Academic Policies and Procedures and Student Rights and Responsibilities

MSU Denver Academic Calendar:  http://www.msudenver.edu/events/academic/
Additional official dates and deadlines, including the last dates to withdraw and receive NC and holidays