Instructor | David Ferry, Homepage |
Course Web Site | http://cs.slu.edu/~dferry/courses/csci5030/ |
Course meeting times | Tuesday & Thursday from 9:30 - 10:45, Ritter Hall Rm. 117 |
Final exam period |
December 17th, 8:00AM-9:50AM |
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. |
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 systems. 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 large 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.
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.
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 29th will be discussed in class on August 29th. Readings should be completed prior to coming to class for the day.
Week | Date | Topic | Readings | Notes |
---|---|---|---|---|
Week 1 | Aug 27 | Course Introduction | ||
Aug 29 | Software Development Processes | "Real Software Engineering" by Glenn Vanderburg | Class 1 | |
Week 2 | Sept 3 | Agile and Scrum | Review the basic concepts of Agile development: 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 |
Sept 5 | The Dark Side of Scrum | How agile software developers saved healthcare reform in America. Never says 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 | |
Week 3 | Sept 10 | Sprint 1 Planning Meeting | Quiz 1 Project Slides |
|
Sept 12 | Version Control and Git | Git Slides Workflow Exercise |
||
Week 4 | Sept 17 | Branching Models for Git | A Successful Git Branching Model Git Workflows |
Git Branching Slides Rebasing Exercise |
Sept 19 | Intro to Test Driven Development Sprint Reviews and Retrospectives |
Intro to Test Driven Development TDD: The Bad Parts |
||
Week 5 | Sept 24 | Sprint 1 Review Meeting | Quiz 2 Sprint Retrospective Slides |
|
Sept 26 | Sprint 2 Planning Meeting | |||
Week 6 | Oct 1 | More on Testing | Unit Testing in Python | |
Oct 3 | Continuous Integration TDD in Gitlab |
Gitlab CI/CD | ||
Week 7 | Oct 8 | Test Types | Twitter-Text Feedback & Telemetry (13:55 thru 18:10) Unit Testing vs. Feature (Behavior) Testing |
Testing Slides |
Oct 10 | Sprint 2 Review | Quiz 3 | ||
Week 8 | Oct 15 | Git Deep Dive | ||
Oct 17 | Midterm Exam | |||
Week 9 | Oct 22 | No class: Fall Break | ||
Oct 24 | Exam Review and Sprint 3 Planning | |||
Week 10 | Oct 29 | Code Reviews | 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 31 | Software Architecture | Software Architecture | ||
Week 11 | Nov 5 | Engineering Case Study: Mozilla | Mozilla Case Study | |
Nov 7 | Engineering Case Study: Twitter | Quiz 4 Twitter Case Tudy |
||
Week 12 | Nov 12 | 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 14 | Sprint 4 Planning | Sprint 4 Planning Form | ||
Week 13 | Nov 19 | Technical Debt | Technical Debt Slides | |
Nov 21 | Refactoring | Quiz 5 Refactoring Slides |
||
Week 14 | Nov 26 | Sprint 4 Review Presentation Prep |
||
Nov 28 | No class: Thanksgiving Break | |||
Week 15 | Dec 3 | Course Conclusion | Course Conclusion Slides | |
Dec 5 | Project Presentations | Quiz 6 | ||
Final | Dec 17 | Final Exam Period - 8:00AM to 9:50AM |
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 everything 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
In lieu of a textbook, we will have online readings throughout the semester.
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:
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").
As previously mentioned, a portion of your project grade is adherence to the scrum methodology. Sprint planning and review meetings are integral to the scrum method and therefore your attendance at these class periods will influence your grade.
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.
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.
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 misconduct (e.g. sexual assault, sexual harassment, stalking, domestic or dating violence), we encourage you to report this to the University. If you speak with a faculty member about an incident of misconduct, that faculty member must notify SLU's Title IX coordinator, Anna R. Kratky (DuBourg Hall, room 36; akratky@slu.edu; 314-977-3886) and share the basic fact of your experience with her. 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.
If you wish to speak with a confidential source, you may contact the counselors at the University Counseling Center at 314-977-TALK. To view SLU’s sexual misconduct policy and for resources, please visit the following web addresses: www.slu.edu/here4you and https://www.slu.edu/general-counsel.
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.
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.
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.
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.