Tips & Tricks for Future Capstone Students

  1. Try to teach yourself how to use Word Press or how to code a website from scratch before the semester begins. The Capstone semester is extremely busy, and this knowledge will ease the stress of the first two weeks significantly.
  2. Review past Capstone projects. Seeing what others did previously–both in their projects and websites–will aid in understanding professors’ expectations.
  3. Try to request a project that was previously assigned to another student, or one which is similar to it. The professors often reuse projects since they are well-defined and reasonable semester long projects. It will help if you know what to expect. Additionally, intrinsic motivation is extremely useful, and if you see a project you think you will enjoy, initiate the request process.
  4. Inform your professors of any limitations. For example, Virtual Reality goggles make me nauseated and give me migraines; the eye-tracking instrumentation does not work well with people who wear glasses. These little bits of information can help them place you with a project suited to your needs.
  5. Begin coding right away. In the book The Mythical Man Month, research and development happen before coding begins. In Capstone, this is not the case. Start coding as soon as possible.
  6. Break up functions into smaller functions before they become massive. While this may be obvious to some, for me, it wasn’t until it became a big problem. I have always thought of functions as something which should be called from at least two places in order for it to make sense as a function. Use functions to section off code. It will greatly help with organization. (Similarly, create different projects for each small section of a program. I had a different project for my Algorithm 1 Encoder, Algorithm 1 Decoder, Algorithm 2 Encoder, and Algorithm 2 Decoder. I then aggregated the projects into Final Encoder and Final Decoder projects.)
  7. Plan time to relax and refresh. This is crucial to avoid burnout. Take a little time to care for yourself, and take frequent breaks while coding. It helps avoid brain fatigue, loss of motivation, and frustration. Additionally, anticipate getting sick at least once and do your best to work ahead when possible.
  8. Ask professors and classmates for help. It is better to ask a dumb question than programming something wildly different from what your professors want. Clarifying instructions is exceptionally important.
  9. Comment and properly document your code as you work. There is nothing worse than trying to refine a process you coded weeks ago and having to demystify the code you wrote. Additionally, proper documentation at the beginning of each function (as detailed within The Mythical Man Month) will save you a lot of headache when it is time to write your Developer Guide.
  10. Conceptualize your blog as a progress report you might submit to your boss. This details your progress each week and showcases successes. Leave out negative emotion and focus on the strides forward you have made.
  11. ‘Start Wrong, Finish Strong.’ It is okay to mess up or fall behind; just do not give up! Small steps still bring you closer to success, and the most important thing you can do is build resilience and keep moving forward. Remember why you chose to get a computer science degree and keep those reasons in focus. For me, my dream project involves birds, so I only used images of birds throughout my Capstone project. In whatever way possible (even if it is only changing your desktop background), include your dreams to motivate you during the most challenging moments. Take a break, regroup, and try again. You are more capable than you realize.

For those with this particular Capstone:

  1. Think of images as a single array, not an ‘x-y’ coordinate system, particularly when thinking about Algorithm 1. It will reduce many errors. By the time my point professor proposed this idea, it was too late to go back and fix the issues caused by my different conceptualization.
  2. Just because you have two algorithms does not mean the work is split evenly between them. For this particular Capstone project, Algorithm 1 is the bulk of the work. It would have reduced a lot of stress had I realized this at the beginning of the semester.
  3. Thoroughly plan out all necessary tests, particularly for Algorithm 1. What might the users try? What parameters do you want to allow, and how might you prevent a user from accidentally breaking your program? Additionally, make sure you are performing each test with multiple images.
  4. Resize your images to cut down on the time it takes for encoding. It is also harder for bugs to hide in smaller images. Additionally, when first beginning Algorithm 1, start with a single Color value. You can create a Color object in C#; you do not have to manufacture a pixel equivalent through other means.
  5. For Algorithm 1, encode the secret image backwards. Instead of starting at (0, 0), start at (width-1, height-1). This will make it much more difficult for images to ‘ghost through’ the way it did in my earliest blog posts.
  6. For Algorithm 2, I would recommend reading my Week 15 Blog Post if Doug Stinson’s paper is confusing. His usage of the word ‘matrix’ is not mathematically accurate, which caused confusion for me. Substitute this for a ‘2-dimensional array’ while reading for better clarity. While imperfect, my blog posts may aid in your understanding of what needs to occur. Essentially, you randomly select a column, then place the data in each row’s intersection with the column into a share.
    • The image’s dimensions double, not the number of pixels. Additionally, when you tackle ‘general k,’ add another row and column for each added share such that the array dimensions are k x k. I’ve written about this in more detail in my Week 16 Blog Post.
  7. There are not many external resources available for this project. Most of the information and logical process of this project must come from you. Sit and think through the processes yourself. There are not many resources which will help, nor are there many specific ones available for your particular Capstone project. You will need to teach yourself most concepts via your internal process of logic as opposed to reading another person’s thoughts. Currently, Doug Stinson’s paper is the only one I know of detailing Algorithm 2, and I searched extensively for other papers detailing it. I did not find any.

Hopefully, this advice helps make your Capstone journey easygoing and fun.