SLU logo

CSCI 5030 - Principles of Software Development

Fall 2020

Instructor David Ferry, Homepage
Course Web Site http://cs.slu.edu/~dferry/courses/csci5030/
Course meeting times Monday, Wednesday, & Friday from 2:10 - 3:00
Classroom: Ritter Hall Rm. 115
Zoom link: Click here to join
Zoom passcode: 954826
You must be authenticated through SLU to join this meeting
Final exam period
Thursday, December 3rd, 2:00PM-3:50PM
Office hours See my schedule
Contact You may contact me in person during office hours or during class time, or you may email me at dferry@slu.edu. I am also available to meet by appointment, see my schedule.

Contents
  1. Course Description
  2. Prerequisites
  3. Course Schedule
  4. SLU Git Repository
  5. Textbooks and Other Resources
  6. Course Readings
  7. Grading
  8. Attendance
  9. COVID-19 Considerations for Fall 2020
  10. Fall 2020 Mask Policy
  11. Academic Integrity
  12. Title IX Statement
  13. Academic Support
  14. Disability Services
  15. Writing Center
  16. Basic Needs Security

Course Description

Software engineering perhaps stands alone as a technical discipline in which there are no universally accepted techniques (either in academia or industry) that everyone agrees produces good software. Instead, there are a wide variety of practices that have grown up around a diverse set of organizations and philosophies. Rather than cataloguing all these techniques and attempting to prescribe their uses, we will look at succesful case studies, listen to experienced veterans describe their approaches, and try to develop an intuition of how successful software projects are run in practice. We will also get hands-on experience with the tools and techniques of a modern software development ecosystem, and put these into practice in a semester-long team project.

The four elements of this course are class meetings, quizzes, exams, and a project. This course will be taught as a graduate style seminar- some meeting times will be used for lecture, but out-of-class readings will also be the basis for in-class discussions. Six quizzes will evaluate the student's understanding of class readings, while the exams will assess your ability to comprehensively integrate class topics.

The course project will be an exercise in agile software development following the scrum process. We will discuss agile/scrum soon, but in short effort on the project will be structured around two week sprints. You will be evaluated at three milestones: an alpha product around midterms, a beta product in early November, and a final release on the last day of classes. You will be evaluated on the quality of your product and your group's adherence to process, as well as your individual contributions. Your individual performance will be evaluated by Git commit logs, your participation in code reviews of others' commits, and peer evaluations at the alpha/beta/final stages.

Definite topical outline:

Tenative topics:

Assessment Objectives- at the completion of this course, students will be able to:

Catalog Description:An overview of software development at a graduate level, including software engineering processes, software design and architecture, testing and quality assurance, and selected other topics of interest to software practitioners.


Prerequisites

There are no formal catalog prerequisites for this course, but expectations are commensurate with a graduate computing course:

Please see the instructor if you're missing a prerequisite or uncertain about your preparation for this course.


Course Schedule

A tentative course schedule is below. Note that this schedule may change over the course of the semester. When changes occur, students will be given enough advance notice so that readings and other preparation may be accommodated.

The "Readings" field refers to material that will be discussed that day in class, not homework for that day. For example, the readings for August 19th will be discussed in class on August 19th. Readings should be completed prior to coming to class for the day.

