The computer science curriculum is designed to prepare students for employment as computer science professionals, as well as to provide a strong background for advanced study. All students take courses in problem solving and programming fundamentals, data structures, computer architecture, operating systems, algorithm analysis, software engineering, and programming languages or theory of computation. Upper-level options support an in-depth exploration of a range of sub disciplines including, but not limited to, artificial intelligence, database systems, graphics, networks, security, computational biology, and human computer interaction. Special topics courses offered each semester provide the opportunity to study and work with the latest trends in technology. For their capstone requirement, students participate in research and/or industry experiences which culminate in professional presentations. Students enhance their studies with course work in mathematics and science, as well as in arts, humanities, history, and other disciplines in social sciences. A minimum of 32.5 course units is required for graduation.