Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
CS50 IDE – Online IDE for Students and Teachers (cs50.io)
80 points by eniz on Aug 3, 2019 | hide | past | favorite | 46 comments


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


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


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.


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


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

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

https://news.ycombinator.com/item?id=18309327


I started out writing code with an IDE (Eclipse at the time I believe) and I don’t think it’s a replacement for thinking about your code at all.

The only thing it helps you with is not having to think about mindless documentation seaching, like what functions can I call on ‘String’.


I don't think a whiteboard contradicts with an IDE. The students can always design the programs on paper (I do this) step by step, including the notes, and then write the programs in one run without bug.


this is an interesting one. i've definitely heard and entertained serious arguments that a CS education shouldn't even involve touching computers period for the first n years. it's certainly not something i dismiss out of hand.

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.


I agree. I did cs50 and also rails tutorial when I learnt to code. At the time rails tutorial used a normal text editor but it seems learning to set up a proper dev env was too much for many and now it uses some cloud ide. This is a step backwards. Setting up your system correctly is a critical pro skill. It's the first thing I learn when diving into a new language.


Upvote if you too like ripping phone books in half!


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.


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


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


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


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

Why do you need this?


For communication purposes.


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


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!


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.


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


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.


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


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.


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


Yes, also it will be good to have registration with e-mail addresses.


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.


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


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


How would that address people working on their local machine and then pasting in the working solution?

I know I personally wouldn’t want to work with a crippled online editor when I have a perfectly good IDE on my desktop.


This is mostly powered by amazon cloud9, which is really cool in itself. https://aws.amazon.com/cloud9/


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?


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


Documentation link broken


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


Strange that I had the same problem too, but refreshing the page loaded it fine and it doesn't happen anymore.


If you're seeing any issues, could you please report to sysadmins@cs50.harvard.edu?


Works fine for me?


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


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


Same. I'm guessing it's getting the HN hug of death.


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


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.


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

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


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


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


An older version of version of the Cloud9 core SDK is open source at 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. Unfortunately the new versions are not open source at the time of this writing.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: