This fast-moving, highly specialized field of study focuses on the underlying principles of programming and algorithms. Computer science students then learn how to apply these concepts to design software, systems and networks—while also understanding the ways humans need and want them to behave. Coursework may include programming, hardware and software design, network design, information processing and machine learning.