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) |
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:
Upon successful completion of this course, students should be able to
Upon successful completion of this course, students should additionaly be able to
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]
The Five Dysfunctions of a Team
by Patric M. Lencioni
Jossey-Bass (2002); ISBN 0787960756 [Publisher] [Biblio] [IndieBound]
Clean Craftsmanship: Disciplines, Standards, and Ethics
by Robert C. Martin
Addison-Wesley Professional (2021) ISBN 9780136915713 [Publisher] [Biblio] [IndieBound]
Good Code, Bad Code: Think like a software engineer
by Tom Long
Manning (2021); ISBN 978-1617298936 [Publisher] [Biblio] [IndieBound]
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]
ACM Code of Ethics and Professional Conduct
by ACM
acm.org (2021); Available Online
Software Engineering Code of Ethics and Professional Practice
by IEEE-CS/ACM
ieee.org (1999); Available Online
Apache Ant Manual
ant.apache.org (2021); Available Online
Gradle User Manual
gradle.org (2021); Available Online
JUnit 5 User Guide
by Stefan Bechtold, et al.
junit.org (2021); Available Online
Git Tutorial
git-scm.com (2021); Available Online
GitHub Help Documentation
github.com (2021); Available Online
Software Engineering Resources
jodypaul.com (2021); Available Online
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:
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.
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% |
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,
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, 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.
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.
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.
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.
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:
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.
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.
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.
The Pragmatic Programmer (20th Anniversary Edition)
by David Thomas & Andrew Hunt (2019)
Pragmatic Bookshelf. ISBN 9780135957059 [Publisher] [Biblio] [IndieBound]
You Are The Team: 6 Simple Ways Teammates Can Go From Good To Great
by Michael G. Rogers (2017); Self-Published. ISBN 9781546770855
Five Lines of Code: How and When to Refactor
by C. Clausen (2021); Manning Publications. ISBN 9781617298318
Refactoring: Improving the Design of Existing Code, Second Edition
by M. Fowler (2019); Addison-Wesley Professional. ISBN 9780134757599
LinuxCommand.org
by William E. Shotts, Jr. (2021) Online.
Clean Code: A Handbook of Agile Software Craftsmanship
by R. C. Martin (2008); ISBN 9780132350884
Clean Agile: Back to Basics
by R. C. Martin (2019); ISBN 978-0135781869
Clean Architecture: A Craftsman's Guide to Software Structure and Design
by R. C. Martin (2017); ISBN 9780134494166
Software Design Decoded: 66 Ways Experts Think
by M. Petre, A. Van Der Hoek, Y. Quach (2016); ISBN 9781546770855
Official policies applicable to all CS courses may be accessed at https://msudenver.edu/cs/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=38&navoid=2672