I love working with students on research, theses, and independent study projects. For such projects, students:

  • come up with their own project plan (or I pay them to work on my project),
  • work on the project for a semester (or longer), and
  • learn something CS-related while developing a new tool or idea.

These projects are not a one-on-one class or tutorial.

I’ve had students help me design and build robots, design a programming language and build an interpreter, develop a robot path planning algorithm, create a new markup language for specifying robots, and develop a weather simulation. You can find past projects (starting fall 2018) on this site.

Getting course credit for a project (rather than getting paid for research) only benefits you if you:

  • would rather work on your own project instead of taking a course,
  • would not otherwise have time to work on research given your work schedule and course load,
  • need partial credit for a CS course (independent study will not count as a full elective),
  • are trying to graduate early by taking additional classes, or
  • need to add another course and are blocked by prerequisites.

In general, it is more beneficial for students to get paid for working on research.

Proposal

I require students to write a project proposal (search “proposal” for examples). Proposals must:

  • describe a project that can you can complete in a semester (even if you plan on working for multiple terms),
  • detail enough work that will take 5 to 10 hours of work per week,
  • discuss how the project relates to your academic and/or future career,
  • list your goals and a rough time line, and
  • be submitted as a pull-request.

You must complete your proposal before the end of the first week of the semester. Preferably, you will complete your proposal by the end of the previous semester. Proposals should be roughly 300 to 500 words, and they should include images, diagrams, and/or videos.

Updates and Meetings

I meet with students weekly. These meetings can take anywhere from five minutes to one hour, and we can occasionally skip a meeting or add additional meetings as needed.

To prepare for meetings, I require all students to submit a weekly update the night before we meet. Updates help me prepare for questions and issues, and they provide you with all the information you’ll need for your final report (see the Report section below).

For weekly reports, I would like you to use my GitHub Reports Template. You can also include a similar file structure inside your main project repository in a directory called “reports”–meaning you don’t have to clone that repository.

Please send me a link on Slack to your report the day before we meet.

Grade Justification

I require all students completing an independent study project to give me a grade justification at the middle and end of the semester. Justifications are typically 1 to 5 sentences and they must include the letter grade you think you’ve earned. These short conversations ensure that we are on the same page regarding your effort.

Report

I require all students to complete a final report at the end of the semester. Final reports should be roughly 500 to 1000 words, and I much prefer it if your post includes images, videos, code snippets, etc. You will also submit final reports as a pull-request. I like to have final reports submitted before Tuesday of finals week.

Along with the final report, I highly encourage students to present their work to the college. We can discuss details for doing so if you are interested.