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.
-
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.
-
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.)
-
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.
-
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:
-
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.
-
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.
-
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.