Software Development Methods and Tools (CS3250)

Course Information

Title: Software Development Methods and Tools
Institution: Metropolitan State University of Denver
Course ID: CS 3250 (§2)
Semester: Spring 2022 (January 16, 2022 – May14, 2022)
Meetings: Mondays & Wednesdays; 4:00PM–5:50PM
Location: AES 220
Credit Hours: 4
Prerequisites: CS 2050, ENG 1020, and CAS 1010 with grades of "C−" or better
Policies: http://www.jodypaul.com/cs/swdmt
Instructor: Dr. Jody Paul (schedule & office hours)
E-mail: jody @ computer.org
Office: AES 200Q
Students are required to attend all sessions during the first week of class. (See: University policy on Class Attendance)

 

Course Description

This course introduces basics associated with non-trivial software development. As software complexity and size increase, so does the need to use techniques and tools that assist with managing complexity and that support multiple concurrent contributors. These include:

  • Practices for facilitating the success of a peer software development team
  • Techniques that enable behavior-driven and test-driven development
  • Ways to assess and improve the quality of software
  • Uses of automation for creating software products
  • Group dynamics and experience working on significant projects in groups

Upon successful completion of this course, students should be able to

  • Contribute to a non-trivial, multi-stakeholder software development effort
  • Articulate the value of, and engage in, team-building activities
  • Participate in and facilitate a peer software development team
  • Utilize the object-oriented paradigm for software development
  • Construct and use an automated testing environment that includes analysis of test effectiveness
  • Analyze the quality of a program, including both static (source) and dynamic (runtime) properties

Upon successful completion of this course, students should additionaly be able to

  • Select an appropriate software development lifecycle development model for a project
  • Compare the various agile software development lifecycles
  • Evaluate different object-oriented techniques for problem solving
  • Construct a testing environment that includes code coverage analysis
  • Compare and contrast several software architectures

Software is a compound word that means ‘flexible product.’ The entire reason that software exists is so that we can quickly and easily change the behavior of our machines. To the extent that we build software that is hard to change, we thwart the very reason that software exists. —Robert C. Martin

Major Content Areas

  • The Software Development Craft
    • The Science and the Craft
    • Technical, Social, Legal, Ethical Issues
      • Intellectual Property: Rights & Protections
    • Professional Responsibilities
    • Human Factors
      • Product
      • Project
      • Team
      • Career
  • Collaborative Software Development
    • Software Development Teams
    • Inclusive Peer Teams
    • Consensus Decision-making
  • Software Quality
    • Specifications
      • Validation
    • Maintainability
    • Conventions
    • Verification
      • Testing
    • Defensive Programming
  • Software Development Tools
    • Command-level
    • Build Automation
    • SW Configuration Management
      • Version Control; Branching, Merging
    • Documentation
    • Issue Tracking
    • Project Management
    • Code Analysis
    • Test Automation
  • Software Development Paradigms and Methods
    • SW LifeCycle Development Models
      • Traditional
      • Agile
    • Drivers
      • Behavior-Driven
      • Test-Driven
      • Risk-Driven
    • Object-Oriented Analysis & Design
      • Inheritance & Polymorphism
      • OO Modeling
      • Design Patterns

Books, References, and Resources

Required Books

Cover of Small, Sharp Software Tools Small, Sharp Software Tools: Harness the Combinatoric Power of Command-Line Tools and Utilities
by Brian P. Hogan
Pragmatic Bookshelf (2019); ISBN 978-1680502961 [Publisher] [Biblio][IndieBound]

Cover of Five Dysfunctions of a Team book The Five Dysfunctions of a Team
by Patric M. Lencioni
Jossey-Bass (2002); ISBN 0787960756 [Publisher] [Biblio] [IndieBound]

Cover of Clean Cratfsmanship Clean Craftsmanship: Disciplines, Standards, and Ethics
by Robert C. Martin
Addison-Wesley Professional (2021) ISBN 9780136915713 [Publisher] [Biblio] [IndieBound]

Cover of Software Development, Design and Coding book Good Code, Bad Code: Think like a software engineer
by Tom Long
Manning (2021); ISBN 978-1617298936 [Publisher] [Biblio] [IndieBound]

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 0596809484
[online archive] [GitBook] [Biblio] [Publisher]

Required Online Resources

Logo for ACM code of ethics ACM Code of Ethics and Professional Conduct
by ACM
acm.org (2021); Available Online

