Computer science seeks to train and equip the next generation of professionals in both the practical and theoretical fields of computing. Undergraduate degrees tend to be diverse, giving new students the opportunity to explore a wide range of concepts from algorithms and modelling, to software implementation.