These include the study of algorithms, programming languages and the theory of computation. Logic and mathematics are the skills that are most essential for this program of study. Also central to this major is the development of sound programming skills.