visualization-tool icon indicating copy to clipboard operation
visualization-tool copied to clipboard

Pseudocode revamp

Open luciankt opened this issue 1 year ago • 4 comments

Currently, most of the pseudocode can be translated line-by-line into Java and students unknowingly complete their homeworks using it without actually learning how to write the algorithms.

The goal here is to simplify the pseudocode to something that is still semantically the same and provides the users an explanation of what happens at each step, but still requires some thought to actually translate into code.

The purpose of pseudocode is to illustrate line-by-line what is happening at each step, but I think this can be done just as well with "English-ified" instructions rather than Python-like code.

A few mockup examples of what this could look like: https://docs.google.com/document/d/1p4WIj3JHqKj6vUDlZDhFyxZ5EyTeEgfvpDelCjNl3mw/edit?usp=sharing

UPDATE:

We're going with a three-way toggle between hidden, code-like, and English-like pseudocode. All of these options will eventually be available for every algorithm and data structure on the site.

luciankt avatar Sep 05 '23 17:09 luciankt

Working on this here: https://github.com/luciankt/visualization-tool/tree/pseudocode-rewrite

luciankt avatar Oct 09 '23 03:10 luciankt

Hello I am a long time user and enthusiast of this tool! I was hoping I could offer my thoughts on this as an outsider not involved in the course.

The pseudocode as is has been incredibly useful in understanding the fine grained implementation and working of these data structures and algorithms. Many people I know have started to use this tool and the main thing they end up liking the most is the synchronous highlighting and detail in which the code is presented. Several online comments on reddit and even this Tiktok point out the pseudocode as the main selling point of the tool.

I understand the primary purpose of this tool is for students in your class. But given the public and open source nature of the application, I just wanted to make an outsider's perspective known. Perhaps you can have both the pseudocode as currently is and the more "Englishified" pseudocode as options the user can toggle between?

If rote copying by students is the issue here, a quick search of "CS 1332 homeworks" shows multiple repositories of code students can potentially copy from. At the end of the day if a student is going to copy, I think it's "better" if they do so from this official resource that they (hopefully) also use to visualize the code they are taking.

Just my two cents on this. Thank you to all the contributors' hard work on this awesome tool!

riepta avatar Oct 09 '23 15:10 riepta

Hey, thanks for your comments! I'm glad to hear that you and others outside the course find the tool useful, and I (and probably the other contributors) absolutely want to ensure that we keep it designed with you in mind alongside the course's students.

To help illustrate where the motivation for this rewrite came from, students often complete their homework with the vistool up on the side using the animation for reference. I think this is mostly a problem for the later algorithms like pattern matching and sorting, but when the animation isn't entirely clear or the implementation is confusing/difficult, people unknowingly end up copying the pseudocode line-by-line without really processing what it does. It's not intentionally cheating per se, but feels like an instance where the course resources can set up students for failure, and this is something I experienced myself and is one of the most frequent complaints I hear about the course.

By English-ifying the pseudocode, I hope to still provide the same or greater level of understanding of what each step of the algorithm is, but also while requiring the student/user to consider "how can I implement this specific one-line behavior in Java/C++/some other language?" which then implicitly forces the user to think about each step and absorb what it means.

But I share your concern that making this change might actually reduce the effectiveness of the pseudocode for understanding the algorithm. So if you don't mind helping me out, can you take a look at the drafted changes I have now for some of the data structures and share with me whether you feel like it's less effective than the old pseudocode, and if so, why might that be? This isn't set in stone or anything, so suggestions are welcome! :)

luciankt avatar Oct 09 '23 16:10 luciankt

New update! We've settled on a "three option" design where users can toggle between no pseudocode, the current code-like pseudocode, and English pseudocode. I think this strikes the balance of maximum usefulness while also making it more of an intentional decision for students to toggle to the more copy-able code, and giving them the opportunity to avoid it while still having some kind of pseudocode to reference. Thanks again for your feedback, and if you have any other ideas on how to make the vistool more useful for those outside the course, we'd love to hear it.

luciankt avatar Oct 25 '23 14:10 luciankt

Complete

luciankt avatar Sep 01 '24 15:09 luciankt