-
-
Notifications
You must be signed in to change notification settings - Fork 77
Strange stopwatch #868
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
Strange stopwatch #868
Conversation
Pretty much inevitable for this sort of concept on this sort of track.
We can put this well down the concept tree as a relatively advanced topic. My main concern is that it should be a leaf node, with nothing else depending on it. That way, students aren't penalized much if they want to skip it. I'll go through it in more detail later today. Meanwhile, non-urgent question for @BethanyG: how would you feel about this as something to port to the Python syllabus? |
A little more detail and a link to a method
OK, definitely tomorrow at the latest. I've had inventory-management partly done for so long that I wanted to finally PR something. Quiet determination to make this syllabus join up, with nothing free-floating.... |
|
Some added comments on the rationality behind the choice of functions and structure of the exercise:
|
I have to be really honest here. I am not feeling this. I think my "practicality brain" is resisting. It feels contrived to me, and also has overlaps with things like split second stopwatch which confuses things. I know this is about dealing more cleanly with rotations, but it doesn't quite have the motivation that a "Big Circle" navigation or "Translate-Transform Image" problem might. Because complex numbers are "mathy" and "weird", I feel like (at least for Python) folx need to have both a strong reason to engage in solving the problem, and also a sense that their "mathy" and "weird" intuition might be off. Otherwise, they'll just move on. This could be because there isn't a story yet -- and that a story about animating a clock might help here. But I also think we're adding a bunch of time and datetime exercises to problem specs right now, and so should avoid time-themed problems that aren't related, to well time and dates. It also lacks a bunch of things that I'd cover for Python (at least in a concept exercise) -- since in Python this is a built-in type, and is subject to all the "width" rules/conversion rules, and many of the basic mathematical operations. My overriding goal in Python would be to get students "used to" treating this an any other numeric type - granted, its a bit special (but so are Fractions and Decimals - in fact, they are much more special because they aren't core types) and a bit off the beaten path -- but it is in no way super-exotic. So something that encouraged/forced using addition, subtraction, multiplication, et., al. -- and even mixed math with other types. I think I would also cover some select things in cmath vs math, to help folx understand when you can "simply" use a complex number in a calculation, and when you have to deviate or apply alternate methods. Sorry to be so long-winded! |
|
Thanks for the detailed comments. I have some of the same feelings (somewhat attenuated for Julia, given the user base), but I don't have anything better. I've not been following the (interminable) discussions are new cross-track problem specs, so it's useful to know what we might overlap with. This is hard!! |
|
@BethanyG Thanks for your views! I agree the story is contrived, so I'll be looking into other possible ideas. A couple questions on your thoughts:
@colinleach Judging from the rest of BethanyG's comments, I'm not sure a Julia exercise in the mold I'm currently considering would port well to Python since the user base is generally more mathematical and:
Which why I focused more on exposing users to the inbuilt methods to advance the concept. Of course, I'm new to this, so I'm not sure if my idea really constitutes a concept exercise or not. I was just running with the idea of vector rotation since it seems to be the simplest possible example. Let me know if you think I'm off base here and we should change tack. |
|
Yes, we have two not-quite-identical problems here. Our first priority is to get something on the Julia syllabus. However, it would be a huge bonus if it could be ported to Python (quickly) and R (at some future point). There may also be other tracks, I'm not sure. As I said, this is hard. |
|
A question which I can't currently decide on the answer to: would this maybe work better as a track-specific practice exercise? That presupposes that we can find another concept exercise that also works for Python. Incidentally, if I seem to be pushing that too hard: I wrote Python's complex concept (and R's), so I have some personal interest in finding an exercise that works with all of them. It's very unfortunate that I am much worse at thinking of new exercises than I am at drafting concept docs! We all have different strengths and weaknesses. |
I could certainly see it as such. I will get away from the time aspect since, as Bethany noted, it would help separate it from other exercises. It could also complement the
Would you be interested in getting an What I feel is the biggest roadblock here is the lack of real world examples which are simple to explain and/or understand and/or implement in an exercise. For that reason, the target audience seems to be a bigger factor in deciding an exercise for this topic than others. However, as I said, I'm new to creating concept exercises, so I'm sure there are tricks of the trade of which I'm unaware, and there very well could be a good way to bridge this gap which is currently beyond me, and I'm looking forward to further input from BethanyG or others with more experience in the matter. |
Afterthought: I hope the |
|
The You will notice a strong family resemblance!
No, the website seems to have no trouble separating concepts from exercises. |
|
Thanks! That looks familiar. I must have forgotten the Julia one was sitting in I love that all three languages chose a different convention ( Anyway, from the |
|
I feel (my head feels!) that I'm about done for today. I started porting After that:
You probably noticed my posts on the forum. Not much response yet, but that's normal for Saturday evening. I've been vaguely thinking about what concepts to write next, not backed by any action.
|
I hear you. My brain checked out a while ago :D
Yep! Luckily, there's less urgency now that the syllabus is flowing. I would still like to hear other's ideas/experiences though.
Indeed this topic seems complicated. However, there are a few old concepts in One thing I see in there that could be a good topic would be |
Totally agree, but it absolutely depends on |
Ha! I didn't even put that together. Is there an emoji for "brain fart"? 🧠 💨 ? In any event, my day of pretending to be intelligent is officially over! |
|
Closing for retooling. Comments still welcome! |
As noted in the
I have some other details in those comments on
Yes - my addled brain went to "Big" but I meant "Great Circle". Specifically the Riemann sphere, and mapping it to the complex plane. Some other resources I've come across: a cookbook!, an ancient python recipe for calculating distances between zip codes we could possibly adapt, and the Aviation Formulary - which even has worked examples in JavaScript, of all things.
Python has everything Julia has - and there are many mathematically inclined Pythonistas. I think the difference is that there is a very very strong streak of "how does this apply in the real world?" running through things, whereas Julia users are already convinced of utility/functionality. |
This helps me understand more of where you're coming from! I've been trying to figure out why you would like to use, what I feel are, such conceptually difficult examples for an exercise which is meant to include "simple" things like complex addition, since these seem to be contradictory aims (i.e. audiences) to me. However, if real applications are a dominant concern, I believe I understand better. In cases like this, I like to assume I'm missing something from the big picture, so I'm looking forward to finding out more on how one would reconcile these competing forces. Are there any current Exercism exercises I could read which have this level of conceptual sophistication?
One other potential snag that came to mind: I believe those are the four rotations you could do without any complications. Outside of those, I think you'll have to deal with complications resulting from the lattice points on a circle not being one-to-one with the lattice (which raises questions about how to perform the mapping consistently). |
This is a preliminary look at an exercise for complex numbers, and should probably be labeled a draft. A few points:
introduction.mdis left blank to be able to align it later with the concept intro. For that reason, I'm unsure on how much further detail (mathematical or functional) will be necessary ininstructions.md.complex(a, b)), while keeping touch with the "real world" example of the 2D plane. This might also make porting to other languages easier if desired.timeargfunction returning radians rather than seconds for generality. This could be made more specific with the demand of conversion to seconds.I'm looking for any suggestions on how to improve this. It turned out a bit differently than I had initially imagined it due to hiccups along the way, but the basic idea is still there.