CS50 is Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, a one-semester amalgam of courses generally known as CS1 and CS2.

As of 2014, CS50 was Harvard College's largest course, with 825 students, and edX's largest MOOC, with 366,231 registrants. In 2015, the course will also be offered at Yale University.

Anyone may take CS50, even if not a student at Harvard. Compare options. The course is also available as OpenCourseWare via cs50.tv, iTunes U, Roku, and YouTube.

Here is CS50's first lecture, shot at 4K in anamorphic 2.39:1 widescreen in Harvard's Sanders Theatre. And here is CS50 Live, CS50's biweekly episodic content produced live in Harvard's Hauser Studio.

Connect with CS50 via Facebook, Reddit, or Twitter.

We are just some of of CS50's 100 staff members:

We'll be here today (Wednesday, 18 February 2015) until 7pm ET (aka 4pm PT, aka 12am GMT, aka 5:30am IST).

Ask us anything!

Proof.

To post a question (i.e., comment), log in or create a new (reddit.com) account at ssl.reddit.com/login, then return here.

Update: Thank you, all, for so many questions! (We do hope you'll forgive if we weren't able to field them all!) We had a great time!

Comments: 708 • Responses: 32  • Date: 

NonBannedAccount14 karma

First, I want to say thank you. CS50 literally changed my life. I'm 3 years out of high-school, and after taking cs50, I'm meeting with a college counselor to enroll tomorrow as a computer science major. Thank you all. Now for my question.

  1. What do all of you TFs plan to do after you graduate? Go on to masters/PhD, or where do you want to work?

  2. Any advice to an incoming freshman concerning computer science and what you wish you'd have known?

Thank you again!

davidjmalan5 karma

So glad to hear, /u/NonBannedAccount! Thanks for the kind note.

  1. I'll defer to the team as to their own plans, but, personally, I worked for three years after college (teaching high school math, working for a wireless startup, and teaching part-time at Tufts University), after which I returned for a PhD program.
  2. I'd try to take some courses quite outside of CS to see what other areas pique your interest too! Among my own favorites (for which I didn't leave nearly enough time!) were Anthropology 1010: The Fundamentals of Archaeological Methods & Reasoning, Dramatic Arts 101: Introduction to Theatre, Latin Aa: Beginning Latin, and Physics 15a: Introductory Mechanics and Relativity. And take a course on operating systems. :)

TsukishirOSan4 karma

Did Dramatic Arts 101 helped you with your way you talk and move during your lectures?

davidjmalan5 karma

:) Probably not. It was more of a survey class on all aspects of theatre. I was in the drama club in high school for a bit, though, so maybe that helped!

NonBannedAccount2 karma

Thank you for the response. I am actually a huge drama/physics nerd, but it's not surprising you took drama seeing as how well you handle speaking to large groups. I'll take the advice to heart. :)

davidjmalan2 karma

Thanks for the kind words!

selahsinger13 karma

I'm 45 and diving deeper into computer programming. Do you know of any inspiring stories about successful programmers who started later in life?

davidjmalan3 karma

Indeed. Between Harvard Extension School and edX, both of whose student bodies are quite diverse in age, we've certainly met quite a few students who've pivoted in life. If you're the Facebook type, you might want to pose the same question at facebook.com/groups/cs50 to solicit some first-hand stories from students present and past. We've also met some amazing folks through LaunchCode in St. Louis. See photos.cs50.net/CS50-STL for a glimpse of our recent Hackathon there and see youtu.be/8OFn-cPwsGY for some stories.

I definitely wouldn't shy away for reasons of age. If you find that you take to the material, the marginal returns on just a few programming courses are fairly high. If you Google around for, e.g., coding bootcamps you can also find full-time training opportunities, though those tend to be pricey.

Consider, too, that technology is constantly evolving, and some of today's most popular languages and frameworks didn't even exist a few years ago, so, by that measure, you're necessarily far behind! Certain fundamentals transcend languages and frameworks, though, so a bit of formal training (e.g., one or more courses) can certainly go a long way!

Edit: allow me to link to this thread as well!

DudeWhatsMyUsername11 karma

Vim or Emacs?

davidjmalan8 karma

Vim for me. 'Tis what we were taught when I took CS50 myself in 1996!

chubs444 karma

Can you guys recommend any good Vim tutorials?

davidjmalan8 karma

You might want to take a peek at two of CS50's seminars!

rekonz8 karma

Hi,

