Question: I have applied as a GSoC student to work on a project that would provide Refunds and / or Partial Payments functionality for CiviCRM. I am seeking current solution to do this when needed so I can suggest and develop better solution. What is the manual way to use negative contributions for refunds as according to me this situation could have occurred several times.

Similarly, how are partial payments handled now with work-arounds?

Answer: 
Refunds and partial payments are two different things.

Currently for refunds the work-around is to edit the contribution (possibly associated with membership or event ticket purchase) and set amount received to zero (for a full refund). 

For partial payments, there was a release of back office functionality in 4.5 for events ie staff could enter partial payments but the gereal public could not. I suppose one work-around for not having this available to the public is setting up a contribution page for a lesser amount, then having staff manually record the partial payments each time they come in against the event purchase, and cancel the contribution. Similarly, for a membership, a separate Contribution page could be set up to receive these payments which could be manually cancelled after a payment for a similar amount has been created manually.
I use a different approach for refunds. 

If it is for a membership I "renew" the membership paying a negative amount and then edit the membership end date to show the correct date. This lets us keep track of each individual credit card payment/refund and provides an accurate history of "contributions" linked to the membership.

If it is "just" a contribution I enter a negative contribution.

We aren't running events through CiviCRM at the moment, but if we were I would see if I got the desired result by making a negative contribution and then directly editing the civicrm\_participant\_payment table to add a line linking the payment to the participant id.

By making negative payments we still have an accurate daily records at the line item level for entering into our accounting package.