
As I wrote before I think that the CoreWars 8086 program is pretty neat and I also think that it has the potential as a valuable teaching tool in my courses. By reimagining RedCode as real assembly for the 8086 processor, the developers take the CoreWar concept and make it more real -- more legitimate. For engineering students, I think that that is really, really important. While I haven't figured out all the ways that a program can be killed in this game, the idea that a program will "die" if it attempts to execute an illegal operation (opcode) is compelling.
What do the problems look like? Have a look at this StackOverflow discussion.
Now, that said, I'm looking to develop and run CoreWars 8086 differently than what the original developers intended. First, I don't want to use the entire 8086 instruction set. That's just too much for a 2nd year course that doesn't focus on the Intel architecture. Instead, my initial plan is to strip down the allowable opcodes to between ten and fifteen -- mostly branches, jumps, pushes, pops, additions and subtractions.
Also, I'd like to deploy it two ways:
- students compile it themselves using IntelliJ, and
- students encounter the compiled version when they SSH into a department machine

Here are the steps to getting started on IntelliJ (macOS, JDK 27)
- Download the official Release 6.0.0 (don't just synch the GitHub repo)
- Copy the release's "li" subfolder into src in a new JDK27 project in IntelliJ
- Get four JAR files for the dependencies
- Guava: https://mvnrepository.com/artifact/com.google.guava/guava/33.7.2-jre (choose the bundle... it's a jar)
- Tongfei console graphics: https://mvnrepository.com/artifact/me.tongfei/progressbar/0.10.2 (get the jar)
- Common Maths 3: https://mvnrepository.com/artifact/org.apache.commons/commons-math3/3.6.1 (get the jar)
- Google Options: https://mvnrepository.com/artifact/com.github.pcj/google-options/1.0.0 (get the jar)
- Use File -> Project Structure -> + -> Java to import each of these JAR files.
- Create the survivors and a zombies folders in parallel to src in the IntelliJ project.
- Move the six survivors files from the bundle subfolder to the survivors folder.
That's it. You should now be able to run the main method in the CoreWarsEngine.java file.

James Andrew Smith is a Professional Engineer and Associate Professor in the Electrical Engineering and Computer Science Department of York University’s Lassonde School, with degrees in Electrical and Mechanical Engineering from the University of Alberta and McGill University. Previously a program director in biomedical engineering, his research background spans robotics, locomotion, human birth, music and engineering education. While on sabbatical in 2018-19 with his wife and kids he lived in Strasbourg, France and he taught at the INSA Strasbourg and Hochschule Karlsruhe and wrote about his personal and professional perspectives. James is a proponent of using social media to advocate for justice, equity, diversity and inclusion as well as evidence-based applications of research in the public sphere. You can find him on Twitter. You can find him on BlueSky. Originally from Québec City, he now lives in Toronto, Canada.
