CS 499 - Course Information and Syllabus
Welcome to Senior Project!
This is an exciting time because it represents that you have arrived at the level of completing a major capstone project. This course is designed to be very much an independent, student-driven process. In a nutshell, you decide what you want to learn and build, and then go do it.
The role of the instructor in this course is simply to help mentor you through the project and ensure that you complete what you planned.
There obviously have to be some guidelines in place, but these are designed to be as minimal as possible. This document will outline the steps you need to complete.
Please note that this is version 3.0 of this document and is the current standard. Previous versions have been deprecated.
Outcomes and Expectations
The outcome of the senior project course is that you learn something new and demonstrate that you have learned it by applying that topic to complete a significant project.
Learn Something New
As a part of your senior project, you are expected to learn a new computer science topic that you don't currently know.
The ability to be a self-reliant learner, where you can learn new concepts without an instructor teaching it to you, or providing a textbook, etc., is a critical outcome of our degree and of the university's mission.
A Significant Project
The expectation is that significant projects:
Use existing code wherever possible. As in the real world, you should take advantage of any existing libraries or codebases and bring these together to build something more involved than you could if you started from scratch.
Are often completed in teams. Senior projects can, but are not required to, be completed in teams. This allows you to build something larger and more complete than you could on your own.
Have potential real-world impact. Your project should solve a real-world problem or address a real need. This could range from a service offering to benefit the disabled or underprivileged, or could be a business idea that you would like to further develop after the course, or anywhere in between. But the idea is that it should provide value.
Build your portfolio/resume. You project should be something you can put on your resume that will impress prospective employers.
Require a full semester’s level of effort. Your senior project should require the level of effort of a 3 credit, senior-level CS course. The university recommends spending 2 hours outside of class for every hour in class, or 9 hours per week devoted to a 3 credit course. With that in mind, each team member should plan to work roughly 126 hours on the project (9 hours multiplied by 14 weeks). Please keep in mind that, while we will track hours spent, completing a great project is the goal, not spending lots of time.
Are completed. This sounds obvious at the beginning, but many students question it at the end. You will set the expectations for what your project requires and be expected to complete it. This means that you figure out a way to push through challenges, whether they be technical or motivational, along the way, and have something you can be proud of in the end.
Please note that a research-related project/paper can also be significant, and is a great option for students considering graduate school.
Participate in Weekly SPED Talks
As you are learning about your new computer science topic, you will also have a chance to teach it.
Senior Project Education Discussion ("SPED Talks") are one of the few chances in this course that we all get to interact with one another. These are designed to be short 5 minute "TED Talk" style presentations where you share with one another what you are learning.
Each person in the course will need to present at some point during the semester, and the instructor will facilitate signing up for these, so that roughly 2-3 people present each week. As an exception, if you are unable to make a video presentation, for whatever reason, you should work with the instructor to come up with an alternative way to present.
The following are the guidelines for these presentations:
They must be short. There is a hard time limit of 5 minutes. This goes very quickly, so you will have to plan diligently to ensure that you can cover the most important components of the topic in that time period.
They should focus on the topic you are learning more than your project itself. Your goal with this talk is to educate the other students in the course on the new computer science topic that you are learning about. You can mention your project and how the topic applies, but your talk should be focus on the new topic, so it is more generally applicable.
They should be professional. While the hope is that you will not have to spend a lot of time preparing these talks, they should still be professional, and not have the appearance of being thrown together last minute.
When you present, you should add a link to your presentation in the appropriate discussion board. Then, you must also upload a link to the assignment submission for it.
On the weeks that you do not present, you should watch each presentation. This can be a valuable experience for you to learn a little bit about a lot of topics that you may interact with during your career. You are encouraged, but not required, to leave comments, or discuss the topics further with others as you have interest.
One of the components in your weekly status report is to share something interesting you learned from that week's SPED talks.
The senior project is designed to be as independent as possible. However, to help the instructor mentor you through the project, there are a certain steps you need to complete along the way.
Choose an idea (and potentially teammates)
Submit a project proposal
Submit a requirements specification
Submit weekly status reports
Demonstrate project completion
Submit a reflection document
The following sections outline each of these steps in detail.
Choosing an idea (and potentially teammates)
The first step in the senior project process is to come up with an idea. The most important qualification for an idea is that the project is something that you are interested in. The best way to doom a project to failure is to choose an idea that you aren't passionate about. Every project will have challenges that arise along the way, but if you're working on something you are intrinsically excited about, it will be much easier to push through the hard times and be successful.
As you start thinking about your focus and potential applications, you are encouraged to be in contact with your instructor to ensure that the ideas you are pursuing will meet the requirements of the course. There is no assignment or official submission process for this "pre-proposal" stage, please feel free to correspond via email, etc. It is recommended to get your main idea pre-approved before completing your formal proposal.
Your project proposal is your first chance to formally define what you plan to build. It is understood and expected that you do not know everything about your focus or your application at this point, but you should have completed some preliminary research. You will continue to research and define more specific requirements after this point. However, at this stage of the process, you should have a sufficiently clear understanding of the area to know what you want to do.
At this point, you should be able to clearly articulate your focus and your application and give a 30 second elevator pitch to anyone who says, "What are you doing for your senior project?"
The proposal gives you and your instructor a chance to discuss your project in concrete terms and determine that it can be an acceptable project.
The Proposal Document
The project proposal should have the following sections:
Contact information (for all team members, if applicable).
Provide a brief summary of your project. A few sentences should suffice since you will provide details below.
Provide information essential to understanding your project. If applicable, this should include:
Prior work by others - Are you recreating something that has been done before? Are you building on top of others' work?
Prior work by you - Have you already done things in this area, and you are adding to it?
Provide the details of your project. In particular, make sure to include:
Description - In more detail than your abstract, explain what your will project do.
Target Audience - Describe the intended audience of the project.
Referring back to the expectations for significant projects above, explain how/why your project will be significant.
New Computer Science Concepts
Another critical part of your senior project is that you demonstrate that you have become a self-reliant learner. Please describe the new things you will need to learn to complete this project. These items should be computer science / software engineering topics.
Describe why this project is interesting and exciting to you. Senior projects get hard, hit road-blocks, and cause people to want to quit. If you are excited about your project, this will help you push through.
Tasks and Schedule
Divide your project into tasks. Try to make these as meaningful as possible and more detailed than "development." For example, for an OCR project, you might have separate tasks for loading an image into the system, identifying the text region, segmenting into characters, etc.
For each task, list the deadline and estimated number of hours for the task. Your schedule should include submitting the requirements specification as a milestone. Be sure to consider holidays and other events that may impact your schedule. Be realistic!
Provide the total estimated number of hours to completion.
Please note that this schedule is for your benefit and not something you will be held to for a grade, but rather something we can refer to, to see if we are on schedule or not.
Required Resources with Costs (if applicable)
List resources needed to complete your project. This may include hardware, software licenses, reference material, etc. Specify the estimated cost for each resource.
This is to help you recognize if there are things you'll need to buy, and if so, if that is feasible for you. In some cases the department may have limited funds to purchase equipment that can be reused for future projects. But recognize that if the department purchases equipment it will stay with the department.
When complete, submit your proposal to I-Learn for instructor feedback and approval. Then, you will continue in your research and preliminary work to prepare you to submit your requirements specification.
You should complete your proposal as soon as possible, ideally within the first week or two of the semester.
While you are waiting for feedback on your proposal, please continue forward with your project. When changes need to be made, they are almost always clarifications, minor adjustments, or changes to scope, rather than a change to a completely different project.
After your proposal is approved, you will know you are on a good path. You should then continue in research and preliminary work until you are prepared to more formally define the requirements of your project.
The requirements should be functional requirements, meaning that you can demonstrate that the requirement is met by seeing it work, not by having to look at code.
For this requirements specification you need to provide a list of "must have" requirements and a list of "would like to have" requirements. To complete your project you will be required to complete all of your "must have" requirements, so please plan accordingly.
Please note that the IEEE standard is overkill for the CS 499 project requirements specification.
For this document, include a paragraph or so describing the project and summarizing the requirements, then provide a list of requirements as follows:
A description of the requirement
Success measure(s) for that requirement (i.e., how do we know that it has been met?)
You should plan to complete your project as you defined it. However, as you get deeper into your research, if you discover that something is not feasible as you had planned for some reason (note: not "a little harder than anticipated"), you may need to re-negotiate items in your proposal and/or requirements document.
To request a requirements change, you should send an email to the instructor with the following:
List of previous requirement(s).
Explanation of why it is no long appropriate and why this was not identified earlier.
List of proposed requirements to be done in lieu of the previous ones.
Justification for why this change will not compromise the integrity of the overall project.
Please note that requirements changes are not made to simply make the project easier. Usually they require more work, because they require you to go in a different direction than originally planned. They are, however, necessary when the project has reached an insurmountable hurtle, so that another course of action can be taken.
As with projects in the real-world, you should do all you can to identify and mitigate high priority risks as early as possible. Then, you can make plans to mitigate the risks and adjust accordingly. Also, as with the real-world, other stake holders will be much more understanding and can much more easily adjust plans the earlier in the process this happens. In other words, for this project you can expect the amount of leniency will be much greater earlier in the project. In addition, requirements cannot be changed in the last week of the semester, you should know what is possible long before that point.
Each week you submit a status report to indicate the progress you're making and list your goals for the upcoming week. Students working in teams must individually submit these status reports to discuss their specific contributions and plans.
The purpose of this report is to help you monitor your own progress and to assist the instructor in mentoring.
For status reports, download the CS 499 Status Report template text file. You should fill out the sections of this text file and submit it to I-Learn. It will have you include the following:
Team members (if applicable)
Overall status of the project (on-schedule, behind, ahead)
Number of hours A) worked that week, B) total to-date on the project, and C) anticipated total hours needed for completion.
Accomplishments (since last status report)
Challenges encountered (since last status report)
Plans / Goals for the next week
SPED Talk Insight (Briefly describe an insight or something interesting you learned from the SPED talks this week)
Other comments for the instructor
You should submit a status report each week, even before you have a proposal in place.
The purpose of a status report is to give an update of where you are at a certain point in time. Because of this, it is not helpful to submit missing reports, late. Therefore, late status reports are not accepted. Because individual status reports do not represent a large portion of the grade, missing one will likely not have an impact on the final grade of the course, but a pattern of missing them is a problem.
The instructor will leave feedback on your status reports, and use that as a means to offer suggestions or answer questions. Please make sure to look for this feedback each week in I-Learn.
Before the end of the semester, you need to demonstrate your project to your instructor as defined in your proposal and requirements specification.
This means you need to schedule a time to meet with the instructor (e.g., a video call) before the end of the day on the last regular class day of the semester. This leaves the "final exam" days for you to submit your reflection document and for the instructor to finish the paperwork process.
Peer Evaluation for Team Projects (if applicable)
If you completed your project in a team, at the end of the semester, before your meeting with the instructor, please submit a document that discusses each team member's contribution.
First, list the project name and the name of each team member. Then, for yourself and each member of the team include the following:
Describe this person's primary responsibilities
Describe how well they fulfilled their tasks.
Describe how well they communicated with the team.
Describe one thing they could have done better.
Then, finally, please assign each team member a score that defines their overall contribution to the team. These scores must have an average of 10, and cannot all be the same. So, for example, you must have at least one 11 and one 9.
After completing your project, prepare and submit a reflection document covering the following:
Briefly describe your project.
How did you meet, exceed, or fall short of your original expectations?
What changes were made to your project during the process?
What were the most important/interesting lessons learned about the new computer science topics you learned about?
What were the most important/interesting lessons learned about the project itself?
What were the most important/interesting lessons learned about yourself?
With the exception of receiving credit for submitting status reports and your SPED talk presentation, this project is graded holistically at the end of the semester.
The university has defined its grading system to be:
"A" represents outstanding understanding, application, and integration of subject material and extensive evidence of original thinking, skillful use of concepts, and ability to analyze and solve complex problems. Demonstrates diligent application of Learning Model principles, including initiative in serving other students.
"B" represents considerable/significant understanding, application, and incorporation of the material that would prepare a student to be successful in next level courses, graduate school, or employment. The student participates in the Learning Model as applied in the course.
"C" represents sufficient understanding of subject matter. The student demonstrates minimal initiative to be prepared for class. Sequenced courses could be attempted, but mastering new materials might prove challenging. The student participates only marginally in the Learning Model.
"D" represents poor performance and initiative to learn, understand, and apply course materials. Retaking a course or remediation may be necessary to prepare for additional instruction in this subject matter.
"F" represents failure in the course.
In accordance with these definitions, the senior project will be evaluated holistically according to the following guidelines.
A - All "must have" requirements are completed and many of the "nice to have" requirements are also in place.
B - All "must have" requirements are completed.
C - Some "must have" requirements are not complete but the general idea of the project is in place and the new computer science topics can be demonstrated to some degree.
D - Minimal evidence of the requirements is demonstrated.
F - No evidence of the requirements can be demonstrated.
Late proposals or requirements specifications, or limited number of hours for the senior project will reduce the grade from the scale noted.
In addition, regardless of I-Learn grade calculations or credit received from status reports or SPED talks, you must receive at least a C- on the project completion to pass this course.
CS 499-A and 499-B
For those students enrolled in CS 499-A or CS 499-B, rather than completing the project in one semester, the overall process is the same. However the expected deliverables are:
CS 499-A (2 credits)
SPED Talk Presentation
Roughly 84 hours (2/3 of the overall amount)
Peer evaluation, if applicable
CS 499-B (1 credit)
SPED Talk Presentation
Roughly 42 hours (1/3 of the overall amount)
Peer evaluation, if applicable
Frequently Asked Questions
Can I start on my senior project before I am registered for the course?
Yes! You are encouraged to get started thinking about and even working on your project before you are enrolled in the course.
Please be aware that you must go through the same process of submitting proposals, status reports, etc. If you are not yet enrolled in the course, these should be submitted via email. Once you have an approved proposal, you are should submit status reports via email whenever you have done about 10 hours of work. You must be enrolled in CS 499 during the semester that you complete the project.
Can I use software written by others?
Yes! Your goal is to build on this code to make something significant. This usually means that you are building on top of existing components.
Can my senior project be something I'm doing at work?
If a project for work meets the necessary requirements, it can potentially be used for a senior project. However, it is important that to go through the process of proposal, requirements document, and status reports before undertaking the project.
Can I use something I have previously done for my senior project?
As a matter of policy, previously completed projects, either for work or personal projects, are not eligible for senior project credit. Regardless of what you have done previously, there is still more to learn. The purpose of the senior project is for you to learn something new--so, even if you have done great things in the past, choose something new and interesting to you and see what you can learn.
You are welcome to add onto previous projects, provided the new work will cause you do learn new computer science concepts and be significant.
Can my senior project be something I'm doing for my internship?
Projects done as part of an internship are being counted as part of that course and are not eligible to double count as senior projects.
What are some possibilities topics for my project?
You need to decide what you are interested in, so it will be a meaningful project for you.
Are there some topics I should avoid?
Games. It is hard to impress a potential employer with a game that you have spent 100 hours on, when they will compare it to polished products that have had thousands and thousands of hours of work.
Lessons Learned by Past Students
I didn't submit my requirements document until later in the semester since I didn't want to commit myself to something that seemed a tall order, if not impossible. But I should have just jumped into it and got it done. I feel like, if I had and I could have spent another 50-100 hours on it, I could have had something a little more complex and interesting.
Please recommend the path of Senior Project A & B to all CS/SE students who need to complete a senior project. It is much less stressful to spread it out over 2 semesters.
Brigham Young University-Idaho is committed to providing a working and learning atmosphere that accommodates qualified persons with disabilities. If you have a disability and require accommodations, please contact the Disability Services Office (208) 496-9210. Reasonable academic accommodations are reviewed for all students who have qualified documented disabilities. Services are coordinated with the students and instructor by the Disability Services Office.
Maintaining a Safe Learning Environment
BYU-Idaho prohibits sex discrimination against any participant in its education programs or activities. Prohibited sex discrimination includes incidents of sexual harassment (including sexual violence), dating violence, domestic violence, sexual assault, and stalking (collectively "sexual misconduct").
As an instructor, one of my responsibilities is to help create a safe learning environment for my students and for the campus as a whole. University policy requires that I report all incidents of sexual misconduct that come to my attention. If you encounter sexual misconduct, please contact the Title IX Coordinator at email@example.com or 208-496-9209. Additional information about sexual misconduct and available resources can be found at www.byui.edu/titleix.