FAQ: Introductory Computer Science Courses
A typical computer science major takes the CMSC 201, CMSC 202 and CMSC 341
(Data Structures) sequence to learn programming. However, this may not be
the right sequence of courses for everyone. This is an informal guide to
help you place yourself in the correct course. If you have further
questions or would like advice about your specific situation, please ask
Q: Should I take CMSC 104 or CMSC 201?
A: Starting in the Spring 1998 semester, students are required to have
some programming experience before taking CMSC 201. So, if you haven't
done any programming, the answer is simple: take CMSC 104. If you have
written programs before, then you can take CMSC 201 if you have mastered
programming using loops, if statements and arrays. Your programming
experience need not have been in C - at this level, you should be able to
convert your programming skills from say PASCAL to C quite readily. If you
are not comfortable with this idea, you should take CMSC 104. You should
also consult the "CMSC 104 Checklist" to determine whether your experience
is equivalent to CMSC 104.
Q: Should I take CMSC 106?
A: The purpose of CMSC 106 is to provide a quick and advanced course in C
programming for students who have mastered programming in another language
(e.g., PASCAL). Students should have experience that is equivalent to CMSC
201, except that a programming language other than C was used. In general,
students without substantial programming experience should not take
CMSC 106 - this includes most freshman.
Q: I took a computer class in high school/community college, is it
equivalent to CMSC 201?
A: This depends a lot on what was covered in the class and how well you
mastered the material that was covered. Consult the "CMSC 201 Checklist".
You should be able to check off the vast majority of those items before
proceeding to CMSC 202. Furthermore, you should be comfortable with the
idea of learning the items that you have not checked off on your own.
Q: I have taken a course that is equivalent to CMSC 201, but it was in
PASCAL. Which course should I take next?
A: You should take CMSC 106, before taking CMSC 202. Since CMSC 106 is
usually offered during the winter and summer sessions, you can avoid
"falling behind a semester" by taking CMSC 106 between semesters. The
alternative is to repeat CMSC 201 in C, but this is more work than CMSC
Q: I've had many semesters of programming experience, which course should
A: This is a difficult question. If you haven't programmed in C before,
then you should probably take CMSC 106. If you have programmed in C, then
you should refer to the checklists to determine where you stand. It might
even be the case that you are ready for CMSC 341. However, the material in
CMSC 202 and in CMSC 341 is quite challenging. So, it may also be the case
that you have had several semesters of programming, but have yet to master
the material in CMSC 202. In that case, you should take CMSC 202.
Q: If I want an easy "A", shouldn't I just take CMSC 104?
A: CMSC 104 is designed for students who haven't had any programming
experience. If you already have substantial programming experience, then
you can get an easy "A" in CMSC 104, because it only covers material that
you already know. On the other hand, you can also get an "A" by repeating
the 3rd grade. The point is that taking CMSC 104 just to get an easy "A"
is not going to prepare you for CMSC 201. In fact, doing so will be
detrimental to your work habits and you will have a rough time when you
have to work hard to keep up with CMSC 201, CMSC 202 and CMSC 341.
Q: What are CMSC 201H and CMSC 202H?
A: Students enrolled in CMSC 201H and CMSC 202H can count these courses
toward the requirements for UMBC's Honors College. Currently, the Computer
Science Department does not offer an honors degree for computer science
majors. The students in these honors sections attend the same lectures as
students in the other sections, but have a different discussion section.
In a regular discussion section, the instructor reviews the material
covered during lecture. In an honors discussion section, new material
will be introduced. Thus, only students who feel that they do not need
this additional review should enroll in the honors sections. One goal of
the honors sections is to expose the students to topics in advanced areas
of computer science that are not usually covered in introductory
CMSC 104, CMSC 201 and CMSC 202 Checklist
You can use the following checklists to help you determine whether you
have programming experience that is equivalent to students who have taken
CMSC 104, CMSC 201 and CMSC 202 at UMBC. You should check off a concept or
skill below only if you are able to incorporate it in a programming
project with little or no help.
CMSC 104 Checklist: You have programming experience that is equivalent to
CMSC 104, if you have the following skills and understand the following
concepts in some high-level programming language (not necessarily C).
o the compilation process o if statements
o Boolean expressions o for loops and while loops
o simple data types o arrays
o input/output functions
CMSC 201 Checklist: You have programming experience that is equivalent to
CMSC 201, if you have the following skills and understand the following
concepts in C, in addition to those listed above for CMSC 104.
o functional/procedural o writing functions, using header files
o top-down design o character and string handling
o separate compilation o basic pointer manipulations
o libraries o pointers as parameters
o file I/O
CMSC 202 Checklist: You have programming experience that is equivalent to
CMSC 202, if you have the following skills and understand the following
concepts in C, in addition to those listed above for CMSC 104 and CMSC 202.
o abstract data types o writing recursive functions
o recursion o linked lists, stacks and queues
o functional parameters o binary search trees
o searching and sorting o hashing
o quicksort and mergesort
last modified on