Week Date Topic Readings Notes
Week 1 Aug 17 Course Introduction (Class Discussion)
Aug 19 Software Development Processes
(Class Discussion)
"Real Software Engineering" by Glenn Vanderburg Class 1
Aug 21 (Class Discussion - Vanderberg Part 2)
Week 2 Aug 24 Agile and Scrum Review the basic concepts of Agile development:
(Classroom Discussion)
https://www.agilealliance.org/agile101/
The Agile Manifesto
Principles of the Manifesto
Introduction to the Scrum Methodology:
What is Scrum
Then watch the "Introduction to Scrum" and "Sprint Planning Meeting Videos" at the next link:
Agile E-Learning
Class 2
Agile and Scrum Slides
Aug 26 The Dark Side of Scrum
(Classroom Discussion)
How agile software developers saved healthcare reform in America. Never says Agile/Scrum, but read and create a list of commonalities with Scrum methodology:
Obama's Trauma Team
Watch and/or read also:
Daily Scrum Meeting Training
"Dark Scrum"
"The State of Agile Software in 2018"
Scrum Anti-Patterns
Dark Scrum Slides
Aug 28 (Dark Scrum Classroom Discussion)
Week 3 Aug 31 Project Introduction
(Classroom Discussion)
Project Prompt
Websockets Demo
Project Slides
Sept 2 Sprint 1 Planning Meeting (Classroom Discussion) Group Assignments Quiz 1
Sept 4 Version Control and Git
Asynchronous Lecture
Git Slides
Workflow Exercise
Week 4 Sept 7 Branching Models for Git
(Class Discussion)
A Successful Git Branching Model
Git Workflows
Git Branching Slides
Rebasing Exercise
Sept 9 Intro to Test Driven Development
Sprint Reviews and Retrospectives
(Class Discussion and ScholarStrike)
Intro to Test Driven Development
TDD: The Bad Parts
Sept 11 Sprint Discussion Time
Week 5 Sept 14 Sprint 1 Review Meeting Quiz 2
Sprint Retrospective Slides
Sept 16 Sprint 2 Planning Meeting
Sept 18 Sprint Discussion Time
Week 6 Sept 21 More on Testing
(Class Discussion)
Uncle Bob on Test Doubles Unit Testing in Python
Sept 23 Continuous Integration
TDD in Gitlab
Gitlab CI/CD
Sept 25
Week 7 Sept 28 Test Types
(Class Discussion)
Twitter-Text
Feedback & Telemetry (13:55 thru 18:10)
Unit Testing vs. Feature (Behavior) Testing
Testing Slides
Sept 30 Sprint 2 Review Quiz 3
Oct 2
Week 8 Oct 5 Git Deep Dive Video
Oct 7 Midterm Exam
Oct 9 Sprint 3 Planning
Week 9 Oct 12
Oct 14 Exam Review
Oct 16
Week 10 Oct 19 Code Reviews
(Class Discussion)
Code Review Exercise
The Human Side of Code Reviews:
Part 1
Part 2
Optional: They Write the Right Stuff, a look at how high-stakes software is created for space missions (and which is actually a passionate defense of the waterfall model- remember to read critically!)
Code Reviews
Oct 21 Software Architecture
(Class Discussion)
Software Architecture
Oct 23
Week 11 Oct 26 Engineering Case Study: Mozilla
(Class Discussion)
Mozilla Case Study
Oct 28 Engineering Case Study: Twitter
(Class Discussion)
Quiz 4
Twitter Case Tudy
Oct 30
Week 12 Nov 2 Sprint 3 Review For lack of a better term, "pro" architecture articles:
There's No Conflict Between Architecture and Agile
An Agile Approach to Software Architecture
Articles critical of "Architecture Astronauts":
Don't Let the Architecture Astronauts Scare You
Architecture Astronauts Take Over
A personal account of wrestling with architecture:
The Hard Things About Simple Things
Archiecture Discussion and Sprint 3 Retrospective
Nov 4 Sprint 4 Planning Sprint 4 Planning Form
Nov 6
Week 13 Nov 9 Technical Debt Technical Debt Slides
Nov 11 Refactoring Quiz 5
Refactoring Slides
Nov 13
Week 14 Nov 16 Sprint 4 Review
Presentation Prep
Nov 18 Course Conclusion Course Conclusion Slides
Nov 20
Week 15 Nov 23 Project Presentations Quiz 6
Final Dec 3 Final Exam Period - 8:00AM to 9:50AM

SLU Git Repository

Version control software is used to track changes to all artifacts related to this course. Most importantly this means project source code, but you should track absolutely all of your work using version control: data files, config files, build scripts, test code, documentation, READMEs, licence files, project websites and other resources, and so on.

Some things should not be tracked: generated files such as intermediate compilation products and binary executable files bloat the repository, and can't be used unless the server environment is totally replicated by the user. Dependencies such as libraries should be indicated and not replicated, unless you're willing to take on the challenge of regularly updating and maintaining those libraries as well.

There are many reasons why version control is a universal software development tool:

