I do not usually comment, but on this I have to.<p>If you do not know the primary tasks of version control (checkout, committing, branching, tagging, creating a new repository, forking a repository) then you cannot call yourself a programmer. You may be a coder, able to write code, perhaps even well. But you are not neither programmer, nor software engineer.<p>In my experience creating quality software is only partly about writing good code. That's a necessity of course, but equally as important (sometimes more so) is the process used to create the product (version control, build automation, unit testing, release management, etc.).<p>The best course I ever had in college was two semesters, organized students in terms of teams and had each design a product in the first semester, then implement another team's product in the second semester, using version control, releases, and product demos. The de-facto version control system on many teams is Git, with Subversion following close behind.<p>I would love to see colleges offer a semester-long course for 4 credits (course and lab) on "Creating Software Using Version Control Systems", followed by "Real World Release Management and Build Automation". I don't think college C.S. majors can be complete until they do.