4
$\begingroup$

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++

$\endgroup$
14
  • 1
    $\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$ Apr 20 '20 at 17:05
  • 2
    $\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$ 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$ 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
4
$\begingroup$

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

Over the years the maintainer has swapped hands a number of times, it's occasionally gone a number of years without updates, and the size of the install has increased. But I like it quite a bit. As of this edit it got a new maintainer and update to v.6 a few months ago (November 2020):

Mirrors for the v.6 version that avoid the current maintainer's request for a lot of personal data can be found here and here.

$\endgroup$
4
  • $\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$ May 27 '20 at 1:19
  • $\begingroup$ @DanielRCollins : The new TDM-GCC is much easier to install on Windows: jmeubank.github.io/tdm-gcc DevC++ also got an important update, so I will be checking it out. Especially since I'm having a ton of issues with CodeLite. $\endgroup$
    – leftcursor
    Feb 8 at 18:27
  • $\begingroup$ @leftcursor: Thanks for drawing my attention back to this answer. I also discovered the Dev-C++ update at the end of December, and I've been very happy with it (suggested we switch in our school labs to that). Not sure if it's approved to update an answer like this here, but seems important enough I'll do that now. $\endgroup$ Feb 8 at 19:53
2
$\begingroup$

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.

$\endgroup$
1
  • $\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

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.