In particular, students majoring in Computer Science will learn basic and advanced programming; design and analysis of computer algorithms for both correctness and efficiency; design and analysis of computer hardware; what is and is not mathematically possible to compute; about the mathematical theory of languages and how these theories apply to the design of computer languages, including language comparisons and implementations; management of large software projects; and how a computer operating system works. Students who successfully complete the program will be prepared for employment as computer professionals, including computer systems analysts, software developers, systems programmers, and scientific or engineering applications programmers, or for graduate school in computer science or a related field.