What are good models for an Honors Program for CS students? One way to extend the reach of your best students is to have an Honors Program that, perhaps, runs over several years. 

One model is to have a special program to which students are invited. Participation extends over several years, perhaps with separate classes. 

If you have experience with such a program, either as a participant, faculty member, or creator, what was the model and what worked and didn't in your program.

I was a faculty member for students in one such program but had little influence on its general structure. Students could designate any course(s) in the curriculum as honors option. If the professor agreed, then the student and prof made a mini contract for extra work in the class. This was sort of small scale from my perspective but worked well in my (limited) experience. There were no special lectures for these students and the other students weren't affected. The honors student had to do more to earn an A in the course, but that was part of the contract. I had to design a more complex project for the (compiler course) students was the only real difference. 

When I was an undergrad at a liberal arts college we had a general honors program. I studied math and philosophy, but the program was tailored to the liberal arts. Students were invited at the end of the first year (of four). A faculty committee was responsible for invitations, though I suspect that a student could petition for entry. Every term the program had a different theme, literature, science, psychology, history, etc. depending on faculty interest. 

The students read a book on the topic of the term each week and met in seminar for a few hours once a week. The faculty said little as the students discussed the book. At the end of the second year of the program (third year of study) one of the seminars was public, held in an auditorium, with a reception following. These were well attended. 

The final year was different. We developed a "thesis" paper in our major study area, so mine was in the philosophy of math area. 

Since my major was fairly narrow (but also required science study) I cam away with a nearly perfect Liberal Arts education. The only area of the Medieval University course of study that I missed was Astronomy. 

However, the honors courses were in addition to the regular student load. The courses were pretty intense, so could lead to burnout. Also, someone already studying, say philosophy, didn't get as much "broadening" as I did since they already studied many of the HP topics anyway. 

I liked that Honors Program model, then and now, but here I'm more interested in something specialized for Computer Science students. I think that both small scale and large scale programs are interesting and might serve as models for others to consider. 



Much later, I helped design a doctoral program in computing that had many features of the above honors model. Three years, two of study and one of dissertation. The years were calendar years with no breaks and dissertation topics were expected to be ready to go by the beginning of the third year. 



My personal context is the United States where undergraduates take many courses in many fields with one chosen as a specialty. My examples are from the US of course. However, other places, in which students are much more specialized as undergraduates have, in my view, similar needs: foster a good learning environment for the best students who want to go beyond and can use faculty guidance. What would an "honors" program look like in such a situation?
First, I will describe my university's program, and then I will give my thoughts on its efficacy as a participant of this program.

My university makes a distinction between the general "University Honors" program and specific "Honors in the Major" programs. Students are invited to the honors program based on particular GPA requirements, which then need to be maintained to remain in the program. You can complete University Honors without completing Honors in the Major (although the latter fulfills the second criterion for the former, which I will elaborate on below), but not the other way around. Honors in the Major has specific requirements for each particular major (although almost always means writing a thesis on some form of undergraduate research), whereas University Honors is standardized.

The criteria for fulfilling University Honors are two-fold: First, the student must fulfill 12 semester hours of honors courses. This can be done in several ways: taking specific honors courses/seminars (which are intended to provide a broad, liberal arts education), courses in their major which have been designated as honors, or as you describe, contracting a course to count for honors credit. This entails approaching a professor and agreeing on an honors project to complete by the end of the semester.

The other criteria that must be filled is what is called "experiential learning". This involves getting "12 semester hours" via doing things like participating in undergraduate research, getting internships, being a TA, etc. It's a fairly extensive list, with each particular experience counting for a different amount according to the duration/time commitment involved.

In my experience, I think the latter portion of this program is much more effective than the first. It incentivizes students to apply themselves beyond immediate academic rewards, a trap that I have noticed many honors students fall into -- obsessing over their GPA at the expense of everything else. The first is relatively trivial -- the requirement can be fulfilled during a single semester, and often is -- and honors courses are not excessively difficult when compared to their regular counterparts at my university.

I think the purpose of an honors program should be aligned more towards the second criterion if the intention is to create exceptional students. If the focus is mostly on courses, you risk trivializing the program (in my case) or burning out your students through excessive work (in your case). I think putting the emphasis on ensuring students apply themselves, rather than just taking more difficult courses, is a better model for developing students personally and professionally.