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 your instructor.
Q:  Should I take CMSC 104 or CMSC 201?
A:  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 either lists or arrays.  Your programming experience need 
not have been in Python - at this level, you should be able to convert 
your programming skills from say Java to Python 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:  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've had many semesters of programming experience, which course 
should I take?
A:   This is a difficult question. If you have programmed in Python, 
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.
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 Python or Javascript).
Concepts                    Skills
o Boolean expressions       o writing pseudocode        
o simple data types         o if statements
o arrays or lists           o for loops and while loops
o functional/procedural     o writing functions
  abstraction
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 addition to those 
listed above for CMSC 104.
Concepts                    Skills
o functional/procedural     o writing functions, importing 
  abstraction                 files
o top-down design           o character and string handling
o libraries                 o file I/O
o abstract data types       o using classes
o recursion                 o writing recursive functions
o searching and sorting     o linked lists, stacks and queues
                            
CMSC 202 Checklist: You have programming experience that is 
equivalent to CMSC 202, if you have the following skills and 
understand the concepts shown in Java, in addition to those 
listed above for CMSC 104 and CMSC 201.
o oject-oriented            o classes                   
  programming               o constructors
o inheritance               o destructors 
o polymorphism              o operator overloading      
o exceptions                o iterators                 
o templates                 o STL
last modified on