Recommendation for editor+console or IDE for teaching beginners
Hi everyone, I would really like some advice based on practical experience teaching beginners. Next year, I will be teaching an introductory course in programming using Python. The course is going to be taught asynchronously via distance education. I will be recording short videos that students will be able to view at their own pace. I want the student to be able to reproduce everything they see in the video on their own computer (minor cosmetic differences for tools). Students, as young as 14, will have to use their own computer, so the solution chosen has to be easily available on all major platforms (Windows, OSX, Linux). I aim to use only free ($0) software as much as possible. My own preference, when programming, is to use SublimeText (fast and pleasant to use, but not free although it can be used that way for an "extended unlimited demo) and have a DOS console open. However, the console experience is not the best for beginners and it would be different on different platforms. I am looking at having students installing at most three things initially: 1. A 3.4+ Python version; let's assume it is the one from python.org 2. An editor/IDE. 3. Pygame (This might be problematic under OSX as I understand it.) I will NOT be in a position to help students individually with their setup, other than in a very superficial way. (Aside: the students will first start by using Reeborg's World ( http://reeborg.ca/world.html, so that the initial experience will definitely be the same for all. By the time they get to use Python on their own computer, they will already know the very basics about editing, running and saving programs, although in a very different environment.) Here are the choices as I see them: 1. Use IDLE. Free, part of the standard distribution. I never used it very much myself and I keep reading about how tricky it can be to set up properly for beginners - mostly, I gathered, due to path problems on Windows. There is a proposal to make it better ( https://github.com/asweigart/idle-reimagined/wiki) but it is doubtful it will be realized soon enough (or at all) to make it worthwhile waiting for it. 2. Use PyCharm - community edition. Very powerful IDE, a bit overwhelming for beginners but has embedded console and debugger which may be useful as a teaching tool. 3. Use Komodo Edit. I know that the IDE includes a Python console, but it is not clear to me that the free version does. I used the full IDE many (5+?) years ago and liked it at the time. 4. Use Wing IDE 101 (free version). Supposedly designed to teach beginners. I tried Wing many years ago (at the same time as Komodo), including on a Mac where it ran under X11 and my experience was not very satisfactory. 5. Use Spyder. (https://code.google.com/p/spyderlib/) Very complete IDE that includes a really nice (python) help window. I did a few tests with it and really liked what I saw. However, in addition to the standard Python distribution, it requires PyQT or Pyside to be installed (I didn't try that). Alternatively, it is included with the Anaconda Python distribution (which is how I got to try it). However, I could not get Pygame working with the Anaconda Python distribution - I'm sure it is possible, but it would likely not be a simple solution for beginners learning remotely. Right now, I am thinking of using PyCharm together with the Python standard distribution. However, if you have some experience teaching Python (especially at a distance) with complete beginners using a variety of platforms (Windows + Macs especially), I would really, really like to hear your opinion. Cheers, André
Hi Andre,
I would really like some advice based on practical experience teaching beginners.
I personally would stick with Idle. There was a time, when it was problematic under MacOS because tkinter was missing there - but those days are over. As an all-platform, _already (battery-) included_ editor, Idle is simple but pretty good. There is not much you have to explain which concerns the ide. Most of the problems of beginners in Idle (and I always use idle in class, apart from reeborg) are not very idle-specific (indentation, copy and paste in console-mode, miximg tabs and spaces, saving, importing). You will have to explain the difference between programming at the prompt or in a file, but you would have to explain similar things in other ide's as well. If you want to keep it safe and simple, write programs with Idle only in files (File->New File, and run them with F5). Most technical problems arise when using the live-prompt (session-saving is useless). Some students used idle and pygame together some years ago with no problems.
1. Use IDLE. Free, part of the standard distribution. I never used it very much myself and I keep reading about how tricky it can be to set up properly for beginners - mostly, I gathered, due to path problems on Windows. There is a proposal to make it better ( https://github.com/asweigart/idle-reimagined/wiki) but it is doubtful it will be realized soon enough (or at all) to make it worthwhile waiting for it.
I haven't encountered path problems with idle recently (about since the introduction of Windows XP and python msi-installers ...) When Pygame is installed Python has got to find it, but that shouldn't be a concern of Idle. Having to install only two things (check for the python dependency of the pygame-version first!) would be my choice. Cheers, Christian
Why don't you try cloud.sagemath.com? or https://trinket.io/ They both let your students work at a distance and collaborate with you. Hope this helps. On Wed, Dec 10, 2014 at 4:47 PM, Christian Mascher <christian.mascher@gmx.de
wrote:
Hi Andre,
I would really like some advice based on practical experience teaching
beginners.
I personally would stick with Idle. There was a time, when it was problematic under MacOS because tkinter was missing there - but those days are over.
As an all-platform, _already (battery-) included_ editor, Idle is simple but pretty good. There is not much you have to explain which concerns the ide.
Most of the problems of beginners in Idle (and I always use idle in class, apart from reeborg) are not very idle-specific (indentation, copy and paste in console-mode, miximg tabs and spaces, saving, importing).
You will have to explain the difference between programming at the prompt or in a file, but you would have to explain similar things in other ide's as well.
If you want to keep it safe and simple, write programs with Idle only in files (File->New File, and run them with F5). Most technical problems arise when using the live-prompt (session-saving is useless).
Some students used idle and pygame together some years ago with no problems.
1. Use IDLE. Free, part of the standard distribution. I never used it very much myself and I keep reading about how tricky it can be to set up properly for beginners - mostly, I gathered, due to path problems on Windows. There is a proposal to make it better ( https://github.com/asweigart/idle-reimagined/wiki) but it is doubtful it will be realized soon enough (or at all) to make it worthwhile waiting for it.
I haven't encountered path problems with idle recently (about since the introduction of Windows XP and python msi-installers ...)
When Pygame is installed Python has got to find it, but that shouldn't be a concern of Idle.
Having to install only two things (check for the python dependency of the pygame-version first!) would be my choice.
Cheers,
Christian _______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig
-- Roberto
I agree that IDLE is quite usable once working properly which is pretty much never a problem with Windows distros but can be an issue when doing a from-scratch C-language compilation of Python with the Tk part added. Tk is after all a separate process in another language which Python controls or talks to, much as it talks to DB engines (SQL or no SQL). I emphasize in my courses that Python has no baked in native GUI, but that IDLE comes closest being both cross-platform and standard library. I used IDLE for years but these days use a combination of Eclipse and PyCharm. I like PyCharm quite a lot and it's what I have on my local machine. One need not use all the bells and whistles on any of these. Then my students are using either a proprietary in-browser Python IDE (training wheels) or are remote controlling an Eclipse desktop on a distant server. I do that too, cutting and pasting code back and forth between PyCharm on my local platform, and Eclipse running somewhere else. IDLE, PyCharm, Eclipse... all good. If your goal is to not have to provide a lot of technical support and to standardize on something for the sake of curriculum materials, I think all of these are strong choices. In reality, some students become very interested in their options / freedoms and will end up choosing a different tool set no matter what we start them with. That's just the reality, and we don't really want to discourage it, so the curriculum itself should probably mention the arbitrary nature of any given ecosystem (stack) and suggest further exploration. Kirby On Wed, Dec 10, 2014 at 10:14 AM, roberto <roberto03@gmail.com> wrote:
Why don't you try cloud.sagemath.com? or https://trinket.io/
They both let your students work at a distance and collaborate with you. Hope this helps.
On Wed, Dec 10, 2014 at 4:47 PM, Christian Mascher < christian.mascher@gmx.de> wrote:
Hi Andre,
I would really like some advice based on practical experience teaching
beginners.
I personally would stick with Idle. There was a time, when it was problematic under MacOS because tkinter was missing there - but those days are over.
As an all-platform, _already (battery-) included_ editor, Idle is simple but pretty good. There is not much you have to explain which concerns the ide.
Most of the problems of beginners in Idle (and I always use idle in class, apart from reeborg) are not very idle-specific (indentation, copy and paste in console-mode, miximg tabs and spaces, saving, importing).
You will have to explain the difference between programming at the prompt or in a file, but you would have to explain similar things in other ide's as well.
If you want to keep it safe and simple, write programs with Idle only in files (File->New File, and run them with F5). Most technical problems arise when using the live-prompt (session-saving is useless).
Some students used idle and pygame together some years ago with no problems.
1. Use IDLE. Free, part of the standard distribution. I never used it very much myself and I keep reading about how tricky it can be to set up properly for beginners - mostly, I gathered, due to path problems on Windows. There is a proposal to make it better ( https://github.com/asweigart/idle-reimagined/wiki) but it is doubtful it will be realized soon enough (or at all) to make it worthwhile waiting for it.
I haven't encountered path problems with idle recently (about since the introduction of Windows XP and python msi-installers ...)
When Pygame is installed Python has got to find it, but that shouldn't be a concern of Idle.
Having to install only two things (check for the python dependency of the pygame-version first!) would be my choice.
Cheers,
Christian _______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig
-- Roberto
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig
Why don't you try cloud.sagemath.com? or https://trinket.io/
Someone else replied to me off-list and suggested trinket.io. As far as I know, trinket is based on Skulpt which is an imcomplete version of Python
Hi Roberto, On Wed, Dec 10, 2014 at 2:14 PM, roberto <roberto03@gmail.com> wrote: 2. I really want to use Python 3 as much as possible; the proposed course for beginner's is intended to be a stepping stone to further study. My original post was already quite long, but I left off some important details as to my true motivation for all this. In Canada, we have a "College" system which is an alternative to going to University after completing High School. College programs will typically be 1 to 3 years long and are used for "technical training", from dental assistants to webmaster, from electrician to daycare workers, etc. The university where I work (Université Sainte-Anne, tiny university offering programs in French) offers also a few "college level" streams. Usually, students are required to have completed high school before they are admitted... but we can offer individual college-level courses on a part-time basis to students that have not yet completed high school. My end goal is to put together a one-year equivalent certificate in computer programming, offered entirely at distance. The beginner's course in Python would be used like a "qualifying" course: students that complete it satisfactorily would be allowed to take the rest of the courses in the program. In addition, if they have been successful, they will likely be more receptive to the idea that they will have to research things on their own to get the rquired tools working on their computer without someone holding their hand. Also, many student will not have a strong knowledge of English before they begin. This first course would be an additional motivation for them to pay better attention in their English classes, as I wil introduce them to the English vocabulary and resources available on the web. Many of the other coruses would be short "modules" that would not fit in a traditional semester-based teaching schedule. What I tentatively plan to cover (I've already prepared/planned for bits and pieces of some of this) includes the following ----------------- Introduction to programming using Python === html+css using a bash console Intro to git (either on github or bitbucket) === intro to javascript, jquery and qunit simple html5 games === Web development using Python (probably with flask) Advanced Python programming [probably using a combination of the Python Cookbook, Python Module of the Week as the basis, with students doing small projects.] html5 games using a javascript framework (probably phaser) === Intro to Unity3d with C# to make 2D games Intro to Unity3D with C# to make 3D games ==== Final "course": one of: 1. Using the IPython notebook, matplotlib and all that (for students that would like to study at university in STEM) 2. Major project, based on the student's interest 3. Learn a new programming language (say Scheme, C, Closure, Java, etc.) through small projects agreed upon in advance. ---------------------- [notice the absence of any math course or traditional cs courses like Algorithm 101] The Unity3D part is something that I have not really done anything with yet myself ... but it seems to me to be a good idea at this point, if only as a recruitment tool ;-) At one point I was thinking of doing something with Blender ... but realise that it was not for me... For the beginner's course using Python, I intend to have assignments for students to hand in (via email); these assignments will make use of the doctest module, and others based on the unittest module, to encourage good programming practices. To recap: 1. students start learning about programming on the web using Reeborg's World (it's about time that I get to use it myself! ;-) 2. they learn how to use a programming environment easy to set up on their own computer, using Python. Using a purely web-based set of tools (say, if trinket were to support Python 3) for the beginner's course might make the transition to the next stage difficult. Assuming they do well in the first course and are interested, then they move on to first broaden the set of "tools" they can use (bash, git, javascript, html, css) and then deepen their knowledge of programming while following "good practices" (such as using git or another similar tool of their choice, include unit testing in their projects, etc.) Some students, if they start early enough and take courses in the summer, will be able to complete all of the above by the time they finish high school. Quite often, high school students here complete most of their requirements by February of their final year, having only one or two courses left for their high school diploma during the February-June term. Having learned about programming, they would then be able to make better informed decisions as to whether or not take a "college-level" program (offered by other institutions here) to become web programmers, or game programmers, or what have you. Alternatively, they may decide to pursue a CS degree or a STEM degree, already knowing how to program in various contexts. +++++++++++++++++++++++++ So... it looks (from the replies so far) that IDLE + Python is probably the easiest way to go for the intro course, and that pygame may be a challenge to have set up properly using Python 3 on OSX. (on Windows, http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame appears to be a good resource) (Vpython and VIDLE, mentioned by Jorge Garcia, do not appear to be compatible with Python 3) (Kirby seems to also like PyCharm; as for Eclipse ... I tried it in the past and found it bloated and sluggish.) Further suggestions/comments/corrections more than welcome. André
They both let your students work at a distance and collaborate with you. Hope this helps.
On Wed, Dec 10, 2014 at 4:47 PM, Christian Mascher < christian.mascher@gmx.de> wrote:
Hi Andre,
I would really like some advice based on practical experience teaching
beginners.
I personally would stick with Idle. There was a time, when it was problematic under MacOS because tkinter was missing there - but those days are over.
As an all-platform, _already (battery-) included_ editor, Idle is simple but pretty good. There is not much you have to explain which concerns the ide.
Most of the problems of beginners in Idle (and I always use idle in class, apart from reeborg) are not very idle-specific (indentation, copy and paste in console-mode, miximg tabs and spaces, saving, importing).
You will have to explain the difference between programming at the prompt or in a file, but you would have to explain similar things in other ide's as well.
If you want to keep it safe and simple, write programs with Idle only in files (File->New File, and run them with F5). Most technical problems arise when using the live-prompt (session-saving is useless).
Some students used idle and pygame together some years ago with no problems.
1. Use IDLE. Free, part of the standard distribution. I never used it very much myself and I keep reading about how tricky it can be to set up properly for beginners - mostly, I gathered, due to path problems on Windows. There is a proposal to make it better ( https://github.com/asweigart/idle-reimagined/wiki) but it is doubtful it will be realized soon enough (or at all) to make it worthwhile waiting for it.
I haven't encountered path problems with idle recently (about since the introduction of Windows XP and python msi-installers ...)
When Pygame is installed Python has got to find it, but that shouldn't be a concern of Idle.
Having to install only two things (check for the python dependency of the pygame-version first!) would be my choice.
Cheers,
Christian _______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig
-- Roberto
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig
On Wed, Dec 10, 2014 at 11:47 AM, Christian Mascher < christian.mascher@gmx.de> wrote:
Hi Andre,
I would really like some advice based on practical experience teaching
beginners.
I personally would stick with Idle. There was a time, when it was problematic under MacOS because tkinter was missing there - but those days are over.
As an all-platform, _already (battery-) included_ editor, Idle is simple but pretty good. There is not much you have to explain which concerns the ide.
Most of the problems of beginners in Idle (and I always use idle in class, apart from reeborg) are not very idle-specific (indentation, copy and paste in console-mode, miximg tabs and spaces, saving, importing).
You will have to explain the difference between programming at the prompt or in a file, but you would have to explain similar things in other ide's as well.
If you want to keep it safe and simple, write programs with Idle only in files (File->New File, and run them with F5). Most technical problems arise when using the live-prompt (session-saving is useless).
Some students used idle and pygame together some years ago with no problems.
Thanks for the reassurance. André
1. Use IDLE. Free, part of the standard distribution. I never used it very much myself and I keep reading about how tricky it can be to set up properly for beginners - mostly, I gathered, due to path problems on Windows. There is a proposal to make it better ( https://github.com/asweigart/idle-reimagined/wiki) but it is doubtful it will be realized soon enough (or at all) to make it worthwhile waiting for it.
I haven't encountered path problems with idle recently (about since the introduction of Windows XP and python msi-installers ...)
When Pygame is installed Python has got to find it, but that shouldn't be a concern of Idle.
Having to install only two things (check for the python dependency of the pygame-version first!) would be my choice.
Cheers,
Christian
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig
Not a teacher here... but you might look @ Anaconda (http://continuum.io/downloads). Easy to download and install as a user, without requiring any kind of sysadmin privileges, on Windows, Mac and Linux. The full install may be overkill for what you need... but it comes with Spyder already as part of the package, and the installation is pretty simple across all three platforms. I don't think it has pygame as part of the base package... but if you can't get it from the anaconda repos using conda, you can still use pip to get it the 'old fashiond' way. Monte -- Shiny! Let's be bad guys. Reach me @ memilanuk (at) gmail dot com
participants (5)
-
Andre Roberge -
Christian Mascher -
Kirby Urner -
memilanuk -
roberto