Software Development Methods and Tools (CS3250)

Course Overview

Using an experiential approach, this class provides introductory experiences with fundamental concepts and practices that are essential for successful software development by members of a team. Participants immerse themselves in hands-on activities and projects that incorporate key software development practices and tools, applying the techniques in real-world scenarios.

Course Metadata

Title: Software Development Methods and Tools
Institution: Metropolitan State University of Denver
Course ID: CS 3250 (Section 001; CRN 50962)
Semester: Fall 2025
Meetings: Mondays & Wednesdays 2:00PM–3:50PM
Office: AES 220  (Drop-ins Welcome!)
Credit Hours: 4*
Prerequisites: CS 2050, ENG 1020, and (COMM 1010 or COMM 1100) grades of "C−" or better
Policies: http://www.jodypaul.com/cs/swdmt
Instructor: Dr. Jody Paul (schedule & office hours)
E-mail: pauljod@msudenver.edu , jody @ computer.org
Office: AES 200Q
Attendance during the first week of class is required: University policy on Class Attendance

Recommended Foundations

To support your success in this upper-division course, it’s helpful to reflect on the foundational knowledge and skills introduced in the courses below. While not formal prerequisites, they represent core concepts and professional practices that are implicitly expected at this stage in a computer science degree.

  • CS 1030 - Computer Science Principles
    Although not a formal prerequisite, students are expected to be familiar with many of the concepts and experiences addressed in CS 1030 class, including:
    • Economic, ethical, legal, philosophical, and social perspectives on computing
    • Essentials of collaborative teamwork
    • Communicating with diverse audiences
    • Critical thinking in technical and societal contexts
  • JMP 2610 - Introduction to Technical Writing
    While not formally required, students should have foundational skills in writing and presenting computer science content clearly and effectively to a variety of audiences.

What You’ll Learn

Upon successful completion of this course, you'll be able to:

Content Areas

This course covers areas essential for professional software development:

Successful completion of the course requires demonstration of competence in all of these areas.

How You'll Demonstrate Your Learning

You'll have opportunities to show your understanding through multiple assessment formats, each designed to develop different professional skills:

This variety of assessment types mirrors the diverse communication skills you'll need in your professional career.


Materials

Materials from Prior Courses

References and resources from prerequisite coursework and electives, such as assignments, notes, books, articles, and projects, represent knowledge and skills you bring into this course and apply to new activities and projects.

Course-Specific Materials

This course uses no-cost informational sources and tools, primarily accessible online with some materials distributed in class. Here are links to initial materials with additional materials accessible throughout the semester.

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

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

Logo for Git Git Tutorial
git-scm.com

Logo for GitHub GitHub Help Documentation
github.com

Logo for Apache Ant Apache Ant Manual
ant.apache.org

Logo for JUnit 5 JUnit 5 User Guide
by Stefan Bechtold, et al.
junit.org

97 Things Every Programmer Should Know: Collective Wisdom from the Experts
edited by K. Henney
O'Reilly (2010); ISBN 0596809484
[online archive] [GitBook] [Publisher]

97 Things Every Software Architect Should Know: Collective Wisdom from the Experts
edited by R. Monson-Haefel
O'Reilly (2009); ISBN 0596555467
[GitBook] [PDF] [Publisher]

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 [Auraria Library] [Publisher]

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

Optional & Recommended

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

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]



Grading

Assessments are scored using point-based grading with corresponding letter-grade interpretations. The following table shows the conversion between points earned and letter grades. The "% Range" column reflects the earned points as a percentage of the total points available before accounting for any extra-credit opportunities.

Points/Letter-Grade Conversion
Letter
Grade
% Range
A 90% ≤ A
B 80% ≤ B < 90%
C 70% ≤ C < 80%
D 60% ≤ D < 70%
F F < 60%

Successful completion of the course requires demonstration of competence (70% or above) in each of the content areas:

The final course score and letter grade are determined by combining all assessments and using the table above.

Assignment Types

Missing and Late Submission Policies


Participation

Your active participation in class activities and discussions is essential to both your and your classmates' learning and success. This course thrives on collaboration, and your preparation, engagement, and contributions create the foundation for everyone's learning experience. We'll work together in class sessions and continue collaborating on projects outside of class.

Class sessions and course resources contain valuable information that builds throughout the semester. To succeed in this course, you'll need to engage with the concepts and content from class sessions and resources, developing your ability to apply them in real-world scenarios. Taking notes and reviewing them regularly will strengthen your understanding and help you contribute more effectively to team discussions.

