I am teaching an elective course on algorithms for 3rd year undergraduates. There are 12 weekly assignments, each of which is worth 1% of the grade, and a final exam which is worth 88%. I would like to encourage the higher-level students to get into research, and to this end I would like to first encourage them to read research papers. So I plan to add a bonus assignment on research papers related to the course topic. My current plan is to offer them a list of papers and have each student pick a different one. The assignment will have 4 parts, each of which is worth 6% bonus points:
Parts 1+2: understanding the paper
- Summarize the paper in your own words: what problem is the paper trying to solve? What are the existing solutions? What is the new algorithm? What problems are left for future work?
- Construct at least 3 substantially different examples for the algorithm presented in the paper (besides the examples given in the paper, if any): run the algorithm by hand on each example, and show that the outcome indeed satisfies the output guaratees of the algorithm.
Parts 3+4: programming the algorithm
- Write in Python (or another programming language) a skeleton of an implementation of the main algorithm in the paper. A "skeleton" is the heading of a function, without the function implementation. Write unit-tests based on your examples from part 2.
- Program the algorithm and test it.
The idea of the programming part is that programming an algorithm requires a very detailed understanding of the algorithm. Additionally, my students are very good at programming, but not as good at reading research papers, so this part of the exercise is like a bridge between what they are good at and the new skill I would like them to learn.
I will be happy for feedback and further suggestions regarding this plan, both in general (e.g. is this indeed a good way to encourage good students to get into the world of research?) and in the details (e.g. is the partition to 4 parts reasonable?).