Majoring in Computer Science
Requirements for Major
A major in Computer Science requires a minimum of 12 courses, of which 8 are specifically named and 4 are elective. Proficiency in basic mathematics is also required. Thus, the major requirements break down into 4 distinct groups.
The introductory sequence provides a basic introduction to programming (CSCI 141, 241) and to the discrete mathematics (CSCI 243) that underlies computer science. CSCI 141 is a lecturelab course; you must register for both a section of CSCI 141 and CSCI 141L. Python is the language taught in 141 and 241. Students may elect to substitute MATH 214, Foundations of Mathematics, for CSCI 243.
The second group consists of the following required core courses:

301 Software Development  for realizing algorithms,

303 Algorithms  for analyzing their properties,

304 Computer Organization  for executing algorithms,

312 Principles of Programming Languages  for specifying algorithms for people and machines,

423 Finite Automata and Theory of Computation  for formulating models and theories.
The third group consists of a minimum of 4 elective courses (12 credits). A specific sequence should be chosen by the student in consultation with his or her advisor.
The fourth group consists of the Mathematics courses 111, 112, and 211, in which the student must demonstrate proficiency for a major in Computer Science.
The Major Writing Requirement can be satisfied by successful completion of Computer Science 423W (in conjunction with enrollment in Computer Science 423) or by fulfilling the requirements of Computer Science 495496, Honors project in Computer Science.
Students who intend to major in Computer Science are encouraged to have completed Computer Science 141, 241, 243 and at least one other 300400 level Computer Science course by the end of their sophomore year. Mathematics 111 and 112 should also be completed by that time.