Computer Science Requirements
Learn to analyse, design and implement information processing systems. Work with computers to solve problems in business, science and humanities fields.
Our requirements are designed to allow concentrations in multiple areas of computer science. Concentrators with well-defined interests can choose pathways containing courses they know will interest them. See the concentrations page and handbook entry for more details.
Critical thinking is the ability to question, analyze, interpret and evaluate information. This skill is essential in all areas of life. It allows you to make reliable judgements about information and problems.
You can develop your critical thinking by engaging in discussion with fellow students about course material. Reading around a topic, even from non-academic sources, is also helpful. Try to avoid settling for the first answer that comes to mind and look at all sides of an argument.
Our curriculum offers a variety of pathways, each representing a well-defined area of computer science. Students can choose a Track, in which to complete their 6 advanced courses, that best fits their interests. Each pathway has a set of core courses that form the foundation, and a list of elective options.
Problem solving is the ability to identify, analyze and address issues that arise in your personal and professional life. It involves a process of observing the environment around you; identifying things that could be improved and the factors and forces that influence them; developing approaches and alternatives to change them; taking action to implement those changes; and evaluating the outcome.
Programmers use problem-solving skills when they create programs that enable computers to solve problems, such as information retrieval and natural language processing. They must first understand how a human would solve a given problem, then translate this solution into something a computer can perform (an algorithm) and finally write the specific syntax required by the program to get the job done.
The field of computer science is diverse and includes topics like programming languages, operating systems, hardware systems, software engineering, artificial intelligence, game design and development, web designing and parallel computing. However, the core of computer science is problem solving.
The curriculum is designed to show students at all levels of experience how to understand the nature and broad reach of computation, and how to design software systems that allow users and computer programs to make full use of computing capabilities. This is done through a core set of required courses, supplemented by a variety of advanced and applied topics in the field.
The program also includes a range of introductory courses, many of which assume no prior knowledge of the discipline. These, combined with the liberal education requirements and upper division major electives, allow a great deal of flexibility in designing a degree to match a student’s particular interests.
Students may choose from four specialized tracks, or a general track that allows for interdisciplinary work with other departments. The specialized tracks offer the opportunity to gain depth in a subject area of interest, as well as the ability to take electives outside of computer science to meet upper division requirements or to pursue a double concentration.
The ability to communicate ideas effectively — through written, verbal and non-verbal modes of communication. Computer scientists communicate both technical information and research results. They must be able to explain technical subjects to people with minimal knowledge of the subject, as well as convey complex ideas in a simple manner to non-technical audiences.
Students who want to major in CS must complete a series of required courses that build on each other. These courses provide the foundation that allows a student to adapt to new developments in the field.
Courses that meet these requirements include programming, formal reasoning, systems, and computation and the world. Some courses fulfill multiple requirements — for example, COP 2220 Programming 1 counts for both Formal Reasoning and Computation and the World. Other courses may be approved as part of a concentration with advance approval by the Directors of Undergraduate Studies. See our Plans of Study page for details. Concentrators may also choose to create a joint concentration with another discipline — for example, a combination of CS and Linguistics.