A short guide to using SLU's git resources


Textbook and Class Resources

In lieu of a textbook, we will have online readings throughout the semester.


Class Readings

Readings are a crucial part of this course. The goal of our readings is to hear from successful, real-world practitioners and ground our dicussions in what does and does not work in practice.

If the schedule has a reading listed for a given date then you should consume that material prior to that class period and come ready to discuss it on that date. Please be thoughtful and reflective about our readings, as the quality of the discussion (and in turn, what you and your peers get from the course) is directly related to your preparation.

A great general-purpose way to respond to any content (in this course or in any other course) is to answer the following questions:

  1. What do you remember from the reading/video?
  2. What was confusing, or what do you still have questions about?
  3. What stuck out to you or surprised you?
  4. What did you see/read/hear that connects to something you've learned or experienced previously (in this course or outside it)?
  5. How would you use this in the future?

Please feel free to go further than this in responding to any of the course material, but if you can answer these questions for yourself then you are probably adequately prepared for our class discussions.


Grading

The semester schedule for exams and quizzes is known well in advance. Make up quizzes and exams will only be given for severe and documented reasons. Your lowest scoring quiz will be dropped.

Your grade will be determined as follows:

Activity Grade Percentage
Project 50%
Quizzes 25% (5% each out of five, the lowest grade is dropped)
Midterm 12.5%
Final 12.5%

Grading is done on a straight scale (uncurved). The following scores are guaranteed. The grading scale may be curved upwards (in your favor) at the discretion of the instructor.

Project work assigned for this course is generally expected to be completed collaboratively. However, the sharing of written work or code between teams is strictly prohibited. Exams and quizzes are individual assignments and collaboration is strictly prohibited. Occasionally, the readings for classes may include non-credit exercises designed to inform or enhance your understanding of the material. These non-credit exercises may be completed collaboratively.

Some specific guidelines for this course:


Attendance

Successful students attend all or mostly all class sessions. This is true in my experience and has been demonstrated in large scale studies as well. In that study, even students who attended nine out of ten class periods had measurably lower class performance than those who attended all classes. However, there is no attendance requirement for this class, and you do not need to get permission when you do miss class. You are an adult and have the freedom to manage your time in whatever way you feel is most useful. Job interviews, conferences, tests in other courses, etc. are all reasonable cases for being absent.

Note that in-class assignments such as tests or quizes cannot be made up outside of class without prior approval from the instructor. All such activities will be listed course schedule with ample time to prepare (i.e. there are no "pop quizes").

If you do miss class you should refer to the course schedule to see what was missed and arrange to get course notes from another student. I am always happy to answer questions but I do not repeat full class periods in office hours.

Required University Attendance Statement for Fall 2020

The health and well-being of SLU’s students, staff, and faculty are critical concerns. Accordingly, the following University policy statements on in-person class attendance are designed to preserve and advance the collective health and well-being of our institutional constituencies.
  1. Students who exhibit any potential COVID symptoms (those that cannot be attributed to some other medical condition the students are known to have, such as allergies, asthma, etc.) shall absent themselves from any in-person class attendance or in-person participation in any class-related activity until they have been evaluated by a qualified medical official. Students should contact the University Student Health Center for immediate assistance.
  2. Students who exhibit potential COVID symptoms (those that cannot be attributed to some other medical condition the students are known to have, such as allergies, asthma, etc.) but who feel well enough to a) attend the course synchronously in an online class session or b) participate in asynchronous online class activities, are expected to do so. Those who do not feel well enough to do so should absent themselves accordingly.
  3. Students (whether exhibiting any of potential COVID symptoms or not, and regardless of how they feel) who are under either an isolation or quarantine directive issued by a qualified health official must absent themselves from all in-person course activity per the stipulations of the isolation or quarantine directive. They are expected to participate in synchronous or asynchronous online class activities as they feel able to do so, or absent themselves accordingly.
  4. Students are responsible for notifying each instructor of an absence as far in advance as possible; when advance notification is not possible, students are responsible for notifying each instructor as soon after the absence as possible.
  5. As a temporary amendment to the current University Attendance Policy, all absences due to illness or an isolation/quarantine directive issued by a qualified health official shall be considered “Authorized” absences (effective August 2020 through May 2021).

