Particle-in-cell (PIC) methods have a long history in the study of laser-plasma interactions. Early electromagnetic codes used the Yee staggered grid for field variables combined with a leapfrog EM-field update and the Boris algorithm for particle pushing. The general properties of such schemes are well documented. Modern PIC codes tend to add to these high-order shape functions for particles, Poisson preserving field updates, collisions, ionisation, a hybrid scheme for solid density and high-field QED effects. In addition to these physics packages, the increase in computing power now allows simulations with real mass ratios, full 3D dynamics and multi-speckle interaction. This paper presents a review of the core algorithms used in current laser-plasma specific PIC codes. Also reported are estimates of self-heating rates, convergence of collisional routines and test of ionisation models which are not readily available elsewhere. Having reviewed the status of PIC algorithms we present a summary of recent applications of such codes in laser-plasma physics, concentrating on SRS, short-pulse laser-solid interactions, fast-electron transport, and QED effects.