Skip to content

[Hangman]: Should Exercise be Re-Written or Removed from Track? #2105

Closed

Description

@xxylem

I just completed the Hangman exercise on the Python track. I see from #1690 that you had problems deciding what to do with this exercise. The problem is from a user perspective it looks like the problem specification and the hints are all written by the same person and should be taken together. So the hint:

Please ignore the part regarding FRP library, a third party library is not required for this exercise.

looks like its telling me that Python has inbuilt support for FRP, which it does not. It looks like I should still use FRP but that I don't need a third party library to do it.

After reading the description, I spent a long time reading up on FRP assuming that I was supposed to use it. To be honest, FRP still confuses me, but as far as I can tell, there are Reactive Programming libraries for Python, but not Functional Reactive Programming libraries (Reactive Extensions is not FRP). To implement FRP in Python wouldn't seem to make much sense: you'd have to make everything immutable and you'd be fighting the language all the time. The fact that the exercise was made for OCaml is quite telling, I think. It is a very niche problem.

I understand from the discussion that the problem statement cannot be changed. In that case, I think a clearer hint would be:

PLEASE DISREGARD THE PROBLEM DESCRIPTION. IT IS NOT POSSIBLE TO USE FUNCTIONAL REACTIVE PROGRAMMING (FRP) WITH PYTHON. YOU CAN USE ANY STYLE/PARADIGM YOU THINK IS APPROPRIATE. WE ARE NOT ABLE TO CHANGE THE PROBLEM DESCRIPTION AND IT WAS ORIGINALLY MADE FOR A FUNCTIONAL PROGRAMMING LANGUAGE.

although this is not a perfect fix. It should be in caps because as far as the student is concerned, the problem statement and the hints should be read together as one complete whole, but here the hints are directly contradicting the problem statement.

Ideally the original problem should be changed to avoid requiring a specific paradigm. I have had similar problems in the Javascript track..

Anyway, let me know your thoughts and if I should update something (I haven't contributed here before so I'm not sure of the procedure).

Activity

  1. yawpitch commented on Nov 3, 2019

    @yawpitch
    Contributor

    Personally I'd remove hangman from the Python track entirely; there's no canonical-data.json, the canonical description.md is fundamentally aimed at languages in an entirely different programming paradigm, and the tests and solution we've created don't attempt to address FRP as it could be done in Python ... moreover without addressing FRP there's really no obvious pedagogic value to the exercise that isn't addressed better in other exercises.

  2. cmccandless commented on Nov 4, 2019

    @cmccandless
    Contributor

    I remember implementing this "as-is" exercise was a struggle. Perhaps removing it would be best; I'm going to mark it in my notes for review when we begin the transition for v3.

  3. changed the title [-]Hangman exercise instructions are misleading.[/-] [+][V2] Hangman exercise instructions are misleading.[/+] on Jan 29, 2021
  4. github-actions commented on Feb 19, 2021

    @github-actions
    Contributor

    This issue has been automatically marked as abandoned because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

  5. BethanyG commented on May 21, 2022

    @BethanyG
    Member

    Renaming this to be what it is: A discussion on weather or not re heavily revise or just remove hangman as an exercise.

  6. changed the title [-][V2] Hangman exercise instructions are misleading.[/-] [+][Hangman]: Should Exercise be Re-Written or Removed from Track?[/+] on May 21, 2022
  7. BethanyG commented on Jun 2, 2026

    @BethanyG
    Member

    hangman has now been deprecated in favor of Save the Cow, which has canonical data. Closing this in favor of implementing Save the Cow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions