Software Engineering Principles (CS4250)

Class Information

Title: Software Engineering Principles
Institution: Metropolitan State University of Denver
Course ID: CS 4250
Semester: Fall 2017
Meetings:

§1 Tuesdays & Thursdays 10:00AM - 11:50AM
§2 Mondays & Wednesdays 4:00PM - 5:50PM

Location:

§1 Aerospace and Engineering Science 250
§2 Aerospace and Engineering Science 250

Credit Hours: 4
Prerequisites: Senior standing; CS 3210, CS 3240, COM 2610, PHI 3370, and 12 additional credits of upper division CS courses, all with a grade of "C" or better
Policies: http://www.jodypaul.com/cs/sweprin
Moodle Site: http://gouda.msudenver.edu/moodle
Instructor: Dr. Jody Paul (schedule & office hours)
E-mail: jody @ computer.org
Office: AES 200X   (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)

General Philosophy

The following is adapted from course information written by Dr. Noel LeJeune, whose efforts are gratefully acknowledged.

Software Engineering is a dynamic field with few uniquely “right” answers and many “wrong” ones. This is often difficult for those students who have come to expect that there is one correct answer. Here, you are required examine the situation context, reflect upon possible alternatives, select the most suitable, and justify your decision.

This course is intended to provide you with the opportunity to acquire a rich set of principles and a familiarity with tools that prepare you to be successful practitioners of software engineering. As such, our approach uses real-world software engineering as the context.

Successful software engineering is rarely a solitary endeavor. Collaboration and teamwork are the norms. Individual performance may be recognized, but the entire project team is judged by the team’s collective performance. Acquisition of team-oriented skills and practices is integral to this course and comprises part of the assessment.

Course Description

This course provides an overview of the principles of software engineering and opportunities to investigate critical activities necessary for success. The software development life cycle provides the framework, with emphasis on the activities that surround the writing of source code.

Major topics include: Software Life Cycle Models (comparative analysis); Collaborative Development; Requirements Engineering; Quality, Verification, & Validation; Software Metrics; Architecture & Design; Implementation; Debugging & Testing; Maintainability; Roles & Responsibilities; Deliverables & Milestones.

Participants will locate, critically review, and make extensive use of outside resources.

Course Objectives

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

  • Enumerate, define, and relate software development processes
  • Describe the activities performed in software development processes
  • Develop a coherent set of software specifications for an application
  • Apply several design methodologies to the design of a software artifact
  • Develop and implement software test plans
  • Describe the activities associated with software maintenance
  • Describe and utilize software configuration management processes
  • Perform an impact analysis for a change request as it applies to a software artifact
  • Analyze a software development project and determine applicable and appropriate software engineering principles and practices
  • Evaluate the effectiveness of a given set of software engineering practices
  • Assess the effectiveness of software engineering processes, practices, products, and artifacts associated with a software development effort
  • Work collaboratively and cooperatively with others as a team that produces software engineering products and artifacts
  • Describe ethical principles, guidelines, and codes as they apply to the practice of software engineering
  • Create and deliver quality presentations, individually and as part of team presentations, related to selected aspects of software engineering processes, practices, products, and artifacts

Readings

Required Books (complete list):

Cover of Tsui text Essentials of Software Engineering, Fourth Edition
by Frank F. Tsui, et al.
Jones & Bartlett (2016); ISBN 1284106004
REQUIRED

Cover of Lencioni text The Clean Coder: A Code of Conduct for Professional Programmers
by Robert C. Martin
Prentice Hall (2011); ISBN 0137081073
REQUIRED

Cover of DeMarco/Deadline text The Deadline
by Tom DeMarco
Dorset House (1997); ISBN 0932633390
REQUIRED

Cover of Lencioni text The Five Dysfunctions of a Team
by P. M. Lencioni
Jossey-Bass (2002); ISBN 0787960756
REQUIRED


Required Online References (partial list):

Logo for Jenkins Jenkins: Documentation
jenkins.io (2017); Available Online

Logo for Redmine Redmine: User Guide
redmine.org (2017); Available Online

