Not logged in
Talk
Contributions
Create account
Log in
Navigation
Main page
About
People
Publications
Teaching
Resources
Research Blog
Wiki Functions
Recent changes
Help
Licensing
Page
Discussion
Edit
View history
Editing
Software Engineering (Winter 2026)
(section)
From CommunityData
Jump to:
navigation
,
search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Project: Developing a Discord Bot as a Team === Your team will develop, analyze, and deploy a Discord bot in ways that indicate your understanding of key course concepts. This overall project has been broken up into multiple tasks, each building on the previous. ==== Bot Project Task #1 ==== ;Task: Set up your project environment ;Due: Wednesday, January 21, 11:59 pm Pacific Time ;Deliverables: You are done with task 1 if you have a GitHub project environment, a Discord test server for yourself, and a Discord deployment server set up for your group, with all group members and Dr. Champion able to access both the project environment and your group's deployment server. This is a <60 minute task; don't over-complicate it! ;Turn In: A screenshot of your individual Discord test server, a screenshot of your Discord group deployment server, and a screenshot of your GitHub project environment. '''Steps''' # Devise a team name. (in class) # Create a GitHub project environment (one per group) to match the name. Fork the example to create a group-level repository, and create a Kanban board to track work associated with your fork; it's ok to just use the provided Kanban template. (in class) [https://canvas.uw.edu/courses/1878637/files?preview=143554731 Some screenshots of the process] Make sure your board is part of the class organization and you enable 'issues' when you create the Github Repository so that Dr. Champion can add issues you will track on your Kanban board. # Create a personal fork of your team's fork. # Create a Discord deployment server (one per group) (in class). [https://canvas.uw.edu/courses/1878637/files?preview=143554737 Some screenshots of the process] [https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server and Discord has a how-to page as well.] # Create a Discord test server (one per student). # Update your group's GitHub repository settings and README.md so that the front page reflects the state of your project. # Add some ideas to your Kanban board reflecting what you might like a discord bot to do (brainstormed ideas are great) # All group members and Dr. Champion need invites to and should join all group environments. # Ping Dr. Champion in Discord to tell her you're done. She does not want to install your bot, she only wants to be a member of your server! ;Tips: * Feel free to add customizations / tweak the icons (it will help you tell your environments apart from your classmates') * Feel free to use AI tools as a tutor or source for debugging any issues that come up. * Your Discord token needs to be kept private. If you keep your repository private, you can save your token in your .env file. But a repository that is publicly visible can't have a discord token in it. If the repository is public, you can launch the codespace, then edit the .env file, and then launch your app. ==== Bot Project Task #2 ==== ;Task: Version 0.1 of your bot ;Due: Friday, January 23rd, 11:59 p.m. Pacific time ;Deliverables: You are done with task 2 if you have: # cloned your group repository from our class organization # deployed a working Discord bot in your individual test environment # deployed a working Discord bot in your team's deployment environment ('working' in this case means, able to create the simple interaction shown in the tutorial). # refined your brainstormed bot ideas into user stories ;Turn In: 2 Screenshots with a visible chat history which demonstrates that this is the case: one for your group deployment of the bot, one for your personal test server version of the bot. '''Steps''' # We will be using Codespaces in GitHub to deploy your bot. This means all of your work goes on in the cloud without impacting your computer. However, it's not the only way to do things; if you would prefer a different working environment, you might be interested in these [[CSS360_docker_environment_instructions|alternate environment instructions]]. # Your codespaces hostname goes into the Discord Developer portal (same place you got your tokens) in the box 'Interactions Endpoint URL' ==== Bot Project Task #3 ==== ;Task: Version 1.0 of your bot ;Due: Friday, January 30, 11:59 p.m. Pacific time ;Deliverables: You are done with task 3 if you have each completed at least one of the user stories you developed -- or which were supplied by Dr. Champion -- for your first sprint and successfully deployed the updated bot to your group deployment environment for Dr. Champion to review. Tag the code so that it is clear which version is 1.0. See list of steps for all the items you'll be graded on. ;Turn in: 1) A screenshot of version 1.0 of your bot in action in the group environment, depicting the feature you implemented in your user story '''and''' 2) an estimate of how long it took you to do the work (just a sentence with your Canvas screenshot is plenty). '''Steps''' # In sprint planning, assign one of the user stories written by Dr. Champion or by the team to each member of the group. # During the sprint, resolve that user story. # Commit and test often, with clear commit messages. # Open a pull request to merge your branch into the team's main. # Review your pull requests for conflicts. # Merge code and tag a release when done with the sprint scope with release notes and updates to your project description and README.md # Update your Kanban board and mark stories as resolved (make sure they are well-formatted and complete user stories...) # Deploy your version 1.0 into the group deployment environment # Make sure any issues with the previous submissions are resolved. ;Tips: * The exact path your project takes will be different from other groups at this point. Be ready to sort through conflicts using your group chat or in standups! * Feel free to use AI tools as a tutor, as a rapid prototyper, for code review, and as a source for debugging any issues that come up. * If your code lands later and you miss the 1.0 tag, or you discover bugs after the tag has happened, you can tag a new release of 1.0.1, 1.0.2 (etc.) ==== Bot Project Task #4 ==== ;Task: Analyze the architecture of your assigned bot ;Due: Friday, February 6, 11:59 p.m. Pacific time. ;Deliverables: You are done with Task 4 if your group has written an architectural guide and added it to your main repository on GitHub (ARCHITECTURE.md). All group members should have made at least one substantive commit to the guide to receive credit. See list of steps for all the items you'll be graded on. ;Turn in: No need to turn in something for this; Dr. Champion should be able to grade your work right out of GitHub. '''Steps''' # Think about the levels or facets of system architecture involved in your project. # Identify a layer or aspect for each group member to cover. # Each team member should do at least one diagram from the following types: [https://en.wikipedia.org/wiki/Data-flow_diagram data flow diagram (DFD)], [https://en.wikipedia.org/wiki/Activity_diagram activity diagram], [https://en.wikipedia.org/wiki/System_context_diagram system context diagram], [https://en.wikipedia.org/wiki/Computer_network_diagram network diagram], [https://en.wikipedia.org/wiki/Control-flow_graph control-flow graph], [https://en.wikipedia.org/wiki/Class_diagram class diagram], [https://en.wikipedia.org/wiki/Use_case_diagram use case diagram]. If your chosen diagram is trivial, you should do more than one to receive full credit. # Be concise and accurate in your description and clear in your diagrams. Follow the linked instructions as best you can; [https://www.miro.com Miro] is a good tool for this, but you can use whatever tool you like; it's also possible to write diagrams in markdown in GitHub. ;Tips: * Divide up the work so that everyone has a piece to contribute * Include both system architecture and code architecture. * If you are short on ideas, here are a few: what patterns does your code use? If someone wants to add new functionality, how should they do that? How is npm involved? How does Codespaces work? How does your code make things happen in Discord? How is the network functioning? * Consider different audiences: your future self, a curious customer for your bot, a future employer * Feel free to use AI tools as a tutor or source for debugging any issues that come up, however you are responsible for the accuracy of the content. ==== Bot Project Task #5 ==== ;Task: Identify bugs, gaps, and technical debt in your bot and start closing the gaps ;Due: Friday, February 13, 11:59 p.m. Pacific time ;Deliverables: You are done with Task 5 if you have conducted an analysis of limitations and weaknesses in your assigned bot by (1) publishing a report to the main group repository (everyone from the group should contribute to a single report) and (2) creating user stories drawing from both the problems you've found and any new ideas for improving your bot that arise through this process. See list of steps for all the items you'll be graded on. ; Turn in: No artifact turn-in required, Professor Champion will grade the state of your repository and project board. <!-- in future, have students turn in links and be more specific on pieces of the analysis -- what they did, what they found, what should be done. have everyone write unit tests and don't have that as an option --> '''Steps''' # Divide up the different perspectives on code analysis and code hardening into tasks for each group member, choosing ''one'' from the following: ## Examine your code for technical debt and code smells. ## Assess the cyclomatic complexity of the methods in your bot. ## Measure your cohesion and coupling (architecture diagrams might help with this!). ## Measure your test coverage. ## Build a threat model. ## Write a fuzzer to try to break functionality in your bot. ## Unit tests. Write at least 3, these are easy and quick. ## Smoke test. If you don't have one already, write a test that will call all the major functions in your bot and verify that core features are working. ## Implement continuous integration / continuous deployment for your bot. ## Your own idea about what the bot needs (propose a scope to Dr. Champion) # Describe your efforts and findings in a shared code analysis report in your repo. # Create user stories associated with your findings (at least 1 per person; you must write out the story yourself). ;Tips: * Think about how your bot has been used so far. What did your testers say? Did anyone try anything that didn't work or wasn't supported? Maybe that's a bug or feature request? * Think back to when you were writing the bot. Did you cut any corners or implement something quick and dirty, planning to come back to it later? * Think like a bad actor: what happens if you try to break your bot? * Feel free to use AI tools as a tutor or source for debugging any issues that come up, however you are responsible for the content you turn in. ==== Bot Project Task #6 ==== ;Task: Release version 2.0 ;Due: February 27 (Friday), 11:59 p.m. Seattle time. ;Deliverables: You are done with Task 6 if you have each completed at least one very large or three small user stories from your second sprint and deployed version 2 to your production environment for Professor Champion to review. Note the rubric on Canvas for this. Tag the code so that it is clear which version is 2.0. See list of steps for all the items you'll be graded on. ;Turn in: A screenshot of version 2.0 of your bot in action with comments and links to your work, as well as reflections (see rubric) '''Steps''' # In sprint planning, assign user stories to each member of the group. Note the rubric on Canvas for this task. # During the sprint, resolve user stories. User stories should be well-formed: assigned, estimated, with specifications: inputs, outputs, acceptance criteria. Link them to the pull request. # Commit often! Test often! Make sure your commit messages make sense. # Open a pull request to merge your feature branch into the team's main branch. # Review your pull requests for conflicts. # Include an up-to-date SBOM with your release in a standards-compliant format. # Merge code and tag a release when done with the sprint scope. # Deploy your version 2.0 into the production environment. # Update your Kanban board and issue release notes. # Repository must be clean and clear. If you have files from previous releases, they should be clearly marked. ;Tips: * Feel free to use AI tools as a tutor or source for debugging any issues that come up. * Be disciplined in your use of GitHub: use feature branches, pull requests, link pull requests and the user stories they resolve. * Clean up your own messes: don't expect others to fix your conflicts. ==== Bot Project Task #7 ==== ;Task: Release version 2.1 ;Due: Thursday, March 19, 11:59 p.m. Pacific Time (Note that this is AFTER the demo because you will be incorporating feedback from the demo.) ;Deliverables: You are done with Task 7 if you have each completed at least one medium sized (or two small, or many tiny) user stories from your third sprint and deployed version 2.1 to your production environment for Professor Champion to review. Tag the code so that it is clear which version is 2.1. See list of steps for all the items you'll be graded on. ;Turn In: Screenshots of each new feature added for v2.1 and links to the user stories you completed. '''Steps''' # In sprint planning, think about how your demonstration went and reflect on what refinements you'd like to make # Assign user stories to each group member. # Complete at least one well-defined and complete user story. # Commit, test, merge as usual. # Tag a release as 2.1 and update the SBOM # Deploy version 2.1 and screenshot for turn-in purposes. # Update your Kanban board and release notes. # Add a time estimate and reflection as prompted in the assignment. # Repository must be clean and clear. If you have files from previous releases, they should be clearly marked. ;Tips: * You should expect that the grading for 2.1 will be less forgiving than the grading for 2.0, since you are now very familiar with the processes and requirements. * Your group might want to submit this early to boost your finals week flexibility. * Feel free to use AI tools as a tutor or source for debugging any issues that come up.
Summary:
Please note that all contributions to CommunityData are considered to be released under the Attribution-Share Alike 3.0 Unported (see
CommunityData:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:
Cancel
Editing help
(opens in new window)
Tools
What links here
Related changes
Special pages
Page information