
CS50 IDE – Online IDE for Students and Teachers - decentralizer
https://ide.cs50.io/
======
userbinator
I've been a TA and taught introductory CS courses, and IMHO trying to "add
extra tech" tends to get in the way of learning more than anything else, as
well as perpetuating bad habits when programming. I don't think giving
beginners an "IDE addiction" is a good way to start them off, and believe that
intro CS should begin _away_ from a computer: designing with pencil and paper
(or a whiteboard) and "thinking before doing" gives students a chance to
exercise their brains instead of relying on a stupid "mechanical brain" to
hand-hold them.

Then again, the "old school" (literally) way is not as "fashionable" as "look
at all the cool tech we're using in education".

~~~
bsder
> I've been a TA and taught introductory CS courses, and IMHO trying to "add
> extra tech" tends to get in the way of learning more than anything else, as
> well as perpetuating bad habits when programming.

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. :)

~~~
userbinator
_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._

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.

~~~
bsder
> 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

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.

------
aiansiti
Upvote if you too like ripping phone books in half!

------
andkenneth
Cool little simplified IDE. Great for teaching first concepts which is what
CS50 is. It would be cool if we could have an instance in other cloud regions,
otherwise the terminal is a bit laggy for my liking in NZ.

~~~
kzidane
It's likely that we'll support other regions in the future.

~~~
wyclif
It's currently down for me on the latest Chrome.

~~~
kzidane
Could you please report the issue to sysadmins@cs50.harvard.edu? Thanks!

------
delinka
> This application will be able to read your private email addresses.

Why do you need this?

~~~
kzidane
For communication purposes.

~~~
delinka
Why do you need to communicate with me before I even get a chance to demo the
app?

~~~
kzidane
For communication at anytime in general, not necessarily before using the app.
If you're uncomfortable with us keeping a record of your email at any point in
the future and would like us to delete your account, please feel free to drop
sysadmins@cs50.harvard.edu an email from the same email that was linked to
your GitHub account at the time of signing in to the CS50 IDE and we'll be
more than happy to help you!

------
raphaelrk
This IDE was one of my favorite parts of the class.

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.

------
isuckatcoding
Would be nice to try before/without signing in with Github

~~~
kzidane
Thanks for the feedback! The main reason why we use GitHub sign in is that all
CS50 students need a GitHub account to submit their work and use other CS50
tools anyway and that makes it easier for them to get started with the CS50
IDE. We might support other ways to sign in in the future though.

~~~
userbinator
_is that all CS50 students need a GitHub account to submit their work_

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.)

~~~
joshuamorton
GitHub is owned by Microsoft.

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.

~~~
kzidane
Indeed. No students are forced to associate any real information with their
GitHub account.

------
nickysielicki
As much as I would hate the idea as a student, online IDEs that fully record
the progression of a CS assignment could go a very long way in preventing
cheating in CS coursework. That's a decent startup idea.

~~~
raegis
This already exists. The Moodle VPL plugin I use has transparent version
control.

~~~
acbart
Man, VPL is the weirdest combination of old and new. It works, though, I'll
give it credit for that.

------
randartie
This is mostly powered by amazon cloud9, which is really cool in itself.
[https://aws.amazon.com/cloud9/](https://aws.amazon.com/cloud9/)

~~~
cyberferret
We use Cloud9 here quite a lot, with great results. I was going to ask what
was the differentiator between this and Cloud9, but judging from your post, I
am assuming it is a 'cut down' version of C9 with a lot of the bells and
whistles removed?

So I assume that it spins up a micro EC2 instance each time someone wants to
use CS50?

~~~
kzidane
> I am assuming it is a 'cut down' version of C9 with a lot of the bells and
> whistles removed?

In a way, yes. The CS50 IDE mainly targets students or teachers who are taking
or teaching CS50 ([https://cs50.harvard.edu/](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.

------
jingalings
Documentation link broken

~~~
sb8244
Mine works on the second refresh. Can't get it to break again. A bit
strange...

------
markus_zhang
Somehow I cannot access the website since a few days ago. It just spins and
says "Preparing your environment" but never loads the IDE.

~~~
kzidane
Could you please report the issue to sysadmins@cs50.harvard.edu? Thanks!

------
delinka
Doesn't render anything in Safari after I authorize it "to read [my] private
email addresses."

~~~
kzidane
Unfortunately this is a known issue on Safari because it doesn't support
certain headers that AWS uses. We're working with the Cloud9 team to resolve
this asap though.

~~~
freehunter
Please please please get the Cloud9 dev team to resolve this! There has been
an issue open for over _3.5 years_ now [1] on the pre-AWS C9 and 1.5 years on
the AWS support forums [2] and the main reaction from the C9 devs seems to
alternate between "this is Apple's fault" and "wait what browser does iOS use
again?".

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...](https://community.c9.io/t/mobile-support-phone-tablet-ipad-pro-
etc/925)

[2]
[https://forums.aws.amazon.com/thread.jspa?threadID=270292](https://forums.aws.amazon.com/thread.jspa?threadID=270292)

------
houzertuch
Is this out of UC Davis? There was a fellow working on something like this
over there a few years ago

------
raegis
Is the code open? Can I put this on my own server?

~~~
kzidane
An older version of version of the Cloud9 core SDK is open source at
[https://github.com/c9/core](https://github.com/c9/core). Instructions for
downloading an older offline version of the CS50 IDE are available at
[https://cs50.readthedocs.io/ide/offline](https://cs50.readthedocs.io/ide/offline).
Unfortunately the new versions are not open source at the time of this
writing.

