Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Knights Travails: Handle the concept of a graph more explicitly with new project #28487

Open
3 tasks done
damon314159 opened this issue Jul 22, 2024 · 11 comments · May be fixed by #29037
Open
3 tasks done

Knights Travails: Handle the concept of a graph more explicitly with new project #28487

damon314159 opened this issue Jul 22, 2024 · 11 comments · May be fixed by #29037
Assignees
Labels
Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues

Comments

@damon314159
Copy link
Contributor

Checks

Describe your suggestion

I think that graphs are a structure that are very much swept under the rug in the current iteration of KT.

The linked list and hashmap projects have you define a class that can be used to instantiate and work with a structure, but apply no "real world" context to it. I think this makes you think abstractly about what you're representing and how.

Then you get to KT, where graphs are introduced more like an aside to the specific knight problem, and so learners aren't thinking about using a graph to solve a problem, they're thinking about a horse and trying to figure out what a graph has to do with it.

I think it could be really beneficial to make an abstract graph project, which can have the learner make a class, give it some methods and such. Then after that you can have the KT project, and the hint at the top that you will need to use a graph is much more meaningful - and serves as an example of how these abstract structures could solve a 'real' problem

I'd be up for working on this but to make it at reasonable quality is unlikely to be a speedy process

Path

Ruby / Rails, Node / JS

Lesson Url

https://www.theodinproject.com/lessons/javascript-knights-travails

(Optional) Discord Name

No response

(Optional) Additional Comments

No response

@damon314159 damon314159 changed the title Knights Travails: Handle the concept of a graph more explicitly Knights Travails: Handle the concept of a graph more explicitly with new project Jul 22, 2024
@wise-king-sullyman
Copy link
Member

I strongly agree with you, I had no idea how I was supposed to have done KT until way after I finished it. I've just never been sure what to do differently about it because I think it is a very valuable project even though I've seen a lot of people with that same problem.

I like the idea of a more abstract graph project to warm up and am on board with your proposal, but before you proceed I'd like to see if any other @TheOdinProject/maintainers object.

@JoshDevHub
Copy link
Contributor

I think it's potentially a cool idea, but I'd also be interested in seeing what this would like. One of the "challenges" maybe is that unlike the other structures talked about, graphs are very abstract and can have several different concrete implementations (which is why people can solve Knight Travails in a bunch of different ways).

@damon314159
Copy link
Contributor Author

damon314159 commented Jul 23, 2024

@JoshDevHub

I think it could be like this:
Introduce the topic
Point at some resources to read if more detail is needed
A few paragraphs describing some common implementations (adjacency matrix etc)

Assignment begins - specify the implementation they should use for the exercise
I would like to write a visualiser method that displays a graph too. I think that would be really valuable, similar to pretty print in trees

@henrylin03
Copy link
Contributor

Contributor

Just did this problem yesterday, and had to go to Reddit and StackOverflow to have a better idea on how to solve. Looking back, what are your thoughts around:

  1. linking GeekforGeeks article - article not only tabulates the differences, but also uses the word "node" explicitly from the start, which might trigger learnings from previous lessons where you created a Node class / factory -> learner will feel familiarity and eventually come to conclusion that the "node" are positions on a chess board
  2. hint thinking towards whether the knight's movements, represented as "nodes", should be directed or undirected (like whether the knight should be able to move in a "cycle", or it is more like the hockey example (see screenshot) in the existing Khan Academy article:
    image
  3. hint thinking that, if directed, how the learner could visually represent that to data structures they already know (essentially how to turn the graph into a tree-like structure). think about how many maximum valid moves are available at any given position (ans: 8).

Copy link

This issue is stale because it has had no activity for the last 30 days.

@github-actions github-actions bot added the Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues label Aug 31, 2024
@CouchofTomato
Copy link
Member

My thoughts are that graphs is such a big topic we probably need more material to cover it for sure and at least one other project so I'm not against a warm up project where the focus is graph abstraction.

@github-actions github-actions bot removed the Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues label Sep 4, 2024
Copy link

github-actions bot commented Oct 4, 2024

This issue is stale because it has had no activity for the last 30 days.

@github-actions github-actions bot added the Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues label Oct 4, 2024
@wise-king-sullyman
Copy link
Member

@damon314159 it seems nobody has voiced opposition to the idea, is this still something you're interested in doing?

@github-actions github-actions bot removed the Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues label Oct 13, 2024
@damon314159
Copy link
Contributor Author

Yes, I'm still interested in pursuing it

@wise-king-sullyman
Copy link
Member

Have at it! Thanks!

@damon314159 damon314159 linked a pull request Nov 1, 2024 that will close this issue
7 tasks
Copy link

This issue is stale because it has had no activity for the last 30 days.

@github-actions github-actions bot added the Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues label Nov 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Stale This issue/PR has been inactive for over 30 days and will be closed if inactivity continues
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants