The paper introduces a successive cancellation list (SCL) decoder for polar codes, which generalizes the classic successive cancellation (SC) decoder. The SCL decoder considers up to \( L \) decoding paths concurrently at each stage and selects a single codeword from the list. For moderate values of \( L \), the performance of the SCL decoder is close to that of a maximum-likelihood (ML) decoder. Alternatively, if a "genie" is allowed to choose the codeword, the performance is comparable to state-of-the-art LDPC codes. The paper also presents an efficient implementation of the SCL decoder with time complexity \( O(L \cdot n \log n) \) and space complexity \( O(L \cdot n) \). Additionally, a modification to polar codes is introduced, which, when decoded with the SCL decoder, significantly improves error rate performance. The paper includes simulations demonstrating the effectiveness of these improvements.The paper introduces a successive cancellation list (SCL) decoder for polar codes, which generalizes the classic successive cancellation (SC) decoder. The SCL decoder considers up to \( L \) decoding paths concurrently at each stage and selects a single codeword from the list. For moderate values of \( L \), the performance of the SCL decoder is close to that of a maximum-likelihood (ML) decoder. Alternatively, if a "genie" is allowed to choose the codeword, the performance is comparable to state-of-the-art LDPC codes. The paper also presents an efficient implementation of the SCL decoder with time complexity \( O(L \cdot n \log n) \) and space complexity \( O(L \cdot n) \). Additionally, a modification to polar codes is introduced, which, when decoded with the SCL decoder, significantly improves error rate performance. The paper includes simulations demonstrating the effectiveness of these improvements.