COVID-19 Considerations for Fall 2020

Notification of absences: You do not need to notify the instructor that you are missing a regular synchronous class meeting. Notify the instructor as early as possible if you have a conflict with exam times.

Student Absences: It is the responsibility of the student to accommodate their absence. Make arrangements in advance with another student to get a report of synchronous class activities and their notes for the day. Our synchronous meetings will be recorded via Zoom, but do not rely on such recordings: they do not record group breakout sessions, the recording may fail, etc.

Late work: Severe illness is a reasonable basis to request an extension on lab assignments. However, my experience is that extensions tend to do more harm than good for many as once you get behind on work it can be difficult to catch up. All students would be well-served by starting assignments early especially with the uncertainty due to COVID-19.

What happens if the course instructor becomes ill: As this is already a hybrid in-person/online course the class will proceed as entirely online if the instructor is well enough to meet. Otherwise a replacement faculty from the computer science department will take over synchronous meeting times.

Depending on the timing of the illness some modification to the course schedule and assignment deadlines may be required. If any modification takes place it will always be announced and made in favor of the student- e.g. deadlines may be extended, but never shortened. The group exam times will not be moved under any circumstances.

The major grade for this course is the course project- this is a group project and we have sufficient development tools (Git, etc.) to continue working on this project regardless of whether we can meet in person or remotely. I expect you to continue your regular group meetings and project work regardless of what happens with myself and lecture.

Grading policy changes: If circumstances require it, certain graded elements of the course may be eliminated or replaced with a substitute. In the case of substitution the new assignment will have the same point-values as the old assignment: for example if the midterm exam is replaced with a programming project that programming project will be worth 12.5% of your final grade. In the case of elimination the point-values assigned to the activity group will not change: for example if we eliminate one of the five quizzes then the remaining four will collectively still be worth 25% of the final grade.


Mandatory Statement of Face Masks (Fall 2020)

The University’s Interim Policy on Face Masks governs all students, faculty, staff, and campus visitors in all University-owned, leased, or operated facilities. All persons physically present in any such University facility associated with this course shall comply fully with this policy at all times. Masks must be worn before entry to all such University facilities (as well as outdoors on all University property when six feet of distance is unpredictable or cannot be maintained).

Saint Louis University is committed to maintaining an inclusive and accessible environment. Individuals who are unable to wear a face mask due to medical reasons should contact the Office of Disability Services or Human Resources to initiate the accommodation process identified in the University’s ADA Policy. Inquires or concerns may also be directed to the Office of Institutional Equity and Diversity. Notification to instructors of SLU-approved ADA accommodations should be made in writing prior to the first class session in any term (or as soon thereafter as possible).

As the instructor of this course, I shall comply fully with SLU’s policy and all related ADA regulations.

Students who attempt to enter a classroom without wearing masks will be asked by the instructor to wear masks prior to entry. Students who remove their masks at any time during a class session will be asked by the instructor to resume wearing their masks.

Note: Accordingly, no consumption of any food will be allowed in class.

Students who do not comply with a request by a SLU instructor to wear a mask in accordance with the University’s Interim Policy on Face Masks may be subject to disciplinary actions per the rules, regulations, and policies of Saint Louis University, including but not limited to the Student Handbook. Non-compliance with this policy may result in disciplinary action, up to and including any of the following:

To immediately protect the health and well-being of all students, instructors, and staff, instructors reserve the right to cancel or terminate any class session at which any student fails to comply with faculty or staff request to wear a mask in accordance with University policy.