I just wanted to use this opportunity to thank you guys. I took first edition of CS50x (what was it, 2 years ago?) and it was a MAJOR breakthrough in my life.

Back then I was unemployed and with a worthless diploma in my hand. Now, not only did you give me basic knowledge (I mean I would definitely not call it 'basic' back then...) but also motivation. Lots of it actually. You made me want to pursue this field, to experiment, to learn new things, to try, to fail, to try again and eventually to succeed.

Since then I took many other MOOCS, landed a first job in IT, obtained postgraduate diploma from renowned university (at least in my country), changed my job for a better paid one, obtained international certification, got promoted...

Hard to believe it's only been 2 years. Hard to believe it all started with a single click: 'enrol'.

Thanks again guys - you are life-changers. Keep up a good work!

davidjmalan3 karma

Thanks for the kind post. So glad to hear!

If you might like to elaborate on your background, I imagine folks in this thread might love to hear more!

Besztia7 karma

Hey! What is the coolest cs50's final project that you have seen?

Thanks! :)

davidjmalan12 karma

Officially, we love them all equally. :)

justcallmejose6 karma

Hi guys! I'm a beginner in the world of programming and computer science but what i have learned so far from you (from cs50x) is making me love programming ever more!

A question: What tip would you give to someone who is beginning but wants to be a professional programmer in the future?

davidjmalan3 karma

I'd echo Rob's suggestions, particularly emphasizing teaching the material to someone else, whether by teaching a class, tutoring, or fielding questions via stackoverflow.com or the like.

Also helpful is to tackle some non-trivial programming project of your own that you're truly passionate about. It's quite gratifying and empowering (if time-consuming!) to understand an entire project, inside and out! And tackling something from scratch forces you to make all the hard design decisions! That way, too, you're more likely to have a mental model (and possible solutions in mind) when you encounter a new but similar problem!

dafqnumb6 karma

Hi /u/davidjmalan, /u/rob-cs50, /u/zamyla-cs50, /u/pumpkin50 & CS50. Thanks for doing this AMA.

  1. Does professional certifications (CCNA/RHCE/CompTIA etc..) while being a CS undergrad makes sense?

  2. Should we concentrate on a specific technology or make ourselves flexible?

  3. How can we prepare for competitive programming?

gordonv2 karma

I am very interested in these questions. I have 3 CompTIA certs.

Do Comptia, Cisco, and other popular certs actually matter in the field of programming?

Also, I see businesses that hire people with a Bachelors of Anything from Anywhere into a programming position. Would a cheapo Bachelors from a Community College get me farther then a CS50 Certificate?