Logo for Redmine Software Engineering Code of Ethics and Professional Practice
by ACM/IEEE-CS
acm.org (2015); Available Online

website link Software Engineering Resources
jodypaul.com (2017); Available Online

Logo for Subversion Version Control with Subversion
by B. Collins-Sussman, et al.
svnbook.org (2017); Available Online

Book for Extra-Credit Assignments:

Required only for software architecture and design extra-credit assignments.

Cover of Wake text Refactoring Workbook
by William C. Wake
Addison-Wesley (2004); ISBN 0321109295
Required for Extra-Credit Assignments Only



Supplemental Books:

NOT required for this course. Provide extended coverage of specific areas.

Cover of Clean Code Clean Code: A Handbook of Agile Software Craftsmanship
by R. C. Martin
Prentice Hall (2008); ISBN 9780132350884

book cover image Exploring Requirements: Quality Before Design
by D. C. Gause and G. M. Weinberg
Dorset House (1989); ISBN 0932633137

book cover image Mastering the Requirements Process (3rd edition)
by S. Robertson and J. Robertson
Addison-Wesley (2012); ISBN 9780321815743

book cover image The Mythical Man-Month (Anniversary Edition)
by F. P. Brooks, Jr.
Addison-Wesley (1995); ISBN: 0201835959

book cover image Refactoring: Improving the Design of Existing Code
by Martin Fowler
Addison-Wesley (2000); ISBN 0201485672

book cover image Software Requirements, Third Edition
by K. Wiegers & J. Beatty
Microsoft Press (2013); ISBN 0735679665

book cover image Waltzing With Bears: Managing Risk on Software Projects
by T. DeMarco & T. Lister
Dorset House (2003); ISBN 0932633609

Class Policies

Class Sessions & Websites

You are expected to prepare in advance for class sessions (reading, exercises, etc.), to participate in class discussions and activities, and to make in-class presentations. Participation in class discussions and activities is mandatory and constitutes part of the overall grade for the course.

A substantial amount of information is disseminated during class sessions or via the course website. You are responsible for knowing this information whether or not you attended the sessions or accessed the website. Note in particular that the textbooks and references provide some but not all of the information necessary to successfully complete the course.

In addition to important course and domain information, the course support website also provides the vehicle for managing assignments and assessment.

Successful software engineering is rarely a solitary endeavor. Collaboration and teamwork are the norms. Individual performance may be recognized, but the entire project team is judged by the team’s collective performance. Acquisition of team-oriented skills and practices is integral to this course and comprises part of the assessment.

Assignments & Projects

Assignments and projects represent your opportunity to practice applying the concepts, thereby enhancing your understanding, and to demonstrate your knowledge of the concepts and their application. Details regarding assignments and projects will be provided in class or on the course support website.

Reflections

Every assignment and project turned in must include a section (maximum 150 words) labeled “Reflection” in which you are expected to reflect on the experience of working on the assignment or project and describe your personal insights and observations associated with the experience. This reflection is required whether or not the assignment specification mentions it explicitly. Reflections comprise a portion of the score of every assignment and project.

Deliverables

Online Submission

Assignments must be turned in using the course Moodle website unless explicitly specified otherwise. In particular, e-mail and hard-copy will not be accepted in lieu of online submission.

The Moodle “assignment” activity allows the use of working-drafts, but such drafts are not automatically submitted. Assignment attempts in DRAFT status will result in no earned score for the assignment. You must explicitly submit an assignment before the deadline for it to be considered for scoring and credit.

To submit an assignment entry for scoring:

  1. You must click the Submit button for that assignment. Use of the Submit button indicates that the assignment is intended to be scored.
  2. You must verify and accept any subsequent attestation that states that the work is entirely your own unless (a) included works of others are explicitly cited and (b) other contributors are explicitly referenced.
Deliverable Formats

When available, the Online text field of a Moodle assignment should be used for text-based responses and for reflections. File attachments to Online text are generally not acceptable.

