(Background: I'm a TA for OOP course in college.)

We started to have one such assignment.
When we want them to practice exceptions, we want a program with enough layers and enough possible failures so exceptions will be the natural and correct solution.
We don't want to burden them with writing a huge program (in addition to understanding how to use exceptions, how and where to catch them etc.).
We also don't want to have just a small program for this assignment, as it makes the usage of exceptions artificial and unintuitive.

Instead, their assignment is to take the solution of a previous assignment, add one or two small features and add error handling by using exceptions.
Instead of forcing them to struggle with their own code, we give them our solution to build on. They have to change it a bit, besides adding the additional features, to be able to handle the errors according to the requirements.

Some of them complain that it's hard to work on someone else's code, but we hear a lot of good feedback too, how much they learned from it about good practices and class design.

As a side note: for OS courses/workshops, it seems more common to have assignments to change the implementation or add a new feature inside an existing kernel (e.g. https://www.ops-class.org/).
Maybe what Patrice suggested will help us to try a similar approach for C++ courses.

On Tue, Jun 9, 2020 at 10:22 PM Amir Kirsh via SG20 <sg20@lists.isocpp.org> wrote:
I tend to go in class over a simplified story that resembles their exercise.
Then they should see how to use the solution provided for the simplified story in their own exercise.

For example:
- simple story: managing examinees in exam hall
- their exercise: managing containers on ship

If you have time to read the above (long) requirement docs and have feedback, please feel free to share with me privately.


On Tue, Jun 9, 2020 at 9:57 PM Tony V E via SG20 <sg20@lists.isocpp.org> wrote:
I've often wondered about giving students code from previous students.
Or better yet, give them the code from themselves in first year.

I would also like to give a class different parts of a problem - this group do the UI, this group do the backend, etc.  Makes marking harder probably, but is more realistic.
Of course there is also internship for learning those things.



On Tue, Jun 9, 2020 at 2:04 PM Patrice Roy via SG20 <sg20@lists.isocpp.org> wrote:
The big problem in schools is that (in my experience, at least) we don't actually have a body of legacy code to provide, and making students use colleagues' sources (something I tried) tends not to give desired results due to... let's call it "emergent quality of implementation" (it's far from professional code that's evolved over time).

I guess we could make a list of relevant open source projects (with reasons why we think they are relevant) or ask partners from the industry to provide some interesting sources for students to play with... We'd need something stable, however, to avoid students accessing the work of previous years' students.



De : SG20 <sg20-bounces@lists.isocpp.org> de la part de JC van Winkel via SG20 <sg20@lists.isocpp.org>
Envoyé : mardi 9 juin 2020 11:47
À : SG20 <sg20@lists.isocpp.org>
Cc : JC van Winkel <jcvw@google.com>
Objet : Re: [SG20] Wonderful story from Brian Kernighan about an assignment he gave to students.
 
Glad you liked it.

In general, I like the idea of giving assignments where students need to change software.  That is what happens the most in industry.

JC

On Tue, Jun 9, 2020 at 3:06 PM Yongwei Wu via SG20 <sg20@lists.isocpp.org> wrote:
It is totally fantastic. I watched the ending twice, and then the video in whole. Both Brian and Ken are brilliant!

On Fri, 5 Jun 2020 at 15:58, JC van Winkel via SG20 <sg20@lists.isocpp.org> wrote:
See https://www.youtube.com/watch?v=NTfOnGZUZDk&feature=youtu.be&t=533

(it is the last 30 seconds of a video of the origins of the grep command in UNIX)

JC
--
SG20 mailing list
SG20@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/sg20


--
Yongwei Wu
URL: http://wyw.dcweb.cn/
--
SG20 mailing list
SG20@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/sg20
--
SG20 mailing list
SG20@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/sg20


--
Be seeing you,
Tony
--
SG20 mailing list
SG20@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/sg20
--
SG20 mailing list
SG20@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/sg20