It may be only a minor thing in the space of examples that you seem to be considering, but I have had a lot of success with my practice of requiring students in my graduate courses to write a substantial term paper on an original topic.
The aim is for them to undertake a simulacrum of the research experience. I definitely do not want them to just give me an account of some difficult topic on which they read elsewhere. Rather, we try to find a suitable original but manageable topic, which they will have to figure out themselves, and then write up their results in the form of a paper.
I insist that these term papers give the appearance of a standard research article, with proper title, abstract, grant or support acknowledgement, proper introduction, definitions, statement of main results and proof, with references and so on. Furthermore, I insist that the students use TeX, which I insist they learn on their own if they do not yet know it.
The most difficult part for the instructor is to find suitable topics. One rich source of topics is to take a standard topic that is well-treated elsewhere, but then make a small change in the set-up, giving the student having the task to work out how things behave in this slightly revised setting. For example, in a computability theory class, there is a standard definition of the busy beaver function, with many results known, but one can insist on a slightly different model of Turing machine (such as one-way infinite tape instead of two, or change the halt rule, or have extra symbols or extra tape), where the standard calculations are no longer relevant, but many of the ideas will have a new analogue in this new setting. But also there are usually many suitable topics if one just thinks with curiosity about some of the main ideas in the course and some relevant examples.
I always insist that the topics be pre-approved by me in advance, because I want to avoid the situation of a student just writing up something difficult they read, but rather have them really do real mathematical research on their own. Often, I meet with each student several times and we make some discoveries together, which they then work out more completely for their paper.
After students submit their final draft (I do not call it a first draft, since I want them to do several drafts on their own before showing me anything, and I don't want to look at anything that they regard as a "first draft"), then I give comments in the style of a referee report, and they make final revisions before submitting the "publication" version, which I sometimes gather into a Kinko's style bound issue Proceedings of Graduate Set Theory, Fall 2014 or whatever, and distribute to them and to the department.
Finally, on the last lecture of the course, we usually have student talks of them making presentations on their work. For example, see the student talks given for my course on infinitary computability last fall.
I think it works quite well, and gives the students some real experience of what it is like to do mathematical research. In a few exceptional cases, the terms papers have subsequently turned into actual journal publications, when the students got some strong enough and interesting enough results, and that has been really special.
The workflow for me is to assign normal problem sets in the early part of the course, and then start suggesting topics, with the students coming to me and we discuss possibilities. Then, as the work on the paper ramps up, the problem sets taper off, until they are submitted, with additional problem sets at the end of the course, except when they are making their revisions.
(And I never accept papers after the end of the course.)