Syllabus: ESOF 423
Spring 2025 Schedule
Note: This page is a living document. Dates and assignments >1 week out may be adjusted
during the semester.
Assignments to be submitted are in bold italics
Week |
Date |
Lecture Topic |
Ind. work |
Group work |
1 |
W Jan 15 F Jan 17 |
CourseOverview, Introductions Projects; Agile Dev & Artifacts |
Introductions
|
Meet others in the class; get an idea of who you might like to work with
|
2 |
M Jan 20 W Jan 22 F Jan 24 |
MLK DAY - No classes Client pitch 1: HRDC Client pitch 2: HRDC |
Clients pitch projects to class |
Listen to client pitches; ask questions; decide which project you'd like to develop
|
3 |
M Jan 27 W Jan 29 F Jan 31 |
Agile Arifacts Scrum (lab) Scrum (lab) |
Be on a team |
Form groups Sprint 0: Planning List Group Members |
4 |
M Feb 3 W Feb 5 F Feb 7 |
Product Releases, Retrospectives Scrum (lab) Scrum (lab) |
|
Lecture
Zero Feature Release |
5 |
M Feb 10 W Feb 12 F Feb 14 |
Git, GitHub Scrum (lab) Scrum (lab) |
Git Exercise |
Lecture Sprint 1: Planning Weekly Scrum |
6 |
M Feb 17 W Feb 19 F Feb 21 |
PRESIDENTS DAY - No classes Scrum (lab) Scrum (lab) |
Peer Survey |
-- Weekly Scrum Alpha release |
7 |
M Feb 24 W Feb 26 W Feb 28 |
Continuous Integration Scrum (lab) Scrum (lab) |
CI Activity |
Lecture Sprint 2: Planning Weekly Scrum |
8 |
M Mar 3 W Mar 5 F Mar 7 |
TDD/PP Scrum (lab) Scrum (lab) |
Peer Survey |
Lecture Scrum Beta release |
9 |
M Mar 10 W Mar 12 F Mar 14 |
Selenium Testing Scrum (lab) Scrum (lab) |
Selenium HW |
Lecture Sprint 3: Planning Scrum |
10 |
Mar 17- 21 |
SPRING BREAK - No classes |
|
|
11 |
M Mar 24 W Mar 26 F Mar 28 |
Black box testing Scrum (lab) Scrum (lab) |
|
Scrum Feature Complete |
12 |
F Mar 31 W Apr 1 F Apr 3 |
User Testing Scrum (lab) Scrum (lab) |
User Tests |
Portfolio Draft Sprint 4 Planning Scrum |
13 |
M Apr 7 W Apr 9 F Apr 11 |
Portfolio Discussion Scrum (lab) Scrum (lab) |
Peer Survey |
Lecture Scrum Release Candidate |
14 |
M Apr 14 W Apr 16 F Apr 18 |
Scrum (lab) Scrum (lab) UNIVERSITY DAY - No classes |
|
Sprint 5 Planning Scrum |
15 |
M Apr 21 W Apr 23 F Apr 25 |
Final Release Logistics Scrum (lab) Scrum (lab) |
Peer Survey |
Lecture Scrum Final Release |
16 |
M Apr 28 W Apr 30 F May 2 |
2 Groups Present: TBD 2 Groups: Present: TBD 2 Groups: Present: TBD |
Presentations Presentations Presentations |
Attendence, |
Finals Week |
M May 5 |
No final exam (We will reserve exam period for presentations if more time is still required.) |
|
|
Course Description
ESOF 423. Software Engineering Applications. 3 Credits. (1 Lec. 2 Lab) S
PREREQUISITES: ESOF 322 Application of software engineering techniques and methodologies acquired in previous courses to solve an open-ended software engineering problem provided by stakeholders. Students will use a team based approach to requirements gathering, designing, implementation, testing, integration and delivery of the software solution. CSCI 440 is recommended.
Resources
- HRDC Google Drive
- Agile, Scrum references
- https://ecat.montana.edu/d2l/home (Assignments, intergroup discussion)
- https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
- https://github.com/
- 2024 Student Projects
Instructor
- Mr. Daniel DeFrance
- Office hours
- Office: Barnard Hall 358
- E-Mail: daniel.defrance@montana.edu
Meetings
- 10:00 pm - 10:50 pm in Roberts Hall Room 210.
- Monday: LECTURE (Software Engineering Topics)
- Wednesday, Friday: LABS (Scrum meetings and group work sessions)
Course Assistants
- TBD
- Availability for Assistance: TBD, and by appointment.
- Location: Barnard Hall 259
- Email:
Lecture Topics
- Software development process: introduction, traditional vs iterative vs agile, scrum,
extreme programming, test driven development, rugby
- Version control: introduction and types of version control systems, distributed version control systems, Git/GitHub
- Software testing: introduction, automated unit testing and xUnit/jUnit, test coverage
- Continuous integration and delivery
- Code Refactoring: code smells, refactoring techniques to remove code smells and to incorporate design patterns
- Test driven development and pair programming: introduction and practical TDD/PP Code
reviews: Introduction, code review planning and checklists, logistics, code reviews
in the industry
- Static Code analysis: introduction, advantages of static analysis, static analysis methods, static analysis tools
Projects
- The projects are specified by outside clients, and each team can take on a project
of their choice.
- Teams are required to develop the product specified by the client through the completion of the provided user stories.
- The teams are required to closely follow agile development methods followed in the industry (http://agilemanifesto.org/).The teams are self organizing and will decide what portions of the project requirements they will implement during each sprint.
- During each planning meeting the team decides the portion of the requirements they
are going to implement during that sprint and discuss how the work is distributed
among team members.
- Teams are required to produce a working piece software at the end of each sprint and will be iteratively and incrementally developed toward the final product.
- The teams are required to maintain project with Git, a proper distributed version control workflow which includes maintaining proper branch structures and frequent meaningful commits by all the developers in the group. We will use GitHub in class for hosting public repos.
- The teams are required to apply quality assurance techniques through unit/integration/system testing and using proper tools to evaluate the test quality (e.g. coverage tool).
Grading
Final letter grades will be based on the relative distribution of total scores and not on any preset numerical grade.
- 20%: 5 Homework Assignments: (individual submission; individual grades)
- Homework assignments will posted on D2L to be completed individually
- 20%: 4 Peer Evaluations: (individual surveys, individual grades)
- Private surveys to check in with all group members on team participation
- 24%: 6 Two-Week Project Sprint Retrospectives: (group submission, individual grades)
- Individual Daily Scrum meeting participation. No D2L submission; graded by observation in class
- Indivudual work done toward achieving the defined sprint goal; from retrospective document
- Activity and maintenance of the git workflow and the repository; as seen in GitHub repo
- 15% : 5 Development releases: (group demo, graded by observation; group grades)
- A series of 5 software releases leading up to the final product
- Proper maintenance of the scrum artifacts; from retrospective document
- Completed requirements, code maintainability/extensibility, quality assurance methods, continuous integration, testing, and delivery.
- 20%: 1 Final Release (presentation, portfolio, release, repo, recording): (group
submission; group grades)
- Presentation - Target audience is the client. Each developer should speak for 3-5 minutes with slides highlighting their contribution and how the client can use the feature. Be prepared for questions.
- Portfolio content: Target audience is a technical developer. Incldue high level UML diagrams displaying the design, discussion on the design patterns used, discussion of code maintainability/extensibility and methods used to accomplish them, quality assurance methods and their evaluation.
- Final Release: Project is COMPLETE: fully featured, tested, debugged, functional, user documented, and usable by clients.
- Revision Control: All source code, CI, technical documentation, issues, links and references are in good order on GitHub.
- Demo - Clear 10 - 15 minute recorded video recording demonstrating usage of the application for an end user
- 1%: Be present for all final presentations. (no submission -- graded by observation)
- Support, learn from, ask questions of the other group's presentations
- Make the total for these things come out to 100%
- 0%: Exams
- :)
Grades are determined based on your score in the class as follows:
Letter Grade | % Score |
---|---|
F | 0 |
D- | 60 |
D | 63 |
D+ | 67 |
C- | 70 |
C | 73 |
C+ | 77 |
B- | 80 |
B | 83 |
B+ | 87 |
A- | 90 |
A | 93 |
Course Outcomes
At the end of the course, students should be able to
-
Design and implement a solution to an open-ended problem in software engineering defined by a stakeholder.
-
Evaluate alternative solutions to a problem in software engineering.
- Effectively and methodically test code, and review code written by others.
- Use written/oral/visual means to document and present the solution to the stakeholder.
Course Policies
See the policies page for expectations and consequences on subjects like collaborating with others, what constitutes cheating, copyright responsibilities, using tools like ChatGPT, lateness, and what to do in case of emergencies.