The community structures commonly exist in real-world networks such as brain networks, social networks, or trade networks. Since the information of a real-world network is often captured by us with different measures of view, such real-world networks often have a multi-layer structure with different layers sharing the same community assignment. In this scenario, being able to find out the community assignment consistently will help us understand the properties and behaviors of the network so that we can exploit these networks more effectively. In this thesis, we adopt multiple methods to solve the community detection task in different scenarios and discuss the pros and cons of them by comparing the results from multiple methods. We also propose and compare some of the rank-estimation methods, which are used for solving the number of different communities in a network.