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.
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 |
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.
Upon successful completion of this course, you'll be able to:
This course covers areas essential for professional software development:
Successful completion of the course requires demonstration of competence in all of these areas.
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.
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.
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.
ACM Code of Ethics and Professional Conduct
by ACM
acm.org (2021)
Software Engineering Code of Ethics and Professional Practice
by IEEE-CS/ACM
ieee.org (1999)
Git Tutorial
git-scm.com
GitHub Help Documentation
github.com
Apache Ant Manual
ant.apache.org
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]
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]
The Five Dysfunctions of a Team
by Patrick M. Lencioni
Jossey-Bass (2002); ISBN 0787960756 [Auraria Library] [Publisher]
Clean Craftsmanship: Disciplines, Standards, and Ethics
by Robert C. Martin
Addison-Wesley Professional (2021) ISBN 9780136915713 (On reserve at Auraria Library) [Publisher] [Biblio]
Good Code, Bad Code: Think like a software engineer
by Tom Long
Manning (2021); ISBN 978-1617298936 [Publisher] [Biblio]
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.
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.
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.
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.
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.
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 consultation of work by others are the norms in the computing community.
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.
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.
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.
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.
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.
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 policies applicable to all courses may be accessed at https://www.msudenver.edu/computer-sciences/policies/
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)