Introduction
The course project is to give the students hands-on experience on developing some novel information retrieval and/or text mining tools. The project thus emphasizes "deliverables," and the outcome of your project should be an open-source contribution of a software tool or a component of a software tool that other people can download and use. Since the project lasts for the entire semester, it would allow the students to potentially apply all the knowledge and skills learned in the course to solve a real-world problem. The project is team based. Your team should have 3 to 5 members. The maximum team size is 5 people, but due to the large volume of class this semester and the quality of work expected, teams with only 1 or 2 members are strongly discouraged. If you don't already have a team formed, you can find teammates via Piazza's ."Search for Teammates!" post Whenever possible, collaboration of multiple project teams is strongly encouraged to minimize the amount of work of each team via expertise or resource sharing, as well as to generate "combined impact" (e.g., one team may develop a crawler that can be used by another team that develops a search engine).
Grading criteria
Your project will be graded based on the following weighting scheme, corresponding to three stages of work including 1) selecting a topic and writing a proposal; 2) progress report; 3) final project result and submission. All team members will receive the same grade provided that every member has made sufficient effort (at least 20 hours of quality time to work on the project).
- Project proposal (10%): Each project team is required to submit a one-page project proposal by 03/06 (Wednesday), which will be graded based on completion. The instructor and TAs will read every proposal to provide feedback and suggestions so as to ensure every team to have an interesting, yet tractable project that can be realistically finished by the end of the semester. Relevant research papers or readings may be recommended.
- Project progress report (5%): By 04/08 , each project team will be asked to submit a video presentation (5-10 minutes) to introduce the current progress of projects. Content to be covered in the progress report 1) what has been done, 2) what remains to be done, and 3) any barrier(s) in achieving the proposed project goal. Progress report would be graded based on completion.
- Software code submission with documentation (65%): At the end of the semester, each project team will be asked to submit the produced source code with reasonable documentation to Github. The documentation should cover both how to use the software and how the software is implemented. Each project/team is required to have a clickable user interface for demo! The 65% of the grade would be distributed as follows: 45% for source code submission ; 20% for documentation submission.
- Final project presentation (20%): At the end of the semester, every project team will be asked to submit a short tutorial presentation (e.g., a voiced ppt presentation, 10-15mins) to explain how the developed software is to be used. The presentation must include (1) sufficient instructions on how to install the software if applicable, (2) sufficient instructions on how to use the software, and (3) at least one example of use case so as to allow a grader (instructor, TA, or a project supervisor) to use the provided use case to test the software. The tutorial presentation would be graded based on 1) completion of the presentation (10%); and 2) result of testing the software by graders (10%). If the software passes the test, i.e., is working as expected, full points will be given; otherwise, points will be deducted from the 10% allocated to the "result of testing the software by graders."
Thus your course project work would be graded primarily based on your effort. If you have followed our guidelines and completed all the required tasks, you should receive at least 90% of the total points for the project. This is to encourage the students to pay attention to time management and set realistic goals that can actually be completed by the end of the semester. The remaining 10% is based on how well your software works; a fully functioning software would be given the whole 10%, whereas a buggy software or a software with missing functions would result in losing some of the 10% of the grade. Completion of a functioning software is emphasized also due to the potential dependency between multiple projects when they are all contributing to a larger project (e.g., one team may produce a crawler to crawl data for use by another team to build a search engine).
Tasks Timeline
1. Pick a topic
Every student will be asked to pick a project topic. You will need to propose your own topic. We encourage those of you who have identified a practical challenge related to your own life, work/job to design a course project to solve the identified challenge. This would maximize the utility of your project since the outcome may be something useful for you or your job. However, please make sure to inform your company and supervisor and obtain an approval since any software code you produced for the course project must be available to the public.
You are strongly encouraged to discuss your project topics with your peers using Piazza. To do so, you can post a brief description of the topic (at least two short paragraphs) on Piazza using the tag/folder "projtopic"; please make sure to choose the folder "projtopic" to ensure visibility of your proposed topic. The provided topics by the instructor and TAs are also tagged with this same folder, so one can easily view all the potential project topics by using the folder "projtopic". We encourage you to look at the ideas posted there, discuss them, and post your comments.
When proposing a topic, try to ask yourself the following questions:
-
What is exactly the function of the tool that you would like to develop?
-
Is the envisioned tool really useful? Who will benefit from such a tool? Note that the usefulness of the tool is an important grading factor, so make sure that you invest your effort on developing a really useful tool. It's fine if the tool is a very specialized tool, or only useful for a few people.
-
Does this kind of tools already exist? If similar tools exist, how is your tool different from them? Would people care about the difference? Why is this difference important?
-
Do you have some rough idea about how the target function might be achieved? (The instructor and TAs can help you answer this question, so please feel free to propose problems that you don't yet have a clear idea about how to solve it)
-
How do you plan to show people that the tool to be developed is indeed useful? (You could make a demo of its function and/or report some quantitative evaluation figures.)
-
What is the minimum goal to be achieved during this semester? (Try to drop everything non-essential and only keep the function that is truly novel.)
2. Form a team
Team of 3 – 5 people is encouraged (the maximum size of a group is 5). Teams of size 1 – 2 are strongly discouraged. Teamwork not only allows you to learn from each other, but also enables you to accomplish more through the project work than you could have with just yourself (e.g. finishing a more sophisticated system). However, working in a team also require significant communications and coordination with team members; for this reason, the size of a team should generally be no more than five members. Generally speaking, all the team members of a group will get the same grade provided all have contributed substantially to the project. In case there is evidence that a team member has only made superficial contribution to a project (we really hope this won't happen!), the particular team member's grade may be discounted. The documentation of the project (to be submitted at the end of the semester) must state clearly who did what.
3. Write a proposal (10%, due March 6)
Each project team is required to write a one-page proposal before you actually go in depth on a topic and submit your proposal on Compass2G. One submission per group, with your netIDs as the title. The proposal is due on Wednesday 03/06.
In the proposal, you should address the following questions and include the names and email addresses of all the team members. One member must be designated as the project coordinator for the team, so please make sure to indicate that. The project coordinator would be responsible for the coordination of the project work by the team and also communication with the instructor or TA when the team needs help. (As long as these questions are addressed, the proposal does not have to be very long. A couple of sentences for each question would be sufficient.)
- What is the function of the tool?
- Who will benefit from such a tool?
- Does this kind of tools already exist? If similar tools exist, how is your tool different from them? Would people care about the difference?
- What existing resources can you use?
- What techniques/algorithms will you use to develop the tool? (It's fine if you just mention some vague idea.)
- How will you demonstrate the usefulness of your tool.
- A very rough timeline to show when you expect to finish what. (The timeline doesn't have to be accurate.)
Please make sure that there is clearly a use case of your proposed tool. At the proposal stage, the two most important criteria to keep in mind are novelty and potential impact ; an ideal project proposal should contain a clearly novel idea which would lead to a clearly useful tool for at least one real user (if the project is successful).
4. Work on the project
You should try to reuse any existing tools as much as possible so as to minimize the amount of work without sacrificing your goal. Discuss any problems or issues with your teammates or classmates on Piazza and leverage Piazza to collaborate with each other. Consistent with our course policy, we strongly encourage you to help each other in all the course work so as to maximize your gain of new knowledge and skills while minimizing your work as much as possible. We will do our best to help you as well. Consider documenting your work regularly. This way, you will already have a lot of things written down by the end of the semester.
5. Progress report (video presentation) (5%, due April 8)
By 04/08 , each project team will be asked to submit a video presentation (5-10 minutes) to introduce the current progress of projects. Content to be covered in the progress report 1) what has been done, 2) what remains to be done, and 3) any barrier(s) in achieving the proposed project goal. Progress report would be graded based on completion. It is especially important that you report any problems or difficulties that you have encountered so that the instructor and TAs can help you solve the problem or otherwise adjust your project goal in a timely manner. Video presentation will be uploaded on media space https://mediaspace.illinois.edu/channel/CS+410+Spring+2019/ under the playlist tag "progress-report".
6. Software code with documentation or research report (65%, due May 8)
At the end of the semester, each team must submit the software code produced for the project to their fork of the Project GitLab repository (only one member of each team needs to submit this), along with a written documentation (submitted to Compass2g). The documentation should consist of the following elements: 1) An overview of the function of the code (i.e., what it does and what it can be used for). 2) Documentation of how the software is implemented with sufficient detail so that others can have a basic understanding of your code for future extension or any further improvement. 3) Documentation of the usage of the software including either documentation of usages of APIs or detailed instructions on how to install and run a software, whichever is applicable. 4) Brief description of contribution of each team member in case of a multi-person team. Note that if you are in a team, it is your responsibility to figure out how to contribute to your group project, so you will need to act proactively and in a timely manner if your group coordinator has not assigned a task to you. There will be no opportunity to make up for any task that you failed to accomplish. In general, all the members of a team will get the same grade for the project unless the documentation submission indicates that some member(s) only superficially participated in the project without doing much actual work; in that case, we will discount the grade. Everyone is expected to spend at least 20 hours to seriously work on your course project as a minimum, not including the time spent for preparing the documentation. The 65% of the grade would be distributed as follows: 45% for source code submission (you must have a working user-interface for this part in addition to submitting your source code); 20% for documentation submission. The 20% for the documentation submission includes 5% for overview of functions, 10% for implementation documentation, 5% for usage documentation. There is no strict length requirement for the documentation.
7. Video presentation (20%, due May 8)
At the end of the semester, every project team will be asked to submit a short tutorial presentation (e.g., a voiced ppt presentation) to explain how the developed software is to be used, or, if the project was a research project, an overview of the paper report. Please upload your presentation to Illinois Media Space. Specifically, go to the Illinois Media Space Channel for the class at https://mediaspace.illinois.edu/channel/CS+410+Spring+2019/
You may need to use your Active Directory account to login. After you see the channel page, click on "Add to Channel", which should bring up another page where you can click on "Add New" and then select "Media Upload". You can then upload your recorded voiced ppt file. After you upload the file, you will be asked to fill in a form with basic information about the uploaded file. You should then do the following: In the "Name" field, fill in the title of your project, or an informative abbreviation of the title. 2) In the "Description field", add a brief description of your project. 3) In the "tag" field, type in "final-presentation". Feel free to fill in any other field that you want to fill in. 4) Click on "Save", and then click on "Go to Channel". 5) You should now see your uploaded media. Click on your uploaded presentation to test it. At this point, you should also be able to obtain a web URL to your presentation, which you can add to the Piazza post for your project.
The presentation must include (1) sufficient instructions on how to install the software if applicable, (2) sufficient instructions on how to use the software, and (3) at least one example of use case so as to allow a grader (instructor, TA, or a project supervisor) to use the provided use case to test the software. There is no strict length requirement for this video submission, but you should target at 10-15 minutes. However, feel free to produce a longer presentation if needed.
We (instructor, TAs, or project supervisors) will watch all your tutorial presentations and attempt to test each software to check whether it works as described in the video presentation. The tutorial presentation would be graded based on 1) completion of the presentation (10%); and 2) result of testing the software by graders (10%). If the software passes the test, i.e., is working as expected, full points will be given; otherwise, points will be deducted from the 10% allocated to the "result of testing the software by graders."