Barring an unforeseen issue, we will enabling Linux on the chromebooks of students in AP Computer Science A and Software Engineering. APCSA students will use BlueJ and Software Engineering students will use VS Code. The rest of this post is an updated version of the original post which reflects that Chrome OS 81 and later installs Debian 10 (Buster), which resolves many of the issues previously identified.
Given the uncertainty of the structure of high school this fall, I’ve been exploring various options my students in AP Computer Science A if they are learning outside of the classroom without access to our desktops. In the classroom, APCSA students use BlueJ and GitHub throughout the year and leverage Swing and third-party frameworks (i.e., media computation). All students have chromebooks and our district works with families if they don’t have wifi at home. During eLearning and Remote Learning during this past spring semester, we used repl.it as our programming environment. This sufficed given the programming activities and labs at that point in the semester, but it wasn’t ideal. It remains an option for the fall, and I’ll expand upon it later. The options that I explored may not be a good fit for your students, but I hope others find this information helpful.
Linux and Java
- My chromebook:
- Acer Chromebook is x86_64 architecture
- Version 84.0.4147.127 (Official Build) (64-bit)
- enable Linux (Beta) via Chromebook Settings app
- specify username
- Disk size: 7.9 GB (can change later)
- install OpenJDK and JFX
sudo apt update
sudo apt upgrade
sudo apt-get install openjdk-11-jdk
sudo apt-get install libopenjfx-java
sudo apt-get install openjfx
Most of my Software Engineering students use VS Code. I was able to get it running on our chromebooks (Acer Chromebook with x86_64 architecture).
- enable Linux via Chromebook Settings app
- download VS Code
- in the Chrome OS Files app, drag VS Code from the Downloads folder to the “Linux Files” folder.
- Install VS Code from the Linux VM by running:
sudo apt install ./code_1.48.1-1597857616.deb
- VS Code will now be available from the App Launcher
- install Java Extension Pack in VS Code
- configure GitHub
- install GitHub Pull Request and Issues VS Code extension
- set user name and email address from terminal
git config --global user.name “<name>"
git config --global user.email <email>
- resolve issues authenticating
sudo apt install gnome-keyring
- specify a password for the keychain
- clone a repository
- With BlueJ, jar files are automatically included in a project if they reside in a “+libs” folder. VS Code has a similar feature if the jar files are in a “lib” folder.
- With BlueJ, one can directly run any static method in any class. VS Code expects a standard main method to be defined.
- initial authorization of VS Code to use GitHub fails
- second authorization of VS Code to use GitHub works if you copy and paste the authentication URL back into VS Code
- GitHub accessible
- more sophisticated an IDE than desired for APCSA students
- requires enabling Linux on chromebook
APCSA students have always used BlueJ as their IDE. It was a good balance of features and simplicity as it is designed for educational settings.
- download BlueJ
- install BlueJ
sudo dpkg -i BlueJ-linux-422.deb
- BlueJ will now be available from the App Launcher
- nonresponsive on first launch
- killed, relaunched, worked
- IDE designed for education
- GitHub support (integration via Team feature expects a one-to-one mapping between BlueJ projects and repositories, which is different than our model, but doable)
- requires enabling Linux on chromebook
Students who have taken Computer Programming 1 and 2 before APCSA are familiar with repl.it as it is used extensively in those classes. As mentioned above, APCSA students used repl.it last spring during Remote Learning. However, I wanted a better experience if we use repl.it again this fall.
The GitHub and repl.it integration works best when the repository contains a single project. Historically, we have created a repository for each unit and that repository contains multiple practice programming projects and a summative lab. Forcing our repository model into repl.it requires some additional configuration.
- GitHub Classroom now supports online IDEs (e.g., repl.it)
- however, Classroom doesn’t support Java Swing at the moment
- so, create the .replit file explicitly and add to the repo
- still select repl.it as the online IDE when creating the Classroom assignment but don’t specify a language or a run command
- example .replit file
language = "java_swing"
run = "javac -classpath ./TurtleDemo:./TurtleDemo/+libs/* ./TurtleDemo/TurtleDemo.java; java -classpath ./TurtleDemo:./TurtleDemo/+libs/* TurtleDemo"
# specify additional run commands for each project but have them commented out
# run = "javac -classpath ./ClassNotes ./ClassNotes/SyntaxErrors.java; java -classpath ./ClassNotes SyntaxErrors"
# run = "javac -classpath ./TurtleLab:./TurtleLab/+libs/* ./TurtleLab/TurtleLab.java; java -classpath ./TurtleLab:./TurtleLab/+libs/* TurtleLab"
- GitHub support
- students have to edit .replit file when switching between activities
- no debugger
While exploring these options, I realized that there is an opportunity here even if students are in class with our desktops. While the programming activities and labs are designed so that everyone can complete them during class, some students, for a variety of reasons, need time outside of class. Enabling one or more of these options would provide all students the flexibility to program on their chromebook instead of relying on a Windows/macOS/Linux computer at home or working in the classroom before school.