Noise presents a significant challenge to quantum computing hardware, limiting the complexity of problems that can be tackled beyond just a few qubits. Quantum error correction (QEC) offers a theoretical framework that guarantees reliable quantum computation in the presence of noise. In this talk, I will focus on a popular class of QEC codes called surface codes, where quantum information is encoded in an entangled state of many physical qubits arranged on a two-dimensional lattice. I will give an introductory overview of QEC, explaining how errors are detected and corrected in surface codes. Finally, I will introduce an open-source software tool that enables the design and analysis of surface codes.