ID:1314766
 
How do you go about coding with a partner? How do you keep track of who has what files and how things are integrated? Are there any special considerations that I should know of?
I don't code DM but on programming assignments the best way I found, is to probably communicate as much as possible. Splitting up to do the work and re-attaching it later leads to more confusion.

Another way is one person codes, the other debugs what was previously coded.

If you must split up, it's best to work with a set of defined constants and generic terms.
Whenever I've helped out on a project, I always work on one system at a time. I get as many details as I feel relevant and then create a demo, filled with comments. Then I let the main programmer implement it into the project as they see fit.

I've never collaberated with another programmer through the full duration of a project though. Best advice is Communication Is Key.
Generally you have two roles in most projects, lead and side programmer. The side programmer's job is tasked with developing a specific system that can either be built onto or integrated with existing code as independently as possible. Side programmers are good for building small libraries to do certain tasks.

The lead programmer's job is mainly to integrate the different systems together. For example, one programmer might be in charge of physics while another is tasked with a lighting engine. Individually, the systems compile perfectly fine, but there's no actual execution. The lead programmer takes these two new systems and integrates them together, actually utilizing the lighting and physics in the project.

But, staying with the consensus, communication is vital for any project. Try compiling a task list for you and your partner to work on so you're not inclined to step on each others toes.
Whether you're working with yourself or a team version control software is vital for keeping your changes organized. I can't imagine multiple people working on code without using svn or git.

It lets you keep track of who changed what, line by line, and will also keep all the versions and changes in a history so you can go back in time if you make a mistake or want to remember what happened. Multiple people can edit files at the same time, the software will merge changes for you 95% of the time and you can help it figure out what to do with a simple interface for the other 5%. There's lots of great tutorials all over the internet.

It's also a bit of software that will be very useful in many careers, knowing how to work it is not a bad thing!

http://subversion.tigris.org/

http://git-scm.com/
In response to MagicMountain
To add onto this, if you want to get started with either SVN or Git, I highly recommend picking up the respective Tortoise software suite.

Tortoise SVN
Tortoise Git

It's just really helpful to not have to use the nitty gritty command line for everything, though using the command line gets you really intimate with the inner workings. (Although, in the case of Git, you might want to pull out your hair if you're not using Tortoise - hell, even if you're using Tortoise you might want to pull out your hair)
In response to Doohl
To add onto THAT, I suggest TortoiseSVN and Assembla for a repository provider. They have a really nice assortment of collab tools for managing commits and deadlines.
Now that's what I call teamwork