Another teacher recently asked about my experiences teaching CS and for a description of the tools and language that I used. I thought I might share my response on here, in case anyone can add to the conversation.
I used Java with NetBeans for development. This was my first time through the courses (ICS3U/3C) and it was by e-Learning, so I wanted to stick with something that was fairly standard. NetBeans was really flexible and was fairly nice for building GUIs as well. I hadn’t used a development environment with such effective refactoring capabilities before, so that was a treat. JavaDoc templates were generated automatically, and documentation look up was fast and reliable.
Some other CS teachers use Eclipse, JCreator, or something else. NetBeans does have an Android development plugin, although I haven’t used it. If I were to teach the grade 12 course, I might consider focusing on Android development with the Android SDK/Studio IDE. There is a lot more to think about for app development, but I think there would be a significantly increased level of engagement. Also, those skills should be highly marketable for students if they pursue programming or software engineering as a career.
If you want to see what it look like while I was coding and developing user interfaces in NetBeans, I have a bunch of videos in a playlist on my YouTube channel.
It was helpful to have the students building GUIs right away in some respects. However, because they didn’t already understand objects when they started this, it was difficult in the later stages of the course to have them create GUI elements programmatically instead of with drag-and-drop tools. For example, one student was creating a game that required playing cards to be displayed, but he needed to create (up to) 52 UI objects to represent them. That screams arrays/lists, but he didn’t know how to instantiate those elements based on what we had already learned. I might try a slightly different approach, rather than changing IDE though.
If you have specific questions I can answer, let me know. I’ll be teaching this course again next year, so talking about this is good for me too! If you want the content/activities I developed, I’m happy to share that as well.
Later the teacher asked about whether I had used Python, and if I had thoughts about Python vs. Java. Here’s what I said:
I haven’t worked in Python, but I understand that it is fairly powerful and straightforward. I talked to the other CS teacher here and he recommends Java, and I think I do too.
Some points to consider:
- Python has very forgiving syntax; the argument is that this may allow students to focus on concepts.
- Java is strongly- and statically-typed, but Python is strongly- and dynamically-typed.
- Java has a longer history, so there are “more” resources available for support (might not matter – “enough” and “good” are more important than “more”)
- Java is used for more application types (desktop, web, Android, non-computing devices) and is available on most platforms.
- Python tends to be used server-side – it’s a scripting language.
- Python applications tend to be shorter
- Python uses indentation to describe code structure; Java uses braces.
I use Java because I’m used to it, I understand it well, and it’ll be a nice transition to mobile development for the kids.
Let me know what you decide – it’s interesting!
If I have made a mistake above, or if you have thoughts about IDEs/Java/Python/Android/etc., please add a comment and I’ll pass it along!