Professional software development is inherently collaborative—teamwork is the norm, not the exception. Just like in industry, individual skills matter, but teams succeed through collective effort and shared expertise. This course integrates collaborative skills into both learning and assessment. Your grade reflects both your personal contributions and your team’s collective performance.

Class Session Attendance

Attendance is required, and active participation during class is essential. Please plan to attend all sessions and engage fully in collaborative learning activities.

Missing class affects:

If you're facing challenges that affect your attendance, please reach out early so we can work together to find solutions.

Commitment to Learning

Significant learning occurs when you actively engage with the material outside of class. Class time provides structure and specific opportunities for collaboration, but it not sufficient dedicated practice and reflection. Consistent with official credit hour requirements*, plan to spend around eight hours each week outside of class engaged in course-related work, practicing with tools, exploring key concepts, and collaborating with your team.

Deliberate practice and thoughtful reflection are essential to meaningful learning. Engaging consistently and challenging yourself helps you understand the concepts more deeply and makes it easier to apply them when you need to. Reflection allows you to step back from your efforts and outcomes to identify insights and build an understanding of what is actually most important. This course incorporates individual and collaborative learning activities along with personal reflections and group retrospectives. These are designed to help you learn not just by completing tasks, but by also paying attention to your reflections that follow.

Commitment to Collaboration

Team projects require collaboration beyond scheduled class times, similar to how professional teams work together on their own schedules to meet deadlines. While we'll provide some class time for teamwork, successful teams coordinate and blend their individual schedules, enabling them to collaborate effectively and meet project goals. In professional settings, a team's success is often judged by its collective accomplishments, and your ability to work effectively with others mirrors what employers value most. The time you invest in team collaboration directly impacts both your learning and your team's achievements.


Collaboration, Teamwork, and Citation of Sources

Collaboration, teamwork, and consultation of work by others are the norms in the computing community.

Collaboration

Collaborative activity is required for successful completion of this course. In particular, collaboration is regarded as an essential aspect of learning computer science and being a computing professional. Discussion and collaboration with fellow students, instructors, and university resources (such as the Writing Center) are strongly encouraged. You are expected to engage with course content and work on assignments and projects in collaboration with other course participants.

That said, in order to ensure fair and meaningful assessment, you must make your own submissions and report your individual effort, even when your work has benefitted from collaboration.

You will be asked to compose and submit personal reflections, for both collaborative and individual efforts, to demonstrate your learning process.

Teamwork and Shared Responsibility

Team deliverables are expected to be a joint effort involving all team members. An overall evalu

ation will be made for each deliverable that reflects the quality of the product. Each team member will also receive an individual grade. This individual grade may reflect a combination of instructor assessment and peer evaluations. You will be asked to assess the contributions of team members, including your own.

Citations and Acknowledging Contributions

You must credit all people you worked or consulted with, and explicitly reference any sources (people or works) you consulted, clearly indicating where and how they apply.

If you include direct quotations or derivatives (text, graphics, program code, etc.), you must provide explicit citations that identify the sources.


Generative AI Policy

Using generative AI (genAI) is encouraged in this course. Whenever used, you must accurately explain how genAI was used and provide proper attribution (such as the tool name, relevant prompts, session transcript, or other session information). In particular situations, use of genAI or other resources may be restricted or prohibited, and accompanying instructions will explicitly address any such restrictions.


Academic Dishonesty

Turning in work that includes quotations or derivatives in any form (text, graphics, program code, etc.) without corresponding citations, or without properly citing references, or without crediting collaborators will be treated as an act of academic dishonesty. It is your responsibility to ensure that you have properly vetted and cited all sources.

Note: Online aggregators, search engines, and text generators may not properly attribute content. Responsibility for appropriate attribution resides with you, not those service providers.

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.


Catalog Description

This course introduces the basics of large-scale software development. As software size increases. so does the need to use appropriate tools and development techniques. The phases of traditional software development and several current software development lifecycles are introduced. the use of object-oriented techniques for large projects is covered. Creating appropriate and sufficient tests for test-driven and behavior-driven development is discussed. Students learn how to analyze their programs to detect errors and increase performance. The various types of automation used in creating a product are introduced. Students learn about group dynamics and work on a significant project in groups.


Official Information

Official policies applicable to all courses may be accessed at https://www.msudenver.edu/computer-sciences/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=43&navoid=3176

*Federal Credit Hour Definition: A credit hour is an amount of work represented in intended learning outcomes and verified by evidence of student achievement that is an institutionally-established equivalency that reasonably approximates not less than one hour of classroom or direct faculty instruction and a minimum of two hours of out-of-class student work each week for approximately fifteen weeks for one semester hour of credit. 34CFR 600.2 (11/1/2010)