The memristor is considered as the one of the promising candidates for next generation computing systems. Novel computing architectures based on memristors have shown great potential in replacing or complementing conventional computing platforms based on the von Neumann architecture which faces challenges in the big-data era such as the memory wall. However, there are a number of technical challenges in implementing memristor based computing. In this review, we focus on the research performed on the memristor material stacks and their compatibility with CMOS processes, the electrical performance, and the integration. In addition, recent demonstrations of neuromorphic computing using memristors are surveyed.