3 ms·
Many people, especially kids, will at some point encounter an online learning tool where you can just run Python in the browser. Chances are the underlying inte
by primitivesuave 9y ago
Many people, especially kids, will at some point encounter an online learning tool where you can just run Python in the browser. Chances are the underlying interpreter is Skulpt. A short list of examples:
- https://pythonroom.com https://pythonroom.com: has a free online curriculum with more helpful error messages that kids can understand and real-time analytics for teachers
- https://trinket.io https://trinket.io: handles Python, turtle graphics, and pygal charting in the browser
- https://tynker.com https://tynker.com: their Python notebook feature uses Skulpt
- http://interactivepython.org http://interactivepython.org: a popular open-source textbook that has excellent Parson's problems
- http://codeskulptor.org http://codeskulptor.org: implements some custom Skulpt libraries that I haven't seen anywhere else
- https://www.coursera.org/learn/interactive-python-1 https://www.coursera.org/learn/interactive-python-1: Coursera's interactive Python course
That's just the ones I could remember off the top of my head. I truly believe this is one of the most impactful open-source projects of all time, especially if you consider the impact is has on kids (i.e. future computer scientists) that can use an excellent teaching language like Python directly in their web browser.
- closed 9y agoI work as an engineer at https://datacamp.com https://datacamp.com, and we run the code directly on a server, but I've always thought it would be interesting to try building interactive programming exercises with Skulpt.
- peller 9y agoI've always wondered, how do you isolate/protect against people doing nefarious things in a setup like that?
- mikkom 9y agoVirtual machine is probably the most common solution.
- eah13 9y agoI'm a big fan of datacamp. You should definitely give this a try. It would be great to expand the reach of your lessons without the infrastructure overhead of every user hitting your server with their code. Hit up the skulpt dev listserve if you want some help. Or I'm at elliott@trinket.io. Plug: you could easily prototype this with Trinket embeds. Add #!/bin/python3 to the top of our Python (Skulpt) trinkets to get strict Py3 mode. Add data files via the + button (no directory support, so treat them as all in the local directory). Use the Share menu to get embed code. Paste. You've got your first interactive lesson. If your users like it, you can then decide whether and how to build skulpt in to the site.
- closed 9y agoThanks for the pointers, I'll definitely have to take another look at trinket.io! It would be cool to try some exercise submission + feedback with code highlighting all on the client side.
- sametmax 9y agoPython dev and trainer here. Skulp is terrible as a python implementations go. Error reporting is meh. Many advanced features are not supported. Brython is a much better alternative. More complete and robust. However, i advise against running a js python in general. Exposing secured and isolated jupyter notebooks is much better for learning.
- eah13 9y agoI think it's important to distinguish user groups. No solution is best for all of them. For scientists or data analysts, jupyter notebooks are a great choice since they mirror the professional and research tools they'll use. For web development, an in-browser IDE like Cloud9 would be my choice to get an arbitrary room of adults up to speed. But for middle or high school audiences, or even adult beginners, solutions like the above are far too complex. It's easy to get a certain expert blindness, but a Jupyter notebook for instance can actually be a huge problem form someone trying to understand flow of control, since you can execute code blocks in an arbitrary order into the same runtime. Tradeoffs between power and usability abound. Jupyter is a good blend. A full IDE is power. Skulpt prioritizes usability. Some group of users fits into each of these buckets. So (surprise, surprise!) The meanings of 'best' and 'terrible' are highly dependent upon specific user needs.
- sametmax 9y ago> Jupyter notebook for instance can actually be a huge problem form someone trying to understand flow of control, since you can execute code blocks in an arbitrary order into the same runtime. True. I usually don't let them know they can create several cells first. They use only one for a good part of the show. Skulpt will lead to strange debugging sessions, and you really, really want them to learn how to debug autonomously asap. So having the same stacktrace in every env is very important.
- xerosis 9y agoHigh School CS teacher here. Repl.it has always done me a treat, I've have had one or two odd bugs but 99% fine and they're adding nice features aimed at education too.
- vram22 9y agoYes, that kind of tool - that lets you run Python in a browser - can be useful. I had discovered, tried out and blogged about some of them earlier (also trinket.io, which you mention): Codingbat, Progress Graphs and Michael Jordan: (for Java and Python - when I tried it) https://jugad2.blogspot.in/2013/02/codingbat-progress-graphs-and-michael.html https://jugad2.blogspot.in/2013/02/codingbat-progress-graphs... Online Python Tutor looks quite interesting: (for Python) https://jugad2.blogspot.in/2013/03/online-python-tutor-looks-quite.html https://jugad2.blogspot.in/2013/03/online-python-tutor-looks... PythonMonk - learn Python in the browser: (for Python) https://jugad2.blogspot.in/2013/04/pythonmonk-learn-python-in-browser.html https://jugad2.blogspot.in/2013/04/pythonmonk-learn-python-i... glot.io, an open source pastebin with runnable snippets: (for multiple languages) https://jugad2.blogspot.in/2017/04/glotio-open-source-pastebin-with.html https://jugad2.blogspot.in/2017/04/glotio-open-source-pasteb... Some of them use emscripten, IIRC. Edit: These tools are good for beginners to learn the basics of the language. For more complete learning, I still think the traditional method of using the command line tools such as the interpreter and a text editor, and an IDE, are useful and recommended. Interaction with the real OS is a part of the learning of any (at least industrial) programming language (maybe there are some specialized exceptions) - i.e. things such as files, databases, directories, users, processes, peripherals, etc. - and not much of that can be done in the browser-only environment that these tools have. In fact, since I am a trainer too, I sometimes come across some of my students who do not know the basics of dealing with an operating system, even as a user. E.g. some of them can only use the PC via the GUI (e.g. in Windows) and are not familiar with the command line and its commands, or even with concepts such as drives, pathnames, filenames, absolute vs. relative paths, how to reference a file in dir B from dir A, etc. In such cases I always show them some of the basics of that stuff and give them references for further learning. And I tell them that if they do not learn that stuff (or look down on it, as a few of them tend to do), it is like knowing how to drive a car (programming) but not knowing how to walk from your house to the car and from the car to the shop - in other words, you are not fully capable to even use a car due to that :)