Software Engineering Fundamentals (CS390R)

Course Information

Title: Software Engineering Fundamentals
Institution: Metropolitan State University of Denver
Course ID: CS 390R
Semester: Spring 2017
Meetings: §1 Mondays & Wednesdays 10:00AM - 11:50AM [35336]
§2 Tuesdays & Thursdays 10:00AM - 11:50AM [35337]
Location: Central 101
Hours: Credit Hours: 4
Contact Hours: 60
Additional Student Work Hours: 120 to 180 hours outside of class
Prerequisites: CS2050 with grade of "C" or better
Moodle Site:
Instructor: Dr. Jody Paul (schedule & office hours)
E-mail: jody @ computer . org
Office: Science 1038 (x68435)
Campus Mail: Campus Box 38


This course introduces the enterprise of software engineering and establishes a foundation for further study and practice in the software engineering domain. Topics and concepts introduced in this course include: Software Development Life Cycles (SDLC) and SDLC Models; Object-Oriented Programming; Test-Driven Development; Code Quality Assessment (Static and Dynamic Analysis); Principled Debugging; Source Code Management; Automated Build Management; and Software Development Teams. Students participate in software development experiences to reinforce acquired knowledge of the techniques and tools introduced in the course.


Additional Notes

In addition to introducing software engineering concepts, the course provides opportunities to gain experience and to expand the set of useful mental and technological tools. It includes practical tips for becoming a better programmer acquired over decades of experience in industry and the study of programming best practices.

Participants are expected to already have a good working knowledge of, and facility with, the Java programming language and be willing to try out new approaches and techniques for software development.

This course requires significant time spent outside of the classroom. This course will likely require an average of twelve hours of work per week outside of class (some weeks less and others more). Collaboration is a necessary component of this course and requires availability to meet and work with others outside of class.

Required Books

Cover of Beginning Software Engineering Beginning Software Engineering
by Rod Stephens
Wiley (2015); ISBN 9781118969144

Cover of Building Maintainable Software Building Maintainable Software, Java Edition:
Ten Guidelines for Future-Proof Code

by J. Visser, et al.
O'Reilly (2016); ISBN 9781491953525

Cover of Pragmatic Unit Testing Pragmatic Unit Testing in Java 8 with JUnit
by Jeff Langr, et al.
Pragmatic Programmers (2015); ISBN 9781941222591

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 97 Things Every Programmer Should Know 97 Things Every Programmer Should Know:
Collective Wisdom from the Experts

edited by K. Henney
O'Reilly (2010); ISBN 9780596809485
This reading is also available online at no cost under Creative Commons licensing:

Online Readings

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

Logo for Redmine Redmine: User Guide
by Redmine (2015); Available Online

website link Software Engineering:
Software Development Tools (2016); Available Online

Optional Books

Extra-Credit Assignments

Cover of Clean Code Clean Code: A Handbook of Agile Software Craftsmanship
by R. C. Martin
Prentice Hall (2008); ISBN 9780132350884
Required for Extra-Credit Assignments Only

Cover of Debug It Debug It!
Find, Repair, and Prevent Bugs in Your Code

by P. Butcher
Pragmatic Programmers (2009); ISBN 9781934356289
Required for Extra-Credit Assignments Only

Cover of Object-Oriented Thought Process The Object-Oriented Thought Process (4th Edition)
by M. Weisfeld
Addison Wesley (2013); ISBN 9780321861276
Required for Extra-Credit Assignments Only

Other Useful Books (Java, OO, Tools)

Cover of Java 8 Lambdas Java 8 Lambdas:
Functional Programming For The Masses

by R. Warburton
O'Reilly (2014); ISBN 9781449370770

Cover of Polymorphism: As It Is Played Polymorphism: As It Is Played
by J. Bergin
Slant Flying Press (2015); ISBN 9781940113050
OPTIONAL - Object-Oriented

Cover of Subversion Guide Pragmatic Guide to Subversion
by M. Mason
Pragmatic Bookshelf (2010); ISBN 1934356611
OPTIONAL - SCM/Subversion

Cover of Mastering Redmine Mastering Redmine - Second Edition
by A. Lesyuk
Packt Publishing (2016); ISBN 1785881302
OPTIONAL - Redmine

Cover of Effective Unit Testing Effective Unit Testing:
A guide for Java developers

by L. Koskela
Manning Publications (2013); ISBN 1935182579

