CS50 IDE – Online IDE for Students and Teachers
ide.cs50.io
ide.cs50.io
Then again, the "old school" (literally) way is not as "fashionable" as "look at all the cool tech we're using in education".
I don't have a good suggestion for intro classes. Basically, everything has downsides. Some people don't want to interact with a computer; some people want to do mega-cool things on the computer; some people don't understand what is going on and will be confused by any extraneous steps. Anything you do is going to consume time and displease somebody.
I can tell you that for sophomore and up CS classes in college, use real stuff. It's a pain to set up and maintain (although it might be easier nowadays), but the students will thank you for it afterward. I made my students use Eclipse and Subversion at the time (I would probably use VSCode and Mercurial nowadays) and had a continuous integration server running every time I gave an assignment. Students could use an IDE or editor other than Eclipse, but I warned them that I might not be able to help them about IDE specific things. Subversion was they way that they could "submit the code" so the continuous integration server would test it.
Even students who gave negative feedback about aspects of the class gave positive feedback about using the "real" tools and not stupid submission systems like Blackboard or its ilk. All of the students noted that they did much better interviewing for jobs than students who didn't have experience with the real tools.
Although, it was funny getting shocked responses from students who interviewed with employers that didn't use source control. Brainwash them early for best results. :)
I had a similar policy, although perhaps directly opposed: I supported only vi(m) or Notepad use, but as long as the source was plaintext (either CRLF or LF line endings, but not a mix...), any editor was allowed. Also, they could use MSVC or other C compilers, but the assignments must work on the course servers with GCC (which students could SSH into and work from, as well as where they handed in.) IMHO starting with a "heavy" IDE like Eclipse or VS just furthers the notion that useful software must necessarily be big and complex, or that such software is obligatory to development; not really a good thing to instill in beginners if we want them to be mindful of efficiency in the future.
The problem with starting with Notepad is that students then don't get the idea that the 1) editor can help you and 2) the editor is programmable.
And, sorry, vi(m) (or emacs) is simply a non-starter. We live in a GUI world and fighting against that is a disservice to students. I'm not teaching a class to promulgate a religion; I'm teaching to benefit the students and the VAST majority of them will land in Visual Studio, for better or worse. The remaining minority will land in Android Studio/IntelliJ or Xcode.
> not really a good thing to instill in beginners if we want them to be mindful of efficiency in the future.
Sorry, efficiency just isn't on my teaching agenda, like, ever. Even if students wind up using algorithms that use terrible O(n^2) (or worse) behavior, I'm just happy to have correct code.
And, please, Javascript is the lingua franca of the web. Talking about efficiency at that point is like trying to close the barn door after the horses have escaped and died of old age, and the barn has burned down 10 years ago.
In fact, rich schools are trending away from computers and digital media towards analog ones.
https://www.nytimes.com/2018/10/26/style/digital-divide-scre...
personally I was turned off by programming as a kid, due in part to what I perceived to be a suffusion of hoops to jump through due to brittle, ugly, and unexplorable interfaces. in adulthood i was re-exposed to an improved tooling situation, and now i'm a professional programmer, actively working on (debatably yet better) tooling which at least a few other people seem to appreciate.
my current position is that different people want different things out of programming and computing in general, and that both of those are sufficiently abstract to accommodate different approaches. there is for sure a continuing need for people who are willing and able to run software in their head/whiteboard, but I also feel there are many others who could be making meaningful contributions but are turned off by the textural and tactile quality of 'computing as applied mathematics' which no longer encompasses the breath of the discipline.
The only thing it helps you with is not having to think about mindless documentation seaching, like what functions can I call on ‘String’.
Why do you need this?
You open it in a tab and immediately have an ubuntu instance + file system + terminal + text editor running. It has an excellent GUI, it's fast, if you mess up horribly you can just close your tab and restart the instance, and it's a standard environment for all the students which makes teaching assistants' jobs easier. It's so convenient I've used it instead of my own computer at times.
For more context, the class almost immediately dives into C and later gets into web programming, and being able to open up a tab, create `hello.c`, `CTRL-s`, `make hello`, `./hello`, or quickly run a publically-facing webserver is a great combo of convenient, simple, and realistic. The class used to use a VM which was much more of a hassle to set up, a lot slower, and overall not as nice of an experience. When being taken by 800 students a year at Harvard and hundreds of thousands a year online, that change alone has probably introduced a lot of people to programming.
Have you considered the privacy and ethical implications of the obligatory use of a third-party service (with its own policies on privacy and PII) for a course?
I know GitHub may be seen by most in a better light, but to me this is as treacherous as obligatory use of Google or Facebook services for courses.
(I've worked in the CS education sector, but where students submitted work --- and worked on --- the institution's own servers.)
What pii is involved in this? There's an email address that need not apparently be your normal address. A throwaway GitHub works fine, does it not?
Many, possibly at this point most, institutions use tools like canvas, turnitin, etc. Not to mention Google docs/GAFE, or that many schools have official email provided by either google or Microsoft.
I know I personally wouldn’t want to work with a crippled online editor when I have a perfectly good IDE on my desktop.
So I assume that it spins up a micro EC2 instance each time someone wants to use CS50?
In a way, yes. The CS50 IDE mainly targets students or teachers who are taking or teaching CS50 (https://cs50.harvard.edu/) or similar introductory courses. The UI is simplified in a try to be more accessible to users with little or no prior CS or programming experience. It also comes preloaded with a bunch of tools and libraries that are used in these courses so that users don't have to deal with the hassle of installing and configuring them and instead focus more on the course actually tries to teach.
> So I assume that it spins up a micro EC2 instance each time someone wants to use CS50?
It's actually backed by containers rather.
Very frustrating that this is a web app and they can't make it work in one of the most-used browsers of all time. iOS13 even uses the full desktop Safari engine and it still won't load.
[1] https://community.c9.io/t/mobile-support-phone-tablet-ipad-p...
[2] https://forums.aws.amazon.com/thread.jspa?threadID=270292