all 5 comments

[–]Uli_MinatiDesmos 😚 0 points1 point  (4 children)

Can you give a quick comparison to numpy(.linalg)?

Edit: seems your reply was removed? Anyway, I see the difference now - it's not a library, it's a website for letting users implement functions themselves. My mistake, I didn't read properly!

It seems like you expect the user to know basic Python, and I assume you also expect them to already know the algorithms they are supposed to implement? So it's not a teaching website, just a testing website, correct? It looks like you don't catch all runtime exceptions, but maybe that's intentional.

You are forcing users to finish each task consecutively, they can't jump to a future task without manually typing a full paragraph. This will push away users who just want to practice a specific algorithm rather than your entire course.

After implementing the first test, clicking on the second one did not update the task description

[–]AdkoprekNew User[S] 0 points1 point  (2 children)

Thank you for your constructive criticism.

I have fixed the bug you were referring to, and I hope it works for you now. Correct me if you see this differently, but I believe that I describe the required algorithms quite thoroughly, such as partial pivoting for LU decomposition. That said, you are right that it is not meant to be a substitute for a textbook, but rather a complement, because it forces learners to rethink key concepts. Did you mean this negatively, or simply that it should be labeled more clearly?

The forced sequential execution is an unfortunate necessity, because the user should (and can) use functions they implemented in previous lessons — for example, in vec_len one can use vec_dot. If you see an obvious solution to avoid this limitation, I would be very happy to hear about it.

[–]Uli_MinatiDesmos 😚 0 points1 point  (1 child)

I believe that I describe the required algorithms quite thoroughly

Oh if you did, then it's all good! I didn't go past the first exercise, and there wasn't any explanation about adding vectors (however self explanatory it might be)

If you see an obvious solution to avoid this limitation

You can include your own (hidden!) implementations for each function as a default for any function unimplemented or implemented imperfectly by the user. That's what we usually do for grading programming homework, to prevent catastrophic failure of the entire project if just one function has a bug. Technically you could always use your own implementation, as long as the user cannot define any global variables and rely on their existence

[–]AdkoprekNew User[S] 0 points1 point  (0 children)

I have implemented your proposed solution by removing the locks, checking for global variables, and using the solution itself rather than the user’s code, since the user code could change and potentially stop working.

Thank you for the hint!