Introductory Sequences - Which? When?

The Computer Science department offers many introductory courses, designed to serve different constituencies. Students will want to know which courses to start with, and when to start. This section summarizes our answers to those questions. Subsequent sections of the document contain broader details.
  1. Computer Science majors (including intended majors) should start with CMSC 15100 or CMSC 16100 no later than the autumn quarter of their second year. Students cannot reasonably expect to be able to complete a computer science major if they start their studies in their third year. Students who are already good programmers and/or exceptionally strong in mathematics should consider CMSC 16100. CMSC 15100 does not assume any prior computer science background, although a degree of mathematical maturity is expected.
  2. Computer Science minors (including intended minors) should start with CMSC 12100, CMSC 15100, or CMSC 16100 no later than the autumn of their third year, and preferably in the autumn of their second year. (CMSC 15100, as of 2015--2016, is also offered in the winter, providing an additional entry point to minors in the winter of their second year.)
  3. Non-majors and non-minors who nevertheless want a rigorous introduction to computer science should take CMSC~12100 in any autumn quarter other than their first year, and follow up with CMSC 12200 and CMSC 12300 as desired. Any student who waits until the autumn of their fourth year to take CMSC 12100 will be out of the running for a major or minor.
  4. Students who want a taste of the subject in one quarter without committing to an intense technical course of study should consider CMSC 10100 or CMSC 11000.

Introductory sequences

The Department of Computer Science offers three introductory sequences:
  1. CMSC 12100-12200-12300 Computer Science with Applications 1, 2, and 3 are designed for students who do not intend to be computer scientists, but who wish to learn how to use computing to solve problems in their own fields. These courses teach students how to think computationally and how to program in a variety of languages (including Python, SQL and C) using problems drawn from many different fields. These courses are appropriate for students who do not have any background in computer science or who have had some exposure to programming.
  2. CMSC 15100-15200-15400 - Introduction to Computer Science 1 and 2 and Introduction to Computer Systems are designed for students who intend to major in computer science. These courses are specifically designed to prepare students for advanced courses in the department. CMSC 15100 does not assume prior experience in computer science. CMSC 15100 treats functional programming, type systems, and recursion, while CMSC 15200 focuses on iterative and imperative programming, pointers, and memory management. CMSC 15400 teaches systems programming in depth, and is a prerequisite for all advanced systems courses.
  3. CMSC 16100-16200-15400 - Honors Introduction to Computer Science 1 and 2 and Introduction to Computer Systems are designed for students who intend to major in computer science and have substantial programming experience with high math placement. Students must be placed into at least MATH 161. They also should have had the equivalent of over a year of formal programming instruction.
Students who wish to do a minor with a concentration on machine learning or in the more theoretical aspects of computer science can take CMSC 12100-12200-12300 followed by four electives chosen from the set of two-hundred level computer science courses that do not require CMSC 15400.

Major and minor

The Department of Computer Science offers both BS and BA degrees and a minor. The BS degree requires the introductory sequence and 15 additional courses, while the BA degree requires the introductory sequence and 12 additional courses. The minor requires the introductory sequence plus four additional courses. For the full, detailed requirements of each program, please consult the college catalog. The order of the introductory sequences makes both major options and the minor span several years. Students must be aware of this when planning. The first year of computer science study typically involves nothing other than the introductory sequence. This means that a student intending to major in computer science must complete the introductory sequence by the end of their second year to be able to complete the degree in four years. Along similar lines, students intending to earn a minor must complete the introductory sequence by the end of spring quarter of their third year. Any intended major should take an introductory course as soon as possible, preferably in their first year. Since relatively few students have studied computer science in high school, many students take the first course as an elective, or the start of a minor, and then they fall in love with the problem-solving aspect of the field. If this epiphany occurs in third year, it is typically too late to start the major. In summary, we suggest that majors start in their first year or second year at the latest. Students interested in a minor can start as late as the autumn of their third year, but the second year is strongly recommended.