I recently had the task of developing a curriculum to teach Python programming and one issue that came up was which IDE to use. There are plenty of Python IDEs to choose from, which is a blessing and a curse. With so many out there, what factors do you consider? Let's add some background information. The students would be grade 7 (UK year 8, age 12/13), beginners in text based programming with a background in block based programming having done, Scratch, Ardublockly and Kodu in previous years. To add to that, cost, as always, is an issue. To focus the discussion a little further, I was able to narrow the choices down to two main programs, PyCharm and IDLE. PyCharm by Jetbrains, and IDLE available with the Python download. I'd like to discuss these two in the context of teaching but will also discuss the online repl.it service briefly as well...
Things to consider when teaching programming. What language are you teaching, what age are you teaching, what level are the students and what setup do you have? All apart from the last question have been addressed already, so let's look at the last part, the setup. Let's assume that we are working in a classroom setting, with limited funds, but enough working computers for each student. In my ideal classroom, there would be a good strong internet connection available in the school and at the homes of the students, and if this was so, then repl.it would probably be my IDE of choice. This is because, Repl.it has a teacher function, which I won't go into right now, but you can check it out in my post about coding in the classroom using online tools. It also allows students to share their code with the teacher and each other. Getting coding assignments to and from students can be such a difficult task for a teacher, and online methods cut out most of the issues. However, in environments where online access is tricky, the benefits of this cannot be experienced. However, I wanted to include it here because the assignment deployment solution that online IDEs provide can make changing your setup to online accessibility worth it, if you have the means to make the change. Many teachers, don't have the means to make that change, however, and access is very dependent on where you are in the world and external infrastructure, so this is where I will leave the online discussion.
PyCharm is an installed fully functional IDE with pretty much all the bells and whistles that a professional platform can provide. It has Intelligent Coding Assistance, Built-in Developer Tools, Full-stack Web Development ability, Scientific Tools, Customizable and Cross-platform IDE and a Python Debugger, many of which won't be needed to teach beginner level programming. What is important at this stage, however, is that it's a good IDE, with good error handling notifications. Unlike IDLE, everything can be seen from the one GUI window, so there is less switching around. The problem I found though, is that it can be tricky to set up if you are using different libraries, such as pygame (which I wouldn't really recommend for beginner programming, but is an example). For libraries that are not automatically inbuilt, such as Turtle, there are a few hoops that need to be jumped through to get it set up, which can be problematic with a class full of beginner students. It's also quite a large software package compared to Idle, so with a bunch of slow computers, starting up can take a short while. It may not be much, but even a wait of a few seconds can be disruptive to the class environment depending on the students. The last things I would mention about PyCharm is the user interface. PyCharm is a proper professional package, much loved by many in the coding community, because it is customisable and has tools that can aid the advanced programmer.
However, these options and menu items can quite often get in the way and act as a distraction for many beginner programmers. The multiple menus, menu items and even the process to open up a project, which is required before opening up a blank file to start coding is a step further than other IDE's require. This should be taken into consideration.
IDLE is the IDE you get with your Python install. It has a very simple, basic user interface and doesn't have all the additional tools that PyCharm has. As a result, it is not the favourite of professional programmers. In fact, it's not popular at all for large scale productions. Some reasons for this are, the error handling is not that great, with some of the errors appearing as pop up notifications on the screen instead of written notifications in the output area. There is no indication of line numbers on the lines themselves. There are multiple windows that may need to be used at the same time too, the code being in one, and the output being in another, and if you rely on graphical outputs, that's another, making three. This can be a bit much, if you have small screens.
Also, there are considerably fewer options for personalisation, but I think this in particular is a good thing. The extremely simple user interface means that it is less distracting for the students. There are fewer things that can go wrong, less opportunity for the student to click the wrong option, or take the wrong path when following step by step instructions. It is also much quicker to start up and run programs.
So those were the options. Even though, I concentrated on specific packages, the main takeaway should be that when looking for software to use, consider how your students will manage it. For real beginners, I would recommend IDLE due to its simplicity in look and feel. This allows the student to concentrate on learning programming, without the complications of having to learn a software package. With IDLE being so light, there is really not much to learn, and very little to distract. However, if you have quick learning students, maybe go straight to something like PyCharm, where they can benefit from the advanced options available. What are your experiences?
Image source: http://techbloke.com/learn-to-code/