Formats of files turned in for assignments must not depend on specific operating system or commercial software.

  • Examples of generally acceptable formats: ASCII or UNICODE UTF-8 text, HTML, PDF, GIF, JPEG, PNG.
  • Examples of specifically unacceptable formats: Microsoft Word, Apple Pages, Microsoft PowerPoint, Apple Keynote, Microsoft Excel, Apple Numbers.
  • Acceptable formats for archives include only tar and zip.

If a specific archive or file format is required it will be explicitly specified.

A deliverable submitted in an unacceptable format is equivalent to no submission at all. If unsure about the acceptability of afile format, please check with the instructor prior to submission and well before the deadline.

Due Dates/Times

Deliverables associated with assignments may be submitted for scoring at any time prior to the published deadline.

No assignment deliverables will be accepted after the published due date/time.

Because there are so many risks to completion and submission, you are strongly encouraged to target completion and submission of assignments no less than 24 hours prior to the published due date/time. Computer systems and networks often experience "down times" and are likely to be strained during the 24-hour period immediately preceding a published deadline; thus, you should not depend on such systems, including the course support servers, to be consistently available during that period. Further, the instructor may not be available to address questions directly referencing that specific assignment in the last 24 hours.

Illness, crises, and emergency situations will be dealt with on a case-by-case basis in accordance with University, College, and Departmental policies.

Scoring & Grading

The final course grade is determined by combining scores on assignments, projects, in-class activities, and exams. You are guaranteed a grade no lower than shown in the following percentage of total possible to letter grades:

100-90%: A(±);  89-80%: B(±);  79-70%: C(±);  69-60%: D;  59-0%: F

Collaboration & Citation of Sources

Successful software engineering is rarely a solitary endeavor devoid of external contributions. Collaboration, teamwork, and consultation of work by others are the norms.

Collaborative activity is required for successful completion of this course. In particular, collaboration is encouraged and regarded as an essential aspect of learning computer science and software engineering. Collaboration and discussion with fellow students and instructors concerning course information, materials, assignments, projects, proofreading, concept exploration and studying for exams is strongly encouraged. You are not expected to learn the course content or work on assignments and projects in complete isolation.

Most project work in this course will be collaborative in nature.

That said, in order to provide fair assessment for grading, the work you turn in must reflect your own efforts. You must write up your own submissions, reflecting your individual effort, for every assignment you turn in to be assessed, even if the solution results from collaborative effort. In your submission, you must credit the people with whom you worked or consulted.

If you consult any sources, your submission must explicitly reference those sources and indicate where and how they apply.

Remember that you must write and turn in a personal reflection for every collaborative effort, as well as every individual effort.

Collaboration during exams is never acceptable.

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.

Team deliverables are expected to be a joint effort involving all team members. An overall grade will be assigned for each deliverable that reflects the quality of product. An individual grade for each team member will also be assigned for each deliverable. This individual grade may reflect a combination of instructor assessment and peer assessments. You will be expected to assess each team member's contribution, including your own.

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. Failing to abide by examination policies 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

Withdrawal dates and procedures
• 100% refund: Sun. August 27
• 50% refund: Wed., September 6
• Last Day for W: Wed. November 8
Holiday information: Labor Day: September 4 (Campus Closed) Fall Break: Nov 20-26 (No classes, Campus Open except for Thanksgiving Day – Nov. 23 )

A copy of the official syllabus for the course which includes the Learning Objectives for the course is provided at https://mcs.msudenver.edu/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 following policies:

1. GENERAL UNIVERSITY POLICIES
2. GRADES AND NOTATIONS including WITHDRAWAL FROM A COURSE, ADMINISTRATIVE WITHDRAWAL, and INCOMPLETE POLICIES
   Students should be aware that any kind of withdrawal can have a negative impact on some types of financial aid, including scholarships.
3. ACADEMIC DISHONESTY
4. PROHIBITION ON SEXUAL MISCONDUCT
5. ACCOMMODATIONS TO ASSIST INDIVIDUALS WITH DISABILITIES
6. CLASS ATTENDANCE ON RELIGIOUS HOLIDAYS
7. ELECTRONIC COMMUNICATION (STUDENT EMAIL) POLICY

For a complete description of these policies go to: http://mcs.msudenver.edu/policies