-
Notifications
You must be signed in to change notification settings - Fork 2
Final Projects
Instead of a written exam, you will do final projects to get credit for this class. You will need to come up with your own topic for your project; then you will work on it in the term break and submit both code and a brief but clear project documentation. Here are some details:
- Everyone who wants credit for the course needs to complete a final project. The final project will be graded. The grade for the project will contribute to the grade for the course as a whole as described in the first lecture. Please work on your project independently of the other students, so I can assess your personal capabilities. You can still brainstorm project ideas with others. I trust you to be honest about this.
- The project should solve some problem in computational linguistics. It is an examination of your technical mastery of the methods taught in this course. This means that a project will receive a better grade if the methods are used correctly; if you actually use methods that are related to the contents of the course; and if your topic fits with the theme of the course (making hidden linguistic structure explicit). Tagging, parsing, and semantics-related tasks are all fine; sentiment analysis is not.
- Please give yourself an opportunity to demonstrate your technical mastery; all else being equal, an algorithm of your own design will get a better grade than an existing algorithm you implement yourself; or finetuning an existing implementation; or only using off-the-shelf tools (in this order).
- Try to make the project interesting: design it such that we can learn something new that we couldn't have predicted in advance. For instance, it is not very interesting to simply compare a statistical and a neural model and find that the neural model is more accurate on one dataset. "Interesting" can sometimes be achieved by comparing the results of multiple experiments and discussing your findings.
- Your project should include an evaluation of some kind. This could be on existing datasets, or you may have to label a test set or make post-hoc judgments yourself or through crowdsourcing. Design your project with the evaluation in mind.
- If you want to use a method we did not discuss in the course, please come talk to me and have a more conventional Plan B ready in case we can't make your original idea work.
- In terms of workload, a final project should be roughly as much work as one assignment (plus the time you need to write the project documentation). We will briefly talk through your project together to scale it up or down as needed.
- You will need to submit a Zip file containing your source code and a PDF file that documents your project. The purpose of the documentation is to explain what problem you are solving; what you did (in technical terms) to solve it; and to evaluate your results. It doesn't have to be long, but it does need to explain everything I need to know to evaluate your project easily.
- Criteria for the grade will include originality (is it a new idea, or are you just directly implementing an algorithm I explained in class); difficulty and ambitiousness; quality of results and implementation; and completeness and clarity of the accompanying paper.
- The use of LLMs for generating code is not allowed. You can use LLMs to help write the project report, but you will need to make this explicit and add a one-page discussion of your experiences at the end of the report.
The deadline for submitting the final project was specified in class. I will do my best to grade all projects before classes start in April.
I want to talk to everyone about their project idea before the end of the semester. In order to use our discussion time efficiently, I'd like to prepare a bit. Thus, everyone should please send me a project sketch in advance. Use the link to the Google Form that you were given in class.
Your project sketch should be roughly half a page to a page in length. Please include information on the following points:
- What is the problem you want to solve? Why is it interesting? How is it related to the topics and methods of this class?
- What algorithms and datasets do you plan to use? Will you implement the algorithms or train the mdoels yourself, or will you use off-the-shelf components? Are the datasets available in the form that you need, or will you have to label or tag them yourself?
- What is the intended outcome of the project? What will we learn from it that we couldn't have predicted beforehand? How will you evaluate the quality of your solution?
- Done is better than perfect. As you plan your work, make sure that you build and evaluate a simple baseline system first, so you have all the parts in place. You can then build out from the baseline implementation to include interesting ideas. This will help you structure your work and also give you something to submit in case something goes wrong later. It is much better to submit an imperfect, but working solution than to aim for a complicated solution that you can't get done in time.
- That said, I will evaluate the creativity of your project and your solution. All else being equal, you will get a better grade for a project that required you to make design choices of your own (modeling, preprocessing, etc.) than for one where you only reimplement someone else’s ideas.
- It is okay to use off-the-shelf tools and resources in the final projects, as long as there is sufficient technical substance in what you did yourself. Using off-the-shelf resources can be a great way to be able to focus on (and finish) the interesting part of your project, or to get started quickly even if you later replace the off-the-shelf resource with one of your own making.
- Write the project report with the intention of explaining your work to a fellow student who has successfully attended this class. You can assume as known anything we talked about in class. At the same time, make sure you explain what task you are solving and why it is interesting, and explain how you are solving it so your fellow student can understand the core idea. Evaluate your system, discuss to what extent you have solved the task, and maybe speculate on ways in which your system could be improved. You can talk about related work if you find it useful, but I don't expect a comprehensive literature review here. A typical project report that achieves this will typically have 5-10 pages. Please don't make them much longer - I have to read a lot of them.
- I won't be able to give you further feedback on your project or answer questions after we discuss it in the final week of the semester. However, feel free to talk to each other to brainstorm or work through difficult bits - just make sure that your programming and writing is fully your own.