Course Policies

Class Sessions & Websites

Students are expected to prepare in advance for class sessions (reading, exercises, forum posts, assignments, etc.) and to participate in class discussions and collaborative activities. Participation in class discussions and activities is mandatory and constitutes part of the overall grade for the course. There are no “make-ups” for missed in-class activities and exercises.

A substantial amount of information is disseminated during class sessions. Additional information is provided via the course website. Students are responsible for knowing this information whether or not they attended the sessions or accessed the website. In particular, the textbooks and references provide some but not all of the information necessary to successfully complete the course.

The course support website (Moodle) provides the primary vehicle for managing assignments and other assessments in addition to being a key source of important course and domain information.

Deadlines (Due Dates/Times)

Deliverables associated with assignments may be submitted for scoring at any time prior to the published deadline (due date/time).

No assignment deliverables will be accepted after the published deadline.

In the past, the most successful students applied the strategy of setting their own "individual" target deadlines to be 24 hours in advance of the published deadlines. In support of this practice, out-of-class assignments will be provided and have due dates/times set so there is ample time for completion and delivery more than 24 hours prior to the published deadline.

Because there are many risks to completion and submission, you are strongly encouraged to target completion of an assignment no less than 24 hours prior to the published deadline and to submit an assignment no less than 12 hours prior to the published deadline.

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

Scoring & Grading

There are graded activities in the course (assignments, tests, ...) and students are expected to complete all activities. Not completing a graded activity earns a score of zero for that activity. Activities have different maximum point values indicating the importance and relative weight of each. The total course points is simply the sum of points of all graded activities. The final course grade is determined by converting the total numeric score to associated letter grades as shown.

A+ : 97% ≤ score
A  : 93% ≤ score < 97%
A- : 90% ≤ score < 93%
B+ : 87% ≤ score < 90%
B  : 83% ≤ score < 87%
B- : 80% ≤ score < 83%
C+ : 77% ≤ score < 80%
C  : 73% ≤ score < 77%
C- : 70% ≤ score < 73%
D+ : 67% ≤ score < 70%
D  : 63% ≤ score < 67%
D- : 60% ≤ score < 63%
F  : score < 60%

Assignments & Projects

Assignments and projects represent opportunities to learn new concepts and tools, practice applying those concepts and tools, and reflect on experiences. The intent is to enhance understanding as well as to demonstrate knowledge and ability to apply it. Details regarding assignments and projects will be provided in class or on the course Moodle website. 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.


Every assignment and project turned in must include a section (~150 words) labeled “Reflection” that describes personal insights and observations about the learning as a result of reflecting on that experience. This reflection is required whether or not the assignment specification mentions it explicitly and comprises a portion of the score of every assignment and project. (If a reflection is not required, the assignment specification will explicitly state that exception.)

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 entering and uploading working-drafts that you are not intended to be scored. Drafts will not be considered for scoring, either before or after the deadline.

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 accept the subsequent attestation that states that the work is entirely your own unless included works of others are explicitly cited and other contributors are explicitly referenced.

Note in particular:

  • Assignment attempts in DRAFT status will result in no earned score for the assignment.
  • Failure to accept the attestation statement will result in no earned score for the assignment.
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 specified in the assignment itself.

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

Quiet Period

The 24-hour period immediately preceding the published deadline for an assignment is considered a quiet period. During that 24-hour interval, the instructor will not address questions directly referencing specifics of that assignment. All students are strongly encouraged to complete assignments well in advance of this quiet period. Further, since computer systems are likely to be strained during the 24-hour period immediately preceding a published deadline, you should not depend on such systems, including the course support servers, to be consistently available during that period.


Collaboration & Citation of Sources

Successful programming 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 programming. 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.

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.

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

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

Official policies applicable to all courses may be accessed at

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 provided on that website:
  • General University Policies
    Students should be aware that any kind of withdrawal can have a negative impact on some types of financial aid, including scholarships.
  • Accommodations to Assist Individuals with Disabilities
  • Academic Dishonesty
  • Class Attendance on Religious Holidays
  • Prohibition of Sexual Misconduct
  • Electronic Communication (Student Email) Policy

MSU Denver Academic Calendar:
Additional official dates and deadlines, including the last dates to withdraw and holidays

MSU Denver Student Handbook:
Important Metro State and Auraria campus policies and procedures for students