I am willing to supervise master’s projects and theses, either as first or second reader, but before you ask me, please read this page.
The purpose of a project is for you to demonstrate the maturity of your computer science skills. It is not necessary that you invent anything new in the process, but you must produce something that exhibits high standards and a level of expertise that would normally be beyond that of an undergraduate. The purpose of a thesis is to examine a significant problem in depth. The primary focus of a project tends to be the work product (normally an implementation of some sort), whereas the focus of the thesis tends to be the written work. The Office of Graduate Studies gives the legislated definitions of project and thesis.
Most students choose to do a project, so let’s have a closer look at what that means.
This means a project has two parts: the “significant undertaking” and the writeup. The undertaking invariably is an implementation of some sort, but the implementation must be comprehensively well done from design to documentation. Accompanying the implementation should be an extended abstract that explains the context and goals of the work as well as any conclusion or recommendation that can be derived from your experience. If you want to do something deeper than this, have a look at the definition of a thesis, and we can talk about doing something more involved.
My research area is high-speed cryptography, so naturally I’m most qualified to help you with related topics: algorithms, cryptography, high-speed implementations, and performance measurement. If you want to do a cryptography project, I require that you take CSC 252 before beginning (or have equivalent experience).
I do not have a ready list of projects. Before you come talk to me, you should have some idea in what you are interested. Come with some ideas. They do not have to be fully formed, but they should be a starting point for our conversation. I do occasionally list possible topics here.
After accounting for your required courses and breadth requirement, you have 8 units for your electives and project. I recommend that you take 2 elective courses and complete a 2 unit project. A rule-of-thumb is that each unit represents about 45 hours of work, so you should plan on spending at least 90 hours on your project. You may prefer the pace of 1 unit per semester for two semesters rather than 2 units for one semester.
I have had some students whose projects did not turn out well. I believe one of the main problems was a lack of clear expectations, on both sides. To help you succeed, and to make me happier with your final result, I have sketched here what I expect of you, and what you may expect of me.
Timing. Make a timeline of milestones, and try to stick to it. Some important phases are...
Investigation/proof-of-concept. After we’ve discussed the basic parameters of your project, you should spend some time researching the areas discussed and do some proof-of-concept development. The goal of this phase is to understand the basics of your chosen domain and verify that the project will be fruitful. This is done early so that we can discover dead-ends early.
Phase I of writing. You should write a thorough introduction, backgrounder and summary of related work (10-20 pages). By doing this now, you solidify your understanding of the project and its context, and get a significant part of your written report out of the way. You also make it clear what the scope of your work is to be (which is useful for us to understand one another’s intentions).
Your introduction should, for example, give the context of your project, what your project will achieve, who could benefit from it, what is significant or difficult about the work, and a summary of your (expected) findings. Some of this will be speculative, of course, but can be revised once you are done with final development. Your backgrounder should explain all the relevant theory and practice needed to understand the project. The related work section should discuss what others have done to solve similar problems.
Development. Having done the previous two phases, you now understand the problem fully and are pretty sure it can be done in the desired time frame. You now do the bulk of the programming part of the project. Your implementation should be impeccable, following best practices for software engineering, design and implementation.
Test, experiment and analyze. If you are doing a performance study, you need to determine what the interesting variables of your solution are and design experiments to find out how changing the parameters affect performance. Make clear tables and graphs to go into your writeup. Check that your experimental data is reasonable, and revise your code and experiments if you find problems.
Phase II of writing. Complete your project writeup. Describe your solution and present your experimental results. Put your code into an appendix.
Writing. Your writing does not need to be beautiful, but it must be correct and logically organized. If you are not a very good writer, you should get somebody with good English writing skills to proof and/or edit your work. This might mean using the university writing center, trading this favor with another student, or hiring a copy editor. But please, only submit work to me that is of good editorial quality.
Also, leave time for feedback and revision. You cannot expect me to return a draft to you in less than a few days, and you should reasonably expect that you may have to go through several revisions before you are done. This means that you should have a fairly complete draft done weeks before the due date, which leaves time for revisions to your experiments and writing (if necessary).
Meetings. You should come visit me regularly to discuss your progress and ask any questions that you might have. You can do this ad hoc, as needed, or set up a once or twice a month regular meeting time, if you prefer. These meetings are your responsibility to arrange. If I don’t hear from you, I will assume that your project is going well, and that you don’t need my assistance.
Email is okay for short exchanges, but anything meaty should probably be handled in person.
Breaks. The department has a policy that faculty should not be depended on for Masters supervision during breaks. I am, however, willing to do some supervision over breaks, but don’t expect a lot. We can meet occasionally in downtown Davis (where I live), and I will answer some light email questions, but the bulk of our interactions should occur during term, and you should plan on submitting your final work during Fall or Spring semester, and not during summer.
Time. I do not have a lot of time to spare, and you are nearly a “Master” of computer science, so I expect you to have enough training to do a good job, on your own, without much help. My role is to discuss your ideas initially, help you when you seek it, and assess your work when you are through (just as a supervisor at work might do). My role is not to keep you on track. If you procrastinate, I will not approve a shoddy project to help you graduate on time. Start your work early and try to get it done early too.
Know the ropes. Make sure you know all the deadlines and requirements for your project submission. (I do not know them, so it is up to you to make sure they are fulfilled.) Here are a couple gotchas! Your presentation will be at the Graduate Symposium which is held around the 2/3 mark of every semester. You need to submit your presentation several weeks in advance, so it will most likely be a presentation on background material, work-so-far, and expected results. Also, your final report is due to the Department two weeks before it is due to Graduate Studies. (These are both good reasons to spread your project over two semesters, if possible.)
As second reader I believe I have two roles. (i) To give you my expertise whenever you ask for it, and (ii) to make sure your first reader does not approve a poorly executed project. So, I don’t need to see your work as it progresses, unless you have a question that you think I might be able to help. Once you and your first reader think that you are very nearly done, send me a copy and I’ll quickly read it and give you my comments.
If this philosophy of mine is satisfactory, then, yes, I’d be happy to be your second reader.