Students are strongly encouraged to identify to their instructor any student or instructor not in compliance. Non-compliance may be anonymously reported via the SLU Integrity Hotline at 1-877-525-5669 (or confidentially via the Integrity Hotline's website at http://www.lighthouse-services.com/slu.


Academic Integrity

Academic integrity is honest, truthful and responsible conduct in all academic endeavors. The mission of Saint Louis University is "the pursuit of truth for the greater glory of God and for the service of humanity." Accordingly, all acts of falsehood demean and compromise the corporate endeavors of teaching, research, health care, and community service via which SLU embodies its mission. The University strives to prepare students for lives of personal and professional integrity, and therefore regards all breaches of academic integrity as matters of serious concern.

The governing University-level Academic Integrity Policy was adopted in Spring 2015, and can be accessed on the Provost's Office website at: https://www.slu.edu/provost/policies/academic-and-course/policy_academic-integrity_6-26-2015.pdf.

Additionally, each SLU College, School, and Center has adopted its own academic integrity policies, available on their respective websites. All SLU students are expected to know and abide by these policies, which detail definitions of violations, processes for reporting violations, sanctions, and appeals. Please direct questions about any facet of academic integrity to your faculty, the chair of the department of your academic program, or the Dean/Director of the College, School or Center in which your program is housed. Specific College of Arts and Sciences Academic Honesty Policies and Procedures may be found here.


Title IX Statement

Saint Louis University and its faculty are committed to supporting our students and seeking an environment that is free of bias, discrimination, and harassment. If you have encountered any form of sexual harassment, including sexual assault, stalking, domestic or dating violence, we encourage you to report this to the University. If you speak with a faculty member about an incident that involves a Title IX matter, that faculty member must notify SLU’s Title IX Coordinator and share the basic facts of your experience. This is true even if you ask the faculty member not to disclose the incident. The Title IX Coordinator will then be available to assist you in understanding all of your options and in connecting you with all possible resources on and off campus.

Anna Kratky is the Title IX Coordinator at Saint Louis University (DuBourg Hall, room 36; anna.kratky@slu.edu; 314-977-3886). If you wish to speak with a confidential source, you may contact the counselors at the University Counseling Center at 314-977-TALK or make an anonymous report through SLU’s Integrity Hotline by calling 1-877-525-5669 or online at http://www.lighthouse-services.com/slu. To view SLU’s policies, and for resources, please visit the following web addresses: https://www.slu.edu/about/safety/sexual-assault-resources/index.php and https://www.slu.edu/general-counsel.

IMPORTANT UPDATE: SLU’s Title IX Policy (formerly called the Sexual Misconduct Policy) has been significantly revised to adhere to a new federal law governing Title IX that was released on May 6, 2020. Please take a moment to review the new policy and information on the following web address: https://www.slu.edu/about/safety/sexual-assault-resources/index.php. Please contact the Anna Kratky, the Title IX Coordinator, with any questions or concerns.


Supporting Student Success

In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. The Student Success Center, a one-stop shop, which assists students with academic and career related services, is located in the Busch Student Center (Suite 331). Students can visit https://www.slu.edu/life-at-slu/student-success-center/ to learn more about tutoring services, university writing services, disability services, and academic coaching.


Disability Services

Students with a documented disability who wish to request academic accommodations must contact Disability Services to discuss accommodation requests and eligibility requirements. Once successfully registered, the student also must notify the course instructor that they wish to access accommodations in the course.

Please contact Disability Services, located within the Student Success Center, at Disability_services@slu.edu or 314-977-3484 to schedule an appointment. Confidentiality will be observed in all inquiries. Once approved, information about academic accommodations will be shared with course instructors via email from Disability Services and viewed within Banner via the instructor’s course roster.

Note: Students who do not have a documented disability but who think they may have one are encouraged to contact Disability Services.


University Writing Services

Students are encouraged to take advantage of University Writing Services in the Student Success Center; getting feedback benefits writers at all skill levels. Trained writing consultants can help with writing projects, multimedia projects, and oral presentations. University Writing Services offers one-on-one consultations that address everything from brainstorming and developing ideas to crafting strong sentences and documenting sources. For more information, visit https://www.slu.edu/life-at-slu/student-success-center/ or call the Student Success Center at 314-977-3484.


Basic Needs Security

Students in personal or academic distress and/or who may be specifically experiencing challenges such as securing food or difficulty navigating campus resources, and who believe this may affect their performance in the course, are encouraged to contact the Dean of Students Office (deanofstudents@slu.edu or 314-977-9378) for support. Furthermore, please notify the instructor if you are comfortable in doing so, as this will enable them to assist you with finding the resources you may need.