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 140 or 141 followed by CSCI 241) and the discrete mathematics (CSCI 243) that underlies computer science. CSCI 140 and CSCI 141 are lecture-lab courses; you must register for a section of both CSCI 140 and CSCI 140L or CSCI 141 and CSCI 141L. Python is the language taught in 140, 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 495-496, 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 300-400 level Computer Science course by the end of their sophomore year. Mathematics 111 and 112 should also be completed by that time.