Logo for IEEE Computing Society Software Engineering Code of Ethics and Professional Practice
by IEEE-CS/ACM
ieee.org (1999); Available Online

Logo for Apache Ant Apache Ant Manual
ant.apache.org (2021); Available Online

Logo for Apache AntGradle User Manual
gradle.org (2021); Available Online

Logo for JUnit 5 JUnit 5 User Guide
by Stefan Bechtold, et al.
junit.org (2021); Available Online

Logo for Git Git Tutorial
git-scm.com (2021); Available Online

Logo for GitHub GitHub Help Documentation
github.com (2021); Available Online

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


Context

In an ideal world, the knowledge and practices of computer science and software development would be objective. However, much of knowledge is subjective and representative of a small set of privileged voices. In this class, we will strive to draw on sources from a diverse group of scholars and practitioners. Even so, limits will still exist on this diversity. I acknowledge that it is possible that there may be overt and covert biases in material because of the lens through which it was written. Integrating a diverse set of experiences is important for more comprehensive understandings of Computer Science and Software Development. I would like to discuss issues of inclusion and diversity in computer science and software development as part of the course from time to time.

Please contact me directly or submit anonymous feedback if you have any suggestions to improve the quality of the course materials.

Furthermore, I would like to create a learning environment that supports diversity (of thoughts, perspectives, and experiences) and honors your identities (background, gender, class, sexuality, religion, ability, …). To help accomplish this:

  • Please let me know your preferred name and set of pronouns (if any); especially if this differs from what appears in your official MSU Denver records.
  • If you feel like your performance in the class is being affected by your experiences outside of class, please don’t hesitate to talk with me. I want to be a resource for you. Remember that you can also submit anonymous feedback. If you prefer to speak with someone outside of the course, MSU Denver’s Campus Support Programs webpage is a useful resource.
  • I am continually in the process of learning and discovering diverse perspectives and identities. If I or a classmate says or writes something that makes you feel uncomfortable, please talk to me about it.
  • As a participant in discussions, you also should strive to honor the diversity of your classmates.

Course Policies

Preparation & Participation

You are expected to prepare in advance for class sessions (by reading, doing exercises, etc.) and to contribute through participation in all class activities and discussions. Your contributions to the learning environment are highly valued. Participation in class activities and discussions is mandatory and constitutes part of the overall assessment of performance in the course.

The books and references do not provide all of the information necessary to successfully complete the course. Significant information is disseminated during class sessions and via the course websites. You are responsible for knowing this information whether or not you attended the sessions and accessed the websites. You are strongly advised to take notes during class sessions.

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

Acquisition of team-oriented skills and practices is integral to this course and comprises part of the assessment. Individual performance in support of team-building will be recognized. The entire project team is judged by the team’s collective performance.

Grading

The course grade is determined by the successful completion of assessment items detailed on the course website. Letter grades are assigned using the following percentage-based conversion.

90% A
80% B < 90%
70% C < 80%
60% D < 70%
F < 60%

Collaboration & Acknowledgments

Successful software development 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. Collaboration is an essential aspect of learning computer science and the practice of software development. Collaboration and discussion with fellow students, instructors, and university resources (such as the Writing Center) is strongly encouraged. You are neither expected nor advised to learn the course content in isolation.

Project work in this course will be collaborative in nature. That said,

in order to provide fair and meaningful assessment for grading, the work you turn in must reflect your efforts. You must create your own submissions, identifying your individual effort, for each assessment item submitted, whether or not the outcome resulted from your contributing to a collaborative effort.

Note that you must compose and submit a personal reflection for every collaborative and individual effort.

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

In every submission, you must credit the people with whom you worked or consulted.

If you consult any sources (people or works), your submission must explicitly reference those sources and indicate where and how they apply.

If you include quotations or derivatives—egardless of medium (text, graphics, program code, etc.)—your submission must include explicit citations that identify the sources.

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.

 

Activities, Assignments & Projects

Activities, assignments, and projects afford the opportunity to practice applying the concepts, to enhance understanding, and to demonstrate knowledge and the ability to apply ihat knowledge.

Details regarding assignments and projects are provided in class or on the course websites. Assignment specifications explicitly state submission requirements. These include required use of website submission form fields and the number, type, and names of any uploaded files.

Deliverables

Reflections

Significant learning can result from reflecting on one's own experiences.

Every submitted assignment must include a section, of approximately 150 words of prose, labeled “Reflection”. In this section, you describe personal learning as well as insights and observations that arose from self-reflection on the experiences associated with the assignment.

