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.

Outcomes and Requirements

He that overcometh shall inherit all things...
Revelation 21:7

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.

Inherent to that statement are the following:

1. Learn something new

One of the program outcomes of our degree is that students learn how to learn. As a capstone experience, the senior project allows you to demonstrate that you have developed the ability to independently learn and apply new concepts.

To demonstrate this, you will choose a focus for your project that must be "outside of your curriculum." In other words, you need to choose something that is different than what you have learned or done (or could have naturally done) in one of your other classes. This is critical to demonstrate that you truly can independent learn something new. There is no requirement that this has to be novel research (i.e., novel to the world), but it needs to be new to you.

2. Application

After selecting a focus for your project, you will then select an application of this focus, which will enable you to demonstrate your competency in this area. This is usually a software product that you write.

A common mistake is to decide on an application first, and then try to define a focus from it. Often someone says they have a great project in mind and they are just trying to determine a focus from it. This is not the right approach, because often the application in mind ends up being only tangentially related to the focus, whereas another application would be a better fit for it.

Keep in mind that the application must allow you to outwardly demonstrate the focus (i.e., without having to look at the code).

3. Significance

Your senior project should be a significant project--something you can be proud of and use to impress potential employers.

Assuming a budget of 2 hours outside of class for every hour in class, for this 3 credit class you should be spending 9 hours per week or 126 hours during the semester on your project (9 hours * 14 weeks).

You must have a minimum of 100 total hours. The total number of hours sets the maximum grade you can earn; it does not establish the grade you have earned. With a total of 100 hours, you will earn no more than a C. With a total of 110 hours, you will earn no more than a B. If you want to earn an A, you must have a minimum of 126 hours.

4. Completion

You must complete your project for it to be complete. This sounds obvious now, but often at the end of the semester, students question this point. Keep in mind that you will set your own requirements and deliverables. Then, you will need to demonstrate that you have completed the requirements.

The Process

...and they came forth and caught hold of the end of the rod of iron; and they did press forward through the mist of darkness, clinging to the rod of iron, even until they did come forth and partake of the fruit of the tree.
1 Nephi 8:24

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.

  1. Submit a project proposal
  2. Submit a requirements specification
  3. Submit weekly status reports
  4. Demonstrate project completion
  5. Submit a reflection document

Project Proposal

And make proposals for peace unto those who have smitten you, according to the voice of the Spirit which is in you, and all things shall work together for your good.
Doc. & Cov. 105:40

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.

Pre-Proposal Process

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 are on-track. There is no "assignment" or official submission process for the pre-proposal, please feel free to correspond via email or in person. It is recommended to get your focus and application pre-approved before completing your formal proposal.

The Proposal Document

The project proposal should have the following sections:

  1. Scripture

    Provide the text and reference of a relevant (canonized) scripture.

  2. Abstract

    Provide a brief summary of your project. A few sentences should suffice since you will provide details below. You must include and complete the following sentences:

    1. "The focus of this project is ..."
    2. "The application of this focus is ..."

    Note that the focus must be a Computer Science / Software Engineering topic and something not covered in your curriculum. The focus is the general principle you will be researching (e.g., image processing). The application of the focus is the product you will create that demonstrates the understanding you have gained from that research (e.g., facial recognition). Do not confuse focus and application. You will provide additional detail below.

  3. Background

    Provide information essential to understanding your project. This includes, but is not limited to, the following:

    1. Definitions
    2. Why this topic is of interest (to you!)
    3. Prior work by others
    4. Prior work by you
  4. Description

    Provide the details of your project.

    • Provide a description of your project.
    • Provide a clear description of what constitutes success for your project (e.g., 90% accuracy).
  5. Scope

    Clearly define the boundary separating what is included in your project and what is not included.

  6. Tasks and Schedule

  7. 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, segmenting into characters, etc.
  8. For each task, list the start date, stop date, and estimated number of hours to completion. 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 look at to see if we are on schedule or not.

  9. Applicability

    Explain how this project facilitates you integrating previously learned material. Explain (as necessary) how this project is exclusive of your computer science curriculum.

  10. Required Resources with Costs (if applicable)

    List (and describe, as appropriate) resources needed to complete your project. This includes, but is not limited to, hardware and reference material. 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, but recognize that if the department purchases equipment it will stay with the department.

  11. References

    Provide a bibliography of reference material. This section is not optional. Provide evidence of your preliminary research. These references need not be in a formal style, but they should have at a minimum titles, authors (if applicable), URLs (if applicable), and journal/conference names (if applicable).

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.

Requirements Specification

...thy brothers murmur, saying it is a hard thing which I have required of them; but behold I have not required it of them...
1 Nephi 3:5