(Note: I know a guy who has a Bachelors of Art in Marketing and Graphic Design who works as a front end developer for a big company. He makes $82k a year but had to teach himself the computer science parts of the job. Don't get me wrong, he is good. My point is the word Bachelors was more important than his programming resume)

davidjmalan2 karma

I should again disclaim that I'm not particularly familiar with CompTIA or Cisco certifications, but I can say they're not a topic that have come up (for me) in conversations with Silicon Valley-type companies, for what it's worth!

davidjmalan2 karma

  1. I should disclaim that I'm only generally familiar with professional certifications. As a result, I personally don't ascribe much weight to them on resumes except, on occasion, as a signal of expertise with something with which I'm particularly unfamiliar. For instance, I'm quite uncomfortable with Cisco's IOS software, so I'd probably take comfort in working alongside someone who is Cisco-certified if we've a routing problem to solve. With that said, as a CS undergrad, I'd probably focus on your CS studies (or taking additional or more advanced CS courses) while in school rather than pursuing certifications.
  2. Hard to answer without knowing the technology you've in mind. :) Being flexible and well-rounded is certainly valuable, but having depth in one or more areas is probably wise, ideally in some area(s) you particularly enjoy!
  3. Afraid I've never tried my hand at competitive programming (and, truth be told, have never found it personally appealing!). But it's not uncommon for universities to field teams for programming competitions, so I would ask around!

bakedaubergine5 karma

Hello David Malan!

Oh wow. I didn’t think I’d ever get to thank you one on one. This is amazing. CS50 is by far the best MOOC out there and what you do (and how you do it) has had such a profound effect on me, I can’t even begin to tell you! I came across this while revisiting programming a couple of years after college and you have made me look at it in an all new light. So, thank you for that. I am so very grateful to you and your team for opening up your resources to those who can’t access them for whatever reasons. This is what learning and more importantly, teaching should be about, ideally. And CS50 in itself, btw, is no less than a piece of art. Props to Rob for being the most entertaining TA to have ever walked the earth. :D

My question is about the way this whole course is conducted. Where I come from, there is no way in hell a technical and a fairly difficult subject like this could be taught in such an interesting and effective way. Do you have any tips for a volunteer teacher with much less resources to conduct a course on math/programming?

davidjmalan3 karma

Thanks for such kind words. And I'll let Rob know. :)

To be honest, a little creativity can go a long way. Before starting grad school, I taught math at a public high school where resources were far from abundant. (As I recall, scaring up whiteboard markers was an ongoing challenge.) So I used to borrow teaching tools as often as I could. For instance, we were able to borrow a "personal response system" (granted, from Harvard) fairly often—essentially remote controls via which students could electronically answer multiple-choice questions. It was more of a novelty than a fundamentally compelling technology, to be honest, but it did wonders for engagement. Around the time we were discussing the geometry of kites, I asked a local toy store if they might be able to help out with some actual (flying) kites, which they graciously did. And to this day, we certainly reach out to friends in industry when we need a hand executing some pedagogical vision. For instance, a few years back, Google kindly helped out with some server hardware so that we could steer the course in the direction of virtualization.

I suppose a theme for us, then, has been asking for help! Do drop me an email if CS50 can ever pay it forward!

bespectacledman5 karma

Hi CS50,

I'm studying computer science (in part due to your fantastic course) and I'm currently developing an app for online learning. What I'd like to know is:

Can I embed your lecture videos in my app? With full credit going to you guys of course.

Thanks

davidjmalan4 karma

Do drop [email protected] a note too, as /u/rob-cs50 suggests, though in general the course's content can be indeed be used per a BY-NC-SA license!

theeagleandchild4 karma

edX student here!

I am under the assumption that if I was to take cs50 at Harvard, my code would be marked for style, succinctness and flexibility as well as its ability to return proper responses. Whether or not this is true, as a programmer walking back through the basics how can I know if my code is efficient in these ways? In other words, how can I know if there was a better, possibly faster method for computation?

Side note: I love the course, its availability and its interactive grading. Not trying to bash y'all for something those of us do it for free maybe don't get. I am a radio astronomer utilising huge data sets and speed is a problem.

Edit: spelling mistake, got a little too excited

davidjmalan7 karma

At the moment, submissions from students who are taking the course through Harvard College or Harvard Extension School are evaluated along axes of

  • scope,
  • correctness,
  • design, and
  • style

whereas submissions from students taking CS50 through edX or Harvard Division of Continuing Education are evaluated along the axes of

  • scope and
  • correctness.

Evaluating design at scale, I'm afraid, is non-trivial, since it's perhaps the most subjective and (for CS50 at least) quite time-consuming. More than just a score, it involves providing non-trivial qualitative feedback in the form of written, typed, or verbal comments. That's feasible (if still a challenge) for ~800 students at Harvard College and ~200 students at Harvard Extension School but not yet feasible, I'm afraid, for the thousands of submissions we receive via edX.

In the coming months, we hope to improve style50 such that it's used by all demographics for the assessment of style, after which we'll move on to the challenge of design! Odds are we'll facilitate peer feedback, too, but not leverage it for official assessment.

theeagleandchild4 karma

Any hints for dates of the hackathons? I really want to attend one!

davidjmalan3 karma

I'm afraid won't know for at least a few more weeks!

firefliers3 karma

I just started this on edX and it looks great. What do you suggest is the best way to go after I am done with CS50? Meaning should I plunge into advanced programming courses or look for the general applications since it’s a little difficult to get into the programming industry without an appropriate degree and all?

davidjmalan3 karma

Personally, I'd dive in deeper to algorithms and data structures. For instance, you might like Princeton's course. And taking one or more courses on functional programming and/or object-oriented programming would have high returns in terms of rounding out your familiarity with some programming fundamentals. Beyond that, I'd poke around to see what areas interest you most (e.g., graphics, networking, operating systems, theory, or any number of other fields)!

DudeWhatsMyUsername3 karma

Is there any Rule of Thumb you guys live by?

davidjmalan3 karma

When making a decision, I try to determine which decision I would most regret not making, and then I make that one!

mahendra_kumar3 karma

/u/davidjmalan thank you making computer science interesting again. Was there any project out of CS50 Hackathon you thought of investing in or thought of it as a really brilliant idea (I liked many btw) ?

davidjmalan2 karma

Allow me to respond as before! :)

