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

WIP: add prerequisites to practice exercises #324

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft

Conversation

cmcaine
Copy link
Contributor

@cmcaine cmcaine commented Jan 29, 2021

Closes #314.

I've done the first few and welcome feedback on whether they're okay.

As I'm sure you know, we don't have enough concepts in config.json to do this at the moment.

Even including all the ones in the concepts dir, we're still missing a concepts for:

  • loops
  • exceptions
  • common data structures (dicts, vectors, sets, tuples) (I wonder if there should be a parent concept of "common data structures" to avoid revealing which ones to use?)
  • structs
  • bitwise operators

I've just picked likely names and put them in prerequisites without adding them elsewhere.

There's also the issue of multiple solutions to problems. Should I add a concept as a prereq if it is commonly used in correct solutions, or only if it is required?

And I'm assuming I should avoid adding concepts that are parents of concepts that are required.

Copy link
Contributor

@SaschaMann SaschaMann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

Overall this looks good but I don't have good answers to all the questions you raised yet.

I've just picked likely names and put them in prerequisites without adding them elsewhere.

Yep, we can create those later. Knowing which ones we need is quite helpful.

(I wonder if there should be a parent concept of "common data structures" to avoid revealing which ones to use?)

I think if there's one clearly preferable structure to use, it's fine to add that as a pre-req. But it might be useful to have a less-specific container for more advanced exercises so that students learn when to use which structure. @iHiD do you have thoughts on this?

There's also the issue of multiple solutions to problems. Should I add a concept as a prereq if it is commonly used in correct solutions, or only if it is required?

This was discussed on the call today but unfortunately I forgot what the conclusion was (there were a few suggestions)... I'll have to check the VoD once it's up :D

I think any concept that's required to understand the "top" exemplar solution, i.e. the one we currently recommended first in mentoring notes and not one of the performance-optimised solutions, should definitely be a pre-req.

And I'm assuming I should avoid adding concepts that are parents of concepts that are required.

Yes. I don't think it would break anything but there's no need to have them.

config.json Outdated Show resolved Hide resolved
config.json Outdated Show resolved Hide resolved
config.json Outdated Show resolved Hide resolved
@@ -182,7 +185,10 @@
"slug": "pangram",
"name": "Pangram",
"uuid": "4bc9a4f8-fc4d-4e6b-a93c-07069bbc5bc9",
"prerequisites": [],
"prerequisites": [
"boolean-logic", "loops",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"boolean-logic", "loops",
"boolean-logic", "loops", "sets"

This gives away the solution but I guess it may still make sense to have it as pre-req?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's the question, I guess. You don't need to use sets to solve this (and many students solve it without sets). Sets are just the most elegant solution.

But this one is perfectly fine, so I don't think I'd want to discourage solutions like this:

ispangram2(input) = all(in(lowercase(input)), 'a':'z')

This is why I think a data-structures or iterables concept might be a good idea?

@cmcaine cmcaine marked this pull request as draft January 29, 2021 23:06
cmcaine and others added 2 commits January 30, 2021 04:10
Co-authored-by: Sascha Mann <git@mail.saschamann.eu>
@SaschaMann SaschaMann added the v3 🚀 Issues that need to be resolved for the launch of v3 label Feb 9, 2021
@cmcaine
Copy link
Contributor Author

cmcaine commented Aug 30, 2021

I've resolved the merge conflicts.

I don't know how all of this interacts with us not having concept exercises turned on. Maybe we should move all of these prerequisites to practices or something instead?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v3 🚀 Issues that need to be resolved for the launch of v3
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add prerequisites to Practice Exercises
3 participants