Date: Tue, 9 Jun 2020 23:52:56 +0300
Of course!
I learned the hard way that I must tell them explicitly that "using
exceptions" != "have try-catch in every function" or even that "throw" and
"try-catch" usually should NOT be in the same function.
We plan the requirements carefully in a way that error detection is
scattered over all the various functions for parsing and handling the user
commands, but the handling is per line read from the user so the easiest
way to implement it is by catching 'em all in one location.
On Tue, Jun 9, 2020 at 11:38 PM Tony V E <tvaneerd_at_[hidden]> wrote:
> That sounds pretty good.
> Please tell me you are catching the exceptions really high, near the top -
> where the "transaction" started!?
>
> On Tue, Jun 9, 2020 at 4:29 PM Yehezkel Bernat via SG20 <
> sg20_at_[hidden]> wrote:
>
>> (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_at_[hidden]> 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
>>> <https://docs.google.com/document/d/1zi1uuLTKlsspBo2aEgGGStqrMH84PhmzEG3i6f7M_Dw>
>>> - their exercise: managing containers on ship
>>> <https://docs.google.com/document/d/1Rh6TPxvG3fEr4fFbYiDU3ynVzKgKTlV1UlTW8j7_kQ4>
>>>
>>> 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_at_[hidden]>
>>> 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_at_[hidden]> 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_at_[hidden]> de la part de JC van
>>>>> Winkel via SG20 <sg20_at_[hidden]>
>>>>> *Envoyé :* mardi 9 juin 2020 11:47
>>>>> *À :* SG20 <sg20_at_[hidden]>
>>>>> *Cc :* JC van Winkel <jcvw_at_[hidden]>
>>>>> *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_at_[hidden]> 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_at_[hidden]> wrote:
>>>>>
>>>>> See https://www.youtube.com/watch?v=NTfOnGZUZDk&feature=youtu.be&t=533
>>>>> <https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DNTfOnGZUZDk%26feature%3Dyoutu.be%26t%3D533&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789439049&sdata=2IgC08vuETc8vIhC3%2Fl1dbs3jMNjYabM5NUgXs9ScJE%3D&reserved=0>
>>>>>
>>>>> (it is the last 30 seconds of a video of the origins of the grep
>>>>> command in UNIX)
>>>>>
>>>>> JC
>>>>> --
>>>>> SG20 mailing list
>>>>> SG20_at_[hidden]
>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>> <https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fsg20&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789449041&sdata=XFt3dm3aqMSop9QaM6cCOg5rkFLVAgjEFqXc11piBu8%3D&reserved=0>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Yongwei Wu
>>>>> URL: http://wyw.dcweb.cn/
>>>>> <https://can01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwyw.dcweb.cn%2F&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789449041&sdata=0wSBvJlfj1CrCxjzvCs8pAallZLQG51hL2yDvHrVq%2F8%3D&reserved=0>
>>>>> --
>>>>> SG20 mailing list
>>>>> SG20_at_[hidden]
>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>> <https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fsg20&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789459034&sdata=MfpVmgNIkuuWg7j5bMO9ycuYqEMlhtoZAIC6IUXRooA%3D&reserved=0>
>>>>>
>>>>> --
>>>>> SG20 mailing list
>>>>> SG20_at_[hidden]
>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>>
>>>>
>>>>
>>>> --
>>>> Be seeing you,
>>>> Tony
>>>> --
>>>> SG20 mailing list
>>>> SG20_at_[hidden]
>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>
>>> --
>>> SG20 mailing list
>>> SG20_at_[hidden]
>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>
>> --
>> SG20 mailing list
>> SG20_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>
>
>
> --
> Be seeing you,
> Tony
>
I learned the hard way that I must tell them explicitly that "using
exceptions" != "have try-catch in every function" or even that "throw" and
"try-catch" usually should NOT be in the same function.
We plan the requirements carefully in a way that error detection is
scattered over all the various functions for parsing and handling the user
commands, but the handling is per line read from the user so the easiest
way to implement it is by catching 'em all in one location.
On Tue, Jun 9, 2020 at 11:38 PM Tony V E <tvaneerd_at_[hidden]> wrote:
> That sounds pretty good.
> Please tell me you are catching the exceptions really high, near the top -
> where the "transaction" started!?
>
> On Tue, Jun 9, 2020 at 4:29 PM Yehezkel Bernat via SG20 <
> sg20_at_[hidden]> wrote:
>
>> (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_at_[hidden]> 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
>>> <https://docs.google.com/document/d/1zi1uuLTKlsspBo2aEgGGStqrMH84PhmzEG3i6f7M_Dw>
>>> - their exercise: managing containers on ship
>>> <https://docs.google.com/document/d/1Rh6TPxvG3fEr4fFbYiDU3ynVzKgKTlV1UlTW8j7_kQ4>
>>>
>>> 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_at_[hidden]>
>>> 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_at_[hidden]> 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_at_[hidden]> de la part de JC van
>>>>> Winkel via SG20 <sg20_at_[hidden]>
>>>>> *Envoyé :* mardi 9 juin 2020 11:47
>>>>> *À :* SG20 <sg20_at_[hidden]>
>>>>> *Cc :* JC van Winkel <jcvw_at_[hidden]>
>>>>> *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_at_[hidden]> 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_at_[hidden]> wrote:
>>>>>
>>>>> See https://www.youtube.com/watch?v=NTfOnGZUZDk&feature=youtu.be&t=533
>>>>> <https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DNTfOnGZUZDk%26feature%3Dyoutu.be%26t%3D533&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789439049&sdata=2IgC08vuETc8vIhC3%2Fl1dbs3jMNjYabM5NUgXs9ScJE%3D&reserved=0>
>>>>>
>>>>> (it is the last 30 seconds of a video of the origins of the grep
>>>>> command in UNIX)
>>>>>
>>>>> JC
>>>>> --
>>>>> SG20 mailing list
>>>>> SG20_at_[hidden]
>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>> <https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fsg20&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789449041&sdata=XFt3dm3aqMSop9QaM6cCOg5rkFLVAgjEFqXc11piBu8%3D&reserved=0>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Yongwei Wu
>>>>> URL: http://wyw.dcweb.cn/
>>>>> <https://can01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwyw.dcweb.cn%2F&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789449041&sdata=0wSBvJlfj1CrCxjzvCs8pAallZLQG51hL2yDvHrVq%2F8%3D&reserved=0>
>>>>> --
>>>>> SG20 mailing list
>>>>> SG20_at_[hidden]
>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>> <https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fsg20&data=02%7C01%7Cpatrice.roy%40usherbrooke.ca%7C8c14ba10de4b4d37a4d908d80c8c7b60%7C3a5a8744593545f99423b32c3a5de082%7C0%7C0%7C637273144789459034&sdata=MfpVmgNIkuuWg7j5bMO9ycuYqEMlhtoZAIC6IUXRooA%3D&reserved=0>
>>>>>
>>>>> --
>>>>> SG20 mailing list
>>>>> SG20_at_[hidden]
>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>>
>>>>
>>>>
>>>> --
>>>> Be seeing you,
>>>> Tony
>>>> --
>>>> SG20 mailing list
>>>> SG20_at_[hidden]
>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>>
>>> --
>>> SG20 mailing list
>>> SG20_at_[hidden]
>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>>
>> --
>> SG20 mailing list
>> SG20_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
>>
>
>
> --
> Be seeing you,
> Tony
>
Received on 2020-06-09 15:56:22