Placement in Introductory Computer Science Courses
Revised: Spring 2013
All computer science and computer engineering majors are required to take the CMSC 201, CMSC 202 and CMSC 341 (Data Structures) sequence of foundational courses in programming. Some students need or choose to start in one of our preliminary courses that do not count towards the degree requirements but can prepare you for the required sequence. This guide will help you place yourself in the correct course to start this sequence. If you have further questions or would like advice about your specific situation, please ask an advisor or your instructor.
Q: Should I take CMSC 101, CMSC 104, or CMSC 201?
A: CMSC 101 is a new course that is designed specifically for freshman computing majors (i.e., students considering or intending to major in CS, CE, IS, or the BTA program). It provides a broad introduction to computational thinking, experience in programming, and instruction in core academic skills including time management, effective group work, and career planning. CMSC 104 is a basic programming course that is primarily intended for non-computing majors. CMSC 201 is a rigorous, fairly fast-paced introduction to programming skills that requires no prior programming experience but moves quickly and can be challenging for students who have not had much experience with computers and programming. CMSC 201 also has a math prerequisite of MATH 150, so incoming students must have a MATH 151 placement or higher to take CMSC 201.
Therefore, if you are considering a computing major, have a MATH 151 or higher placement, and already have some programming experience or feel confident about the idea of learning a lot of programming very quickly, you should take CMSC 201. If you are considering a computing major but do not have a MATH 151 or higher placement, or do not feel ready to enter a fast-paced, rigorous programming class, or simply aren't quite sure about your major yet, you should take CMSC 101. If you are not intending a computing major and want a somewhat "gentler" programming introduction (or do not have a MATH 151 or higher placement), you should take CMSC 104.
If you are still not sure about which class to take, you may want to consult the "CMSC 104 Checklist" to determine whether your previous programming experience is equivalent to CMSC 104.
Q: I took a computer class in high school/community college, is it equivalent to CMSC 201?
A: You can only "place out" of CMSC 201 if you took the AP CS A exam and scored a 4 or 5, or if you have taken a college course that transfers as equivalent to CMSC 201. If you want to have a course evaluated for transfer equivalency, you will need to submit it through the registrar's office. Whether it will transfer depennds on what was covered in the class and the difficulty of the programming assignments. Consult the "CMSC 201 Checklist". If the course did not cover all of this material at a rigorous level, it will not transfer as equivalent to CMSC 201. Note also that programming projects for most of the computer science courses, including CMSC 104, 201, 202 and 341, are assigned on UMBC's GL systems, which run the Linux operating system. Therefore, the ability to edit, compile and debug programs using a command-line interface with Linux (or some other variant of UNIX) is very important for students who are intending to move directly into CMSC 202 or 341. If you have not had this experience, you will need to be prepared to learn Linux very quickly if you are entering directly into one of these classes.
You can also check transfer equivalencies for courses at community colleges in Maryland using the USM Artsys Articulation System.
Q: I have taken a course that is equivalent to CMSC 201, but it was not in the Python programming language. Which course should I take next?
A: You can continue in the introductory sequence and take CMSC202. CMSC202 is taught in Java and does not require specific knowledge of Python.
Q: I took a course equivalent to CMSC 201 at another college and received a grade of "C". What do I do now?
A: If you are a computer science major, you must take CMSC 201 and earn a grade of "B" or better. If you take CMSC 202 and pass it, you will not be allowed to retake CMSC 201. So, you must take CMSC 201 and earn a grade of "B" or better before you take CMSC 202.
Q: I took the equivalent of CMSC 201 and CMSC 202 at another college and received a grade of "B" in both. Which course do I take next?
A: If your CS1&2 courses were in Java and they really are equivalent to CMSC 201 & 202 (see checklists) and you've had a course in discrete mathematics equivalent to CMSC 203, you should take CMSC 341 next. If your CS1&2 courses were taught in C/C++, it is recommended that you take CMSC202 at UMBC.
You should also be familiar with the command-line interface in Linux and be able to edit, compile/run and debug programs in Linux (or any variant of UNIX).
Q: At another college, I took the equivalent of CMSC 201 and received a "B" and took the equivalent of CMSC 202 and received a "C". What now?
A: If you are a computer science major, under the gateway requirements, you must earn a grade of "B" in both CMSC 201 and CMSC 202. You need to take CMSC 202 and earn a grade of "B" before you take CMSC 341.
Q: At another college, I took the equivalent of CMSC 201 and received a "C" and took the equivalent of CMSC 202 and received an "A". What now?
A: If you are a computer science major and you are under the gateway requirements, you must earn a grade of "B" in both CMSC 201 and CMSC 202. Your situation will be handled on a case-by-case basis. You need to speak to an advisor.
This is a summary of the discussion above. Please read the discussion for the rationale.
||Next UMBC Course
|Non-computing major with a MATH 150 (or lower) placement and/or who prefers a less intensive programming introduction
|Computing major with a MATH 150 (or lower) placement and/or who prefers a less intensive programming introduction or a broader introduction to computer science
|Computing or non-computing major with a MATH 151 (or higher) placement and feel comfortable taking a rigorous programming class
|A previous programming course that transferred as CMSC 201 (including AP CS A with a score of 4 or 5)
|CS1&2 sequence equivalent to CMSC 201&202 in C/C++.
|CS1&2 sequence equivalent to CMSC 201&202 in Java.
Take CMSC341, if you've taken CMSC 203 Discrete Structures. Make sure you understand the gateway requirements!
Checklists for CMSC 104, 201 & 202
Q: I took a course at another institution. Is it equivalent to CMSC 104, 201 or 202?
A: 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.
- Boolean expressions
- simple data types
- arrays or lists
- writing pseudocode
- if statements
- for loops and while loops
- writing 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 addition to those listed above for CMSC 104.
- functional/procedural abstraction
- top-down design
- abstract data types
- searching and sorting
- writing functions, importing files
- character and string handling
- file I/O
- using classes
- writing recursive functions
- 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 following concepts in Java, in addition to those listed above for CMSC 104 and CMSC 202.
- object-oriented abstraction
- OOP class design principles
- standard Java library containers
Taking/Retaking CMSC 201 & 202
Revised: Fall 2010
This FAQ is for students who have matriculated at UMBC. If you are a prospective transfer student, you should consult the UMBC Transfer Student page and the FAQ for Prospective Transfer Students.
Q: Can I take CMSC 201 or 202 at another institution?
A: We do not permit matriculated students to take CMSC 201 or 202 at another institution. If you are a computer science or computer engineering major at UMBC, you must take CMSC 201 and 202 at UMBC. The courses at UMBC fit the computer science and computer engineering curriculum much better than courses at other institutions.
Q: I completed CMSC 201 at UMBC; can I take CMSC 202 at another institution?
A: No. The policy being adopted by many 2-year colleges and 4-year universities in Maryland is that students must finish the Computer Science I and II sequence (CSI&II) at the same institution. This policy was agreed upon at several articulation meetings sponsored by the University System of Maryland. Although there is general agreement on the list of topics that must be covered in Computer Science I and II, there is no agreement on which course should cover which topic.
Q: Why are CMSC 201 and 202 not offered during the summer?
A: Because there is not enough time in the summer sessions for all of the programming projects in a typical CMSC 201 or 202 class.
Q: I've finished CMSC 201 and I want to graduate as soon as possible. Can I take CMSC 202 at another institution over the summer then?
A: Absolutely not. See above for why programming courses over the summer session are a bad idea and why you should not take CSI and CSII at different institutions. Taking CMSC 202 over the summer at a different institution is a very, very bad idea.
Q: I just found out that I got a "C" in CMSC 201 and I am under the gateway requirements for computer science majors. What should I do?
A: You must repeat CMSC 201 at UMBC and receive a grade of "B" or higher, if you wish to remain a computer science major. You should do so during the next regular semester (Spring or Fall). Note that the UMBC undergraduate catalog states that:
… you may not repeat a course for a higher grade once you have successfully completed any subsequent course of a higher level in an academic sequence (for example, you may not retake FREN 101 after successfully completing FREN 102).
CMSC 201 and 202 are considered an academic sequence.
Note: If you do not pass the gateway requirements, you will not be allowed to graduate even if you have otherwise satisfied the requirements of the major. To pass the gateway, the students must complete CMSC 201 and CMSC 202 (minimum grade of "B" required) and CMSC 203 (minimum grade of "C" required)
Q: I just found out that I got a "C" in CMSC 202 and I am under the gateway requirements for computer science majors. What should I do?
A: You must repeat CMSC 202 at UMBC and receive a grade of "B" or higher, if you wish to remain a computer science major. You should do so during the next regular semester (Spring or Fall). Note that enrollment in CMSC 341 requires departmental permission and you will not be allowed to register for CMSC 341 until you have completed the gateway requirements. To pass the gateway, the students must complete CMSC 201 and CMSC 202 (minimum grade of "B" required) and CMSC 203 (minimum grade of "C" required).
Note: If you do not pass the gateway requirements, you will not be allowed to graduate even if you have otherwise satisfied the requirements of the major.
Q: I received a "C" in CMSC 201 or CMSC 202 on my second attempt (at UMBC or at another institution), and I am under the gateway requirements for computer science majors. What should I do?
We do not permit CS majors to take CMSC 201 or CMSC 202 for a third time. You will need to choose a different major.
For Prospective Transfer Students
Revised: Fall 2010
Q: I'm currently a freshman at a different college/university and I plan to transfer to UMBC as a computer science major in the next year or two. Which courses should I take now?
A: Let's start with what you should not do. You should not plan to just take the courses to satisfy the general requirements at your current institution and then take all the technical courses at UMBC. If you do so, you should not expect to take much less than four years at UMBC to complete a BS in computer science.
For computer science majors, your goal should be to prepare yourself to take CMSC 341 (Data Structures) at UMBC as soon as possible. This means that you should complete the Computer Science I & II sequence (CSI&II) at your current institution. The general advice is that you should take both CSI and CSII at your current institution. Articulation meetings of 2-year colleges and 4-year universities in Maryland (sponsored by the University System of Maryland) have found general agreement on the topics that should be covered in CSI&II, but little agreement on which course should cover which topics. Thus, if you only take CSI at your current institution, your transfer evaluation becomes complicated. The alternative is to take both CSI&II at UMBC, but doing so would probably mean that you will need four years at UMBC to complete a computer science major.
Note that all computer science majors must complete the gateway, as well as complete all the prerequisites for CMSC 341 before registering for CMSC 341. The gateway requires students to have a grade of "B" or better in both CSI&II. Although the letter grade at another institution does not count toward your GPA at UMBC, we will only accept a grade of "B" or better at another institution for the gateway requirements. If you have a grade of "C" or lower for CSI&II, then you must repeat the sequence either at your current institution or at UMBC. (Note that you may not take CSI or CSII more than twice and remain eligible to major in CS at UMBC. Third-time retakes of these classes are not permitted.)
Another prerequisite for CMSC 341 (Data Structures) is CMSC 203 (Discrete Structures). This is a mathematics course that teaches computer science majors about truth tables, Boolean algebra, proof by induction, etc. The discrete structures course may be taught out of the math department or the computer science department. You should take a course in discrete structures at your institution, if such a course is available.
Note that most of the programming projects for computer science courses at UMBC will use a UNIX operating system (e.g., Linux). If you have not used UNIX or one of its variants before, then you should familiarize yourself with the UNIX command-line interface, a text editor (e.g., vi, emacs). This will save you the trouble of having to learn UNIX as you are completing your first programming project at a new environment.
Other courses that will help you complete a BS in computer science in a timely fashion include: Calculus I&II, science courses and English composition. Note that as of Fall 2000, computer science majors must take a 1-year sequence in Biology, Chemistry or Physics. This sequence of courses must be designed for science and engineering majors. At UMBC, these sequences are BIOL 141+142 (BIOL 100+301 are being phased out), PHYS 121+122, and CHEM 101+102. Furthermore, the University requirements include a science laboratory course. It will be helpful if you arrive at UMBC having completed the calculus and science requirements.
On the other hand, there are some computer courses that do not help you graduate anytime sooner including: internet "fundamentals", lower-level database courses, lower-level networking courses, programming courses other than CSI&II. These courses can contribute to your general understanding of computer science and might transfer to UMBC as an elective, but they will not count toward the BS degree requirements in computer science.