Although railway systems have been widely used in public transportation for several years, crew scheduling research focuses on airline operations. Since the crew costs constitute the critical part of the operational costs in railway public transportation, the crew scheduling problem gains more importance. Crew scheduling aims to assign all trips to duty packages in a timeline while satisfying several labour working rules, company requirements, and operational restrictions. Because of the complexity of real-world conditions, crew scheduling problems are NP-complete. In this study, the crew scheduling problem was addressed, and a constraint programming based column generation algorithm was proposed as a solution approach. A column generation algorithm was employed to solve problems having a considerable number of variables. In this study, the master problem was designed as a set partitioning problem that aimed to assign all trips to duty while minimizing the cost. In the subproblem, new column(s) satisfying all constraints were generated and added to the master problem to reduce the cost. To analyse the performance of the proposed approach, an integer programming model of the problem was developed. An extensive computational study is presented to compare the results of these two modelling approaches via different real-life problem instances.