After having your proposal 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 it 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.

In your "must have" list, include at least one requirement regarding execution time. For example, "the product shall calculate the answer within one second." When you come to pass off your project, you cannot say, just give it a few hours, and it might finish...

Please note that the IEEE standard is overkill for the CS 499 project requirements specification. This is also NOT an assignment from Software Engineering I :-). For this document, include a paragraph or so summarizing the requirements, then provide a list of requirements, formatted as follows:

  1. A requirement number (so we can reference it later)
  2. A description of the requirement
  3. Demonstration scenario(s) for that requirement (Note: If the demonstration requires reviewing code, it's not a functional requirement)
  4. Success measure(s) for that requirement

The requirements specification is due on the date specified in your proposal. At the very latest, you should plan to have it submitted by mid-term (or by the end of 499-A if you are in that course).

Requirements Changes

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:

  1. List of previous requirement(s).
  2. Explanation of why it is no long appropriate and why this was not identified earlier.
  3. List of proposed requirements to be done in lieu of the previous ones.
  4. 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.

Status Reports

Wherefore, if ye shall press forward, feasting upon the word of Christ, and endure to the end, behold, thus saith the Father: Ye shall have eternal life.
2 Nephi 31:20

Each week, you need to submit a status report to indicate the progress you're making and list your goals for the upcoming week.

The purpose of this report is to help you gage your own progress and to help the instructor in mentoring.

For status reports, download the CS 499 Status Report template PDF. You should fill out the sections of this PDF and submit it to I-Learn. This PDF will have you include the following:

  1. Name
  2. Project Title
  3. Overall status of the project (on-schedule, behind, ahead)
  4. Number of hours worked and anticipated total hours.
  5. Accomplishments (since last status report)
  6. Challenges encountered (since last status report)
  7. Plans / Goals for the next week
  8. Accountability plan - What is your plan to keep yourself honest and follow through with the goals that you have outlined?
  9. Other comments
  10. A relevant (canonized) scripture, text and reference (Get creative, have fun!)
  11. Schedule - List each of the tasks from your proposal along with their scheduled completion date. Then, each week, update this list to show the tasks that are in-progress and when they get completed. Please note that this schedule is for your benefit, and to help you see if you get behind.

You should submit a status report each week, even before you have a proposal in place. If you do not have a proposal submitted yet, you may leave the second page (the list of tasks and their statuses) blank.

Project Completion

Thus let them from that time forth labor diligently until it shall be finished, from the cornerstone thereof unto the top thereof, until there shall not anything remain that is not finished.
Doc. & Cov. 115:12

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 (either in-person or 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.

Reflection Document

And an account of this stewardship will I require of them in the day of judgment.
Doc. & Cov. 70:4

After completing your project, prepare and submit a reflection document covering the following:

  1. What was the focus and application of your project?
  2. How did you meet, exceed, or fall short of your original expectations?
  3. What changes were made to your project during the process?
  4. What were the most important/interesting lessons learned about the focus?
  5. What were the most important/interesting lessons learned about the application?
  6. What were the most important/interesting lessons learned about yourself?
  7. Final Thoughts

Grading

The university has defined the grading sytem to be:

In accordance with these definitions, the senior project will be evaluated holistically according to the following guidelines.

Assuming status reports, proposal, requirements specification, and reflection document have been completed satisfactorily, then the following scale will define the project grade:

Failure to submit status reports, significantly late proposals or requirements specification, or limited number of hours for the senior project will reduce the grade from the scale noted.

CS 499-A and 499-B

And the king said, Divide the living child in two, and give half to the one, and half to the other.
1 Kings 3:25

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:

Frequently Asked Questions

Ask, and ye shall receive; knock, and it shall be opened unto you.
Doc. & Cov. 4:7

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. You are encouraged to prepare a proposal and obtain instructor approval before doing any significant work. The instructor is not obligated to accept prior work simply because it has been done previously. Once you have an approved proposal, you are encouraged to 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?

No, if the software written by others is the focus of your senior project. Yes, otherwise.

For example, assume that your senior project is to build an artificial neural network and to dynamically generate graphics that display the results (whatever they may be). If the focus of your project is the artificial neural network, you may use software written by others to help generate the graphics. On the other hand, if the focus is the graphics, you must write that software yourself.

Can my senior project be something I'm doing at work?

Yes, as long as your project at work satisfies the requirements for CS 499 and will continue to do so throughout the duration of the project. The instructor is not required to accept changes that your workplace may mandate.

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. However, the following is a list of potential ideas that students have done in the past. It is not comprehensive and not it any order.

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.

Accommodations

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.