Command-line Java in AP CS A

Context: Over the past school year I spent a significant portion of my time preparing to teach AP CS A next year. From choosing textbooks to writing the College Board syllabus, I essentially started from scratch in designing my course. I'm pleased with all aspects of it as it currently stands, but there is one nagging element: the programming environment.

All students taking AP CS A next year have experience using Cloud9 because that's what we used for C/Python/HTML/CSS this year in AP CSP. Only in the last couple weeks did I discover how easy it is to install the JDK in a Cloud9 workspace and write, compile, and execute programs in Java from the command line. (I had read somewhere a while ago that Java and Cloud9 didn't play nicely.) I had been BlueJ all the way until that point, and I do still very much like BlueJ. However, not having taught the class before, only designed it, here's my (hopefully specific enough) question:

Will students lose anything in their understanding of and proficiency with Java, especially in terms of the AP Exam, if the class only uses a command-line environment for program compilation and execution?

There are many pros/cons to one IDE over another -- a topic which I think is too broad for this community. I just want to make sure, from those who have experience with this course, if there's something that the command-line environment lacks for students that an IDE like BlueJ doesn't lack. I don't want to end up doing students a disservice with respect to the objectives of the course based on this decision.

Edit: Cloud9 is a cloud-based IDE, which makes it ideal for my 1:1 Chromebook environment (however, I do have access to a PC lab for additional software, so that is not a restricting factor for me). As they define it, "Cloud9 combines a powerful online code editor with a full Ubuntu workspace in the cloud." You essentially get a text editor and a terminal for compiling and running programs. I've found that anything I can do via a Linux command line, I can do in Cloud9. It has a number of additional features that make it great for classroom use. I originally chose it because it's the environment used for the CS50 IDE. See more here.

• My students learn both a command line environment (javac/java) and they use an IDE (usually drJava although some migrate to NetBeans, IntelliJ, or Eclipse). I don't know what you "lose" using the command line interface. – ncmathsadist May 25 '17 at 14:23
• When I was in HS, we used IDEs. One teacher used NetBeans and I believe the other used Eclipse. Although students might have some trouble dealing with CLI environments when they eventually continue learning programming in college, it does remove a lot of hassle and allow students to focus on programming, not setting up the environment (can be a headache especially if you're using Windows). – xuq01 May 25 '17 at 19:18

Similar to @ncmathsadist, I use both command-line environments and IDEs, and I have only found them enhancing each other. We do most of our work in IDEs, but a few assignments are done in CLIs every year to ensure that students slowly gain some familiarity with those environments.

Reasons for IDEs:

1. Convenience
2. Easy integration with GitHub
3. Error highlighting (though I have some issues with this)
4. Ease with packages and project integration

Reasons for CLIs:

1. There are still plenty of important computing platforms (including both iOS and Windows!) that ultimately reduce down to CLIs.
2. Good luck explaining the string[] args in public static void main(String[] args) if students don't have any experience in CLIs.
3. Even a little POSIX familiarity goes a long way.
• Oh. wow CLIs number 2 is very interesting. I'll remember that for when I need to explain it. Thanks – ItamarG3 May 26 '17 at 11:09

With respect to APCS-A there won't be a difference.

Personally, I'm not overly fond of IDEs or one trick pony environments so I've encouraged our students to use an editor. I'm an Emacs wonk but the kids also use Vim, Sublime, DrJava (which is a lightweight IDE) and more.

In APCS-A they won't be getting to HUGE programs and to be honest, in my experience, an IDE like Eclipse provides too much and is too cumbersome for APCS_A.

I obviously don't know much about your specific situation (you, your kids, etc) but my general recommendation for APCS-A would be:

Java's core, from my experience, is writing large (or many, or both ;)) classes and files (whilst preserving SOLID principles) and then running a rather complex program, composed of those classes.