How CS50 at Harvard uses GitHub to teach computer science(github.com)
github.com
How CS50 at Harvard uses GitHub to teach computer science
https://github.com/blog/2322-how-cs50-at-harvard-uses-github-to-teach-computer-science
42 comments
My University provides a self-hosted GitLab (via the joint datacenter of the cities universities and research organisations) and it's really, really nice.
I think you can't really ask your students to sign up to anything or use anything that isn't hosted or provided by the university. And even for stuff provided by the university, you shouldn't be forced to use any particular software. As a mechanical engineer, I had to take CS intro class and they made us use Visual Studio. I never liked that class.
I think you can't really ask your students to sign up to anything or use anything that isn't hosted or provided by the university. And even for stuff provided by the university, you shouldn't be forced to use any particular software. As a mechanical engineer, I had to take CS intro class and they made us use Visual Studio. I never liked that class.
I'm actually not so opposed about software like VS (at least the older versions which did not phone home, and which all you did was download and install) --- it's reliance on services that are the main concern.
I see your point and I agree but I don't think it's a big deal. Your future employee will likely do the same.
> Full disclosure: I do not have a GitHub account, nor do I intend to ever have one. I have taught some introductory CS.
It seems like a curious decision to never intend to have a github profile. I'm interested to hear your perspective for that.
It seems like a curious decision to never intend to have a github profile. I'm interested to hear your perspective for that.
Harvard SEAS maintains an internally hosted git-based code repository so that is a non-GitHub option. GitHub is increasingly important for job seekers to present a portfolio, which is why it is useful for students, besides being a commonly used commercial tool.
Lots of people still disagree with the github-resume thing though. It seems that it's only valued in recent domains (ES5 web front end maybe).
How is it worse than subscribing to Blackboard or some other educational software service?
This goes beyond teaching for bsc, msc and phd students.
Scholar.google.com is becoming the central hub of science. My university is using Github for several CS classes. We have one course where you need to fix problems in a Github-based repo in order to pass the course. The entire course is also on Github: https://avandeursen.com/2013/12/30/teaching-software-archite... This goes beyond CS50, fix other peoples code, understand what 100k lines of code means.
Science is also moving to Github.
I run an open lab. All my weekly meeting notes and intermediate research results are public. All phd, msc, and bsc students in the lab report through Github. Amazing tool to keep track of progress. Sadly it's one organisation in control, no backups of issues. https://github.com/Tribler/tribler/wiki#current-items-under-...
Scholar.google.com is becoming the central hub of science. My university is using Github for several CS classes. We have one course where you need to fix problems in a Github-based repo in order to pass the course. The entire course is also on Github: https://avandeursen.com/2013/12/30/teaching-software-archite... This goes beyond CS50, fix other peoples code, understand what 100k lines of code means.
Science is also moving to Github.
I run an open lab. All my weekly meeting notes and intermediate research results are public. All phd, msc, and bsc students in the lab report through Github. Amazing tool to keep track of progress. Sadly it's one organisation in control, no backups of issues. https://github.com/Tribler/tribler/wiki#current-items-under-...
Isn't Blackboard universally considered to be awful by everyone who is forced to use it?
...I was a student too long ago, but this is my impression from speaking with younger relatives.
...I was a student too long ago, but this is my impression from speaking with younger relatives.
Yes, it's terrible. The competitors aren't much better, if not worse.
If you think that's crazy, my friend's professor has the students join a Slack room he created that allows for anonymous usernames to discuss classroom stuff. He has the chat open in a projector during class. It's an interesting mess.
In the school I attended (not Ivy League, but the respected leader regionally for SE) students graduated without knowing how to use Git in the command line; only git in the context of Eclipse. Building a Flask app would have been a pipe dream. I think what Harvard is doing is truly great teaching students real world applications, workflows, and best practices right from the intro class!
I also prefer command line to GUI for many tools. However I've worked with some truly great programmers who always try to find a GUI application for editor, git, svn, debuggers, etc. Was my command line way the best practice? I doubt that since they still get the job done with good pace. My guess is that personal tastes define work flow. For me, it's easier to type, but for them GUI has been strongly integrated to their muscle memory.
I've seen a few schools now incorporating Git into their curriculum and had the chance to speak with a few professors doing so. It came down to local companies complaining that new CS grads didn't have the prerequisite skill sets to work for them, namely Git but also web application development, testing skills, etc.
It's an interesting nexus of "should a degree give you job skills", and it seems to have won out. Personally I predict the tens of thousands of CS majors getting pumped out every year will inevitably saturate the market at some point.
It's an interesting nexus of "should a degree give you job skills", and it seems to have won out. Personally I predict the tens of thousands of CS majors getting pumped out every year will inevitably saturate the market at some point.
Graduating from introductory courses like Harvard's CS50 certainly don't qualify you for anything but the most junior positions, which graduates are surely finding out each year. They need to either put in major effort on their own or take more courses, to get an interesting position. And looking at current growth I wouldn't worry about saturation.
> A report on Science, Technology, Engineering and Math (STEM) from the Georgetown University Center on Education and the Workforce forecasts 51 percent of STEM occupations will be computer occupations by 2018.
http://logos.cs.uic.edu/recruit/csstatistics.htm
> A report on Science, Technology, Engineering and Math (STEM) from the Georgetown University Center on Education and the Workforce forecasts 51 percent of STEM occupations will be computer occupations by 2018.
http://logos.cs.uic.edu/recruit/csstatistics.htm
That is why in certain countries there are CS degrees, and technical schools.
Universities should prepare for knowing how to learn, not to fulfil bullet points in job adverts.
That is what technical schools are for.
Universities should prepare for knowing how to learn, not to fulfil bullet points in job adverts.
That is what technical schools are for.
I personally think there's more than enough time in 4 years to both teach "theory"/computer science and practical skills.
A lot of classes and colleges just move too slow.
A lot of classes and colleges just move too slow.
When I was in University I had never even heard of Git or Subversion, but that was because the didn't exist.
> Personally I predict the tens of thousands of CS majors getting pumped out every year will inevitably saturate the market at some point.
This is just my personal view, but I think the curriculum of CS will change vastly over the next few decades, but SE jobs will continue to grow. The market will most likely adjust to cut out the more "entry level" programmer jobs and replace it with more advanced AI/Deep Learning positions. Case in point, there are (virtually) no Flash jobs, but self-driving car engineers are now a job (and a nanodegree on Udacity). I think you can automate jobs, but you can't automate the people creating automation (at least to a degree).
This is just my personal view, but I think the curriculum of CS will change vastly over the next few decades, but SE jobs will continue to grow. The market will most likely adjust to cut out the more "entry level" programmer jobs and replace it with more advanced AI/Deep Learning positions. Case in point, there are (virtually) no Flash jobs, but self-driving car engineers are now a job (and a nanodegree on Udacity). I think you can automate jobs, but you can't automate the people creating automation (at least to a degree).
It's great that industry standards like Git are taught. I wish introductory computer science at my school included coding, never underestimate the power of piquing a student's interest. Many more of my classmates might be interesting in coding if our CS101 was done right.
I'm not sure i really need a t-shirt to commemorate a sub-100 level class.
I'll take one thanks.
I wouldn't read too much into the number. Their department claims that Math 55, for example, is the hardest undergraduate math class in the country and I believe them.
I was surprised to discover that the course has a Wikipedia page:
https://en.wikipedia.org/wiki/Math_55
> From 2007 onwards, the scope of the course was changed to more strictly cover the content of four existing semester-long courses in two semesters: Math 25a (linear algebra) and Math 122 (group theory) in Math 55a; and Math 25b (calculus, real analysis) and Math 113 (complex analysis) in Math 55b. The name was changed to "Honors Abstract Algebra" and "Honors Real and Complex Analysis" to reflect this.[citation needed]
Linear algebra, abstract algebra, calculus, and real and complex analysis in one course. Sounds like fun.
https://en.wikipedia.org/wiki/Math_55
> From 2007 onwards, the scope of the course was changed to more strictly cover the content of four existing semester-long courses in two semesters: Math 25a (linear algebra) and Math 122 (group theory) in Math 55a; and Math 25b (calculus, real analysis) and Math 113 (complex analysis) in Math 55b. The name was changed to "Honors Abstract Algebra" and "Honors Real and Complex Analysis" to reflect this.[citation needed]
Linear algebra, abstract algebra, calculus, and real and complex analysis in one course. Sounds like fun.
Keep in mind that Math 55 is typically only open to frosh.
It's a broad, introductory, 11-week course which 'about half ... typically treat ... as their one and only course in computer science'.
That said, I find the idea of a t-shirt to commemorate a single course (whatever it's difficulty) amusingly odd.
That said, I find the idea of a t-shirt to commemorate a single course (whatever it's difficulty) amusingly odd.
Harvard is not on a quarter system, Fall and Spring semesters are about 15 weeks long. For students who already have some programming experience, there are many opportunities to challenge themselves in the problem sets and especially the final project.
As for the t-shirt, CS50 has one of the largest enrollments and Malan puts a lot of effort into making it fun, engaging, encouraging, and fostering a sense of community. Out of such a large enrollment at a liberal arts college, of course many will not take other CS course, but the course has definitely contributed to an increase in the number of students declaring CS as their major (what Harvard calls a "concentration").
As for the t-shirt, CS50 has one of the largest enrollments and Malan puts a lot of effort into making it fun, engaging, encouraging, and fostering a sense of community. Out of such a large enrollment at a liberal arts college, of course many will not take other CS course, but the course has definitely contributed to an increase in the number of students declaring CS as their major (what Harvard calls a "concentration").
> Harvard is not on a quarter system, Fall and Spring semesters are about 15 weeks long.
Okay, not being familiar with 'a quarter system' myself anyway, I only said 11 weeks based on the 11-week schedule in the blog post.
Okay, not being familiar with 'a quarter system' myself anyway, I only said 11 weeks based on the 11-week schedule in the blog post.
Yeah Harvard doesn't use the same numbering systems as most other universities. It's up to the department if I recall and for the case department anything in the sub 100s were intro, 100-200 was for undergrad classes but could be taken for credit by students getting a masters degree and anything over 200 was graduate level (though open to motivated undergrads).
You may never have attended university, but it's common for students to print and wear all sorts of silly T-shirts for all sorts of silly reasons. ISTR the CS-50 shirt started out because students who didn't plan on continuing on to CS-51 were jealous of that course's T-shirt.
kind of the opposite. i've been at one so long that i'm a wee bit cynical.
especially since i'm right across the river from them.
especially since i'm right across the river from them.
Harvard likes to do things differently, course numbers don't convey level of difficulty like that.
Does Github even have unlimited free private repos for students? They didn't when I first checked at uni which made them a non starter for everyone there.
GitHub not only has free unlimited private repos for students, but offers the Student Developer Pack, which includes services such as Amazon Web Services, DigitalOcean, Microsoft Imagine, etc.
Teachers and researchers can also get both free private repos and free orgs.
http://education.github.com
I'm the student program manager at GitHub, happy to answer any questions or concerns!
Teachers and researchers can also get both free private repos and free orgs.
http://education.github.com
I'm the student program manager at GitHub, happy to answer any questions or concerns!
Nice, this looks awesome! Am I right in thinking it's less than about 4 years old? Github is great and this looks awesome, nice one!
[deleted]
One goal was to have students graduate, so to speak, from the class actually having a GitHub account.
IMHO this is not entirely dissimilar to e.g. requiring Facebook for distributing course material, to which there are plenty of opponents. You should not need a Facebook account to learn. You should not need a GitHub account to practice computer science.
(Full disclosure: I do not have a GitHub account, nor do I intend to ever have one. I have taught some introductory CS.)