The computer science major gives students the knowledge and skills they need to be leaders in today s computing world. The lower division courses provide a strong foundation in algorithmic problem solving and data representation, computer systems fundamentals, formal mathematical reasoning, and programming in various languages (including Java and C). As they reach the upper division, students take core courses to gain a deeper understanding of important computer science subdisciplines including AI/machine learning, algorithms and theory, computer architecture, computer security, networks and operating systems, databases and programming languages, and software engineering.