This reflection is required whether or not the assignment specification mentions it explicitly. Reflections comprise a portion of the score of every submitted assignment.

Online Submission via Website

Assignments must be turned in using the course website unless explicitly specified otherwise. In particular, email and hardcopy will not be accepted in lieu of website submission.

Assignment Availability (Submission Window)

Each assignment has a specific date/time when it will begin to accept submissions, usually coinciding with the visibility of the assignment.

Each assignment also has a specific date/time after which the assignment will no longer accept submissions.

Assignments may be submitted at any time from when the assignment begins allowing submissions until the assignment’s published due date/time.

N.B. No assignment submissions will be accepted after the published due date/time.

Because there are so many risks to completion and submission, you are strongly encouraged to complete and submit assignments no less than 24 hours prior to the published due date/time. Computer systems and networks commonly experience "down times". Do not depend on systems, including the course support servers, to be consistently available immediately preceding a deadline.

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

Requirements-Based Scoring

Assignment descriptions explicitly state necessary submission requirements, both content and structure, including appropriate use of assignment submission fields and the names and types of uploaded files if appropriate.

Here are general file format specifications that apply unless overridden by an assignment specification:

  • The online text field of the assignment submission form is used for reflections.
  • File attachments within the online text field are never acceptable.
  • Text-only documentation should be plain (unformatted) text using ASCII or UTF-8 encodings.
  • Files are uploaded individually, not as an archive.
  • Specifically unacceptable file formats include:
    • Microsoft Word, Apple Pages, Microsoft PowerPoint, Apple Keynote, and Rich Text Format.

If you are unsure about the acceptability of a file format or the specification of a file name, please check with me well before the submission deadline.

  • A deliverable submitted in an incorrect format is equivalent to no submission.
  • A file submission with an incorrect name is equivalent to no file submission.

If your submission does not follow the requirements specified for the assignment, exactly matching filenames and formats, your score on an assignment may be zero (0).

There is also a purely practical perspective. Assignment submissions are processed using programs designed to the assignment specifications. Thus submissions that do not match the specifications do not get packaged and presented for review and scoring.

 

Academic Dishonesty

Turning in work that includes quotations or derivatives (text, graphics, program code, etc.) without corresponding citations, does not properly cite references, or does not credit collaborators will be treated as an act of academic dishonesty.

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.


Recommended/Optional References:


Cover of Pragmatic Programmer book The Pragmatic Programmer (20th Anniversary Edition)
by David Thomas & Andrew Hunt (2019)
Pragmatic Bookshelf. ISBN 9780135957059 [Publisher] [Biblio] [IndieBound]

Cover of You Are the Team You Are The Team: 6 Simple Ways Teammates Can Go From Good To Great
by Michael G. Rogers (2017); Self-Published. ISBN 9781546770855

Cover of Refactoring Five Lines of Code: How and When to Refactor
by C. Clausen (2021); Manning Publications. ISBN 9781617298318

Cover of Refactoring Refactoring: Improving the Design of Existing Code, Second Edition
by M. Fowler (2019); Addison-Wesley Professional. ISBN 9780134757599

Cover of Refactoring LinuxCommand.org
by William E. Shotts, Jr. (2021) Online.


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

Cover of Clean Agile book Clean Agile: Back to Basics
by R. C. Martin (2019); ISBN 978-0135781869

Cover of Clean Architecture Clean Architecture: A Craftsman's Guide to Software Structure and Design
by R. C. Martin (2017); ISBN 9780134494166

Cover of Software Design Decoded Software Design Decoded: 66 Ways Experts Think
by M. Petre, A. Van Der Hoek, Y. Quach (2016); ISBN 9781546770855


  • Debug It! Find, Repair, and Prevent Bugs in Your Code by P. Butcher (2009) ISBN 9781934356289
  • Debugging Teams: Better Productivity through Collaboration by B. W. Fitzpatrick and B. Collins-Sussman (2015); ISBN 9781491932056
  • Introduction to Software Design with Java by M. P. Robillard (2019) ; ISBN 9783030240943
  • Java by Comparison: Become a Java Craftsman in 70 Examples by S. Harrer, et al. (2018); ISBN 9781680502879

Official Information

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

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
  • 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.
  • 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: http://www.msudenver.edu/events/academic/
Additional official dates and deadlines, including the last dates to withdraw and holidays

MSU Denver Student Rights and Responsibilities: https://catalog.msudenver.edu/content.php?catoid=38&navoid=2672