I am teaching a second year programming course for adult students. It is an introduction to C++, with a chapter on Git. I'm not covering Makefiles and while I could find a bit of time to talk about build systems, the course is already pretty loaded (as any "introduction" to C++ can be).

The issue is that our school currently only supports Microsoft Visual Studio 2019, which is a behemoth and much too big for the tiny hello-world-ish stuff we need to do. It forces my adult students to go deeper into debt just to buy a new computer to run the thing.

It is also very complex and forces me to teach about managing Visual Studio's projects and files, competencies that are not really useful outside of Visual Studio.

I've been doing a lot of work with online tools (especially repl.it and onlinegdb.com), but our internet can be flaky and I would much rather have an offline tool.

Ideally, that IDE should be:

  • Simple, so it is not overloaded with features we won't need,
  • Lightweight, to work on older computers,
  • Offline, for when the internet goes into molasses-mode,
  • Portable, since students use various versions of Windows, Linux and Mac.

I am aware it is more of a wishlist and that there might not be a tool able to do all this.

What I've tried so far :

Adequate match:

  • CodeLite: Seems like a stable and up-to-date version of Code::Blocks/Dev-C++. Must install a compiler and debugger however, but it seems easy enough with GCC/GDB on Linux/Mac and Win-Builds' MinGW-w64 install on Windows. It also requires to add the executables to the $PATH environment variable on Windows.

Partial match:

  • Sublime Text: Lightweight and easy to use. Build system seems to be unique to Sublime Text however, but is not too hard to use. Nagware which require to pay for the official version.
  • Geany: Very lightweight, but not easy to use. Would require to teach Makefiles.

Bad match:

  • Code::Blocks: It is too unstable. It keeps crashing and students are confused whether their code is wrong or Code::Blocks is misbehaving again.
  • JetBrains CLion: Better than Visual Studio, but still heavy and complex to use.
  • Apache Netbeans: Current version (11.0) does not support C/C++.
  • Apple XCode: It is not portable outside of Mac.
  • Spyder3: Nice IDE, but really minded for Python.
  • Visual Studio Code: Too many complex configuration files, unique to VS Code.
  • Atom w/ gpp-compiler package: The IDE is added on top of the text editor. Error messages are difficult to read since they are on popups. Uses command-line GDB for debugging. The gpp-compiler package itself is still buggy.

Also, I tried to compile a list that already exists and is better documented at https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#C/C++

  • $\begingroup$ If a complex IDE supports more than just one language then it might be well worth the initial pain of learning it. I use Eclipse, which is also gigantic, written in Java, but supports many languages and other sorts of projects since it has a plugin architecture. Learn it once, use it always. $\endgroup$ – Buffy Apr 20 '20 at 15:19
  • $\begingroup$ Have you thought about using something like Vagrant or Docker to create a standard environment? Down-sides; It could be challenging if you've never done anything like it before,* and the instructions for installing Vagrant/Docker will be different for students running on different hardware platforms. Up-side: Once everybody's got it installed and running, then all of your students will be running in exactly the same environment. $\endgroup$ – Solomon Slow Apr 20 '20 at 17:05
  • 1
    $\begingroup$ Don't teach git and C++ at the same time. I don't care how much experience they have there brain will explode (30 years in not enough). Teach git, using one of there existing languages. Then move on to C++. $\endgroup$ – ctrl-alt-delor Apr 21 '20 at 7:04
  • 1
    $\begingroup$ As you are teaching git maybe you can help with my question, it about 2 years old, has had loads of attention, but still no satisfactory answer. It is asking how can I teach git? (I would be happy if I could just become proficient with it) cseducators.stackexchange.com/q/2897/204 $\endgroup$ – ctrl-alt-delor Apr 21 '20 at 7:08
  • 1
    $\begingroup$ I agree with @ctrl-alt-delor, but I don't have the liberty to alter the curriculum. So I do a quick dip in Git, just so the students know how to commit, branch and resolve conflicts. More a trip to the lake than the beach, but I think a lot of my students drown anyway :P $\endgroup$ – leftcursor Apr 21 '20 at 19:17

Small == Old. Modern IDE != Small.

However, would Turbo C++ or OpenWatcom work? I believe both have "free" licenses.

Caution: your students will get spoiled by how fast Turbo C++ is and then complain about every other compiler in existence.

Good luck.

  • $\begingroup$ I admit that "lightweight" is a qualitative term and can vary wildly from person to person. I think we can get relatively "lightweight" modern IDEs. @RedDragon mentioned SublimeText, and I tried Geany, two text editors with IDE plugins which are both modern and simple to use. $\endgroup$ – leftcursor May 1 '20 at 13:58

My department uses Dev-C++. It's free, simple, offline, portable, and lightweight. Windows native.

The downside is that it hasn't been maintained since 2015, and is bundled with a fairly old version of the GCC compiler suite (TDM-GCC 4.9.2.; pre-C++11, I think). The debugger's just a bit shaky; for that I find one does need to set up a project and the correct compiler switch.

Within the last month I started to float the idea of switching to Visual Studio to other faculty, but I must say I'd miss the lightweight nature of Dev-C++.

  • $\begingroup$ I think I found a compromise with CodeLite. It's lightweight, portable and easy to use. The main drawback is you need to install a compiler/debugger yourself, which is not that easy on Windows. I used MinGW-w64 using the binaries provided by Win-Builds (with a manipulation of the $PATH environment variable), but with students it could be a challenge. $\endgroup$ – leftcursor May 26 '20 at 23:19
  • $\begingroup$ @leftcursor: Yeah, that would be a non-starter with our students. $\endgroup$ – Daniel R. Collins May 27 '20 at 1:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.