Paurush3 karma

Why PHP ?? Most learning websites teach PYTHON or .NET for web development. Is Python or .NET better/more advance than PHP??

davidjmalan3 karma

I'd echo /u/dan_b_b's sentiments. PHP is quite similar syntactically to C, and I think the language's documentation on php.net is terrific pedagogically, complete with (usually) straightforward definitions and examples (even if the language itself has some imperfections). PHP is also quite omnipresent among web hosts these days and is relatively simple to get up and running.

Given that we spend relatively few weeks on web programming, those are (for us!) some very compelling upsides. We've considered transitioning to Python for the tail end of the course but no immediate plans just yet.

atuljohn3 karma

Woke up from my sleep and remembered the AMA is going on. How do you guys balance work and personal life?

davidjmalan6 karma

With great imbalance, I'll admit!

veikk2 karma

CS50 is the best course I ever took online, thanks for sharing it with the world! There was just one problem with the online lectures: the CS50 stress ball. I really want one! Any chance of getting those to the CS50 store?

davidjmalan3 karma

Thanks for the kind words! Afraid we don't have an efficient way to distribute them via post, whereas Spreadshirt and Zazzle take care of the logistics of apparel via store.cs50.net. Someday, hopefully!

TsukishirOSan2 karma

Dear /u/davidmalan , /u/rob-cs50 and Staff members: I saw a link to a page showing different cities from the US and also throughout the Wrold, and I wanted to ask : What does it take to make you guys pick a city (France is fine by me! ) for Hackathons and other CS50 events?

rob-cs502 karma

I'm pretty sure most of those locations are chosen because in those places we have particularly eager CS50x alums (the kind who answer a lot of questions on /r/cs50) and great TFs who've graduated and moved all over the world.

davidjmalan3 karma

Indeed! We also didn't want to bite off too many cities at once, since the localized support structures are currently an experiment for us!

TsukishirOSan2 karma

/u/davidjmalan,/u/rob-cs50 ,/u/zamyla-cs50,/u/pumpkin50:

Again thank you for this session :) What is the programming language you personally use the most as I assume it may not be C?

davidjmalan2 karma

Hm, it depends on the project, but lately I've used PHP and JavaScript (via Node.js) quite a bit. I tend to use C only during CS50!

codeNinjaWannabe2 karma

where can I get a "I took CS50" t-shirt? I'm not from US

TsukishirOSan2 karma

/u/davidjmalan /u/rob-cs50 /u/zamyla-cs50 /u/pumpkin50 /u/dan_b_b /u/gablg1

Which one of you(if any) feels really not comfy in front of a camera (like shorts lectures sessions) and needed to work on that? Or just doesn't like it at all? How do you all deal with it?

davidjmalan4 karma

I actually find it hardest to shoot material when it's just a few of us present (e.g., just the production team and I in the studio), since I feel a lot more pressure to get my words just right, whereas in lecture I (perhaps paradoxically) feel more comfortable speaking more naturally. As a result, I always feel compelled to start over and get things just right when pre-producing material, which is a luxury we don't have during live shoots!

Kanegae2 karma

Hey. CS50x student here, currently on week 3! Thank you for everything!

For every one of you: What's the best memory in all these years of teaching CS50? Any special lecture, student or colored elefant that you guys will never forget?

davidjmalan3 karma

Memories certainly abound (cf. photos.cs50.net), but particularly special for me were seeing the first-ever CS50 Fair come together in 2008 and our CS50 Hackathon in St. Louis with LaunchCode last year!

repairwerkz2 karma

I am just starting in CS50 and looking to be challenged as well as learning throughout the course. My question is which compiler will we use for C?

davidjmalan6 karma

We used to use gcc, but we now use clang because of its clearer (if still sometimes arcane!) error messages.

manaottman2 karma

1.Why there are no postmortems for CS50x? 2.Why the hacker edition is not graded for CS50x students?

I know that "why" questions are more likely to be hated!, so excuse me for that. :D

I <3 CS50

davidjmalan2 karma

  1. Coming soon! We're in the process of updating "CS50 Vault" for such.
  2. Relatively few students tackle them, and most are non-trivial to assess via automation, so we've prioritized other projects for now!

Ivan_Joule_Sheen2 karma

What are the chances of CS75 being offered in '15, a refreshed version?

davidjmalan4 karma

A variant of 75 is in the works but not sure if it'll debut this year or early next!