
Placement in Introductory Computer Science Courses
Revised: Fall 2010
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 guide will help you place yourself in the correct course. 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 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, arrays and basic use of functions. 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.
You should also know that the programming projects for most of the computer science courses, including CMSC 104, 201, 202 and 341, are assigned on UMBC GL Systems which run the Linux operating system. So, the ability to edit, compile and debug programs using a command-line interface with Linux (or any variant of UNIX) is recommended before you take CMSC 201.
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. 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. In addition, you will end taking an extra semester to complete the degree requirements.
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, the difficulty of the programming assignments and how well you mastered the material that was covered. Consult the "CMSC 201 Checklist". You should be able to check off almost all 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. Also, programming projects for most of the computer science courses, including CMSC 104, 201, 202 and 341, are assigned on UMBC GL Systems which run the Linux operating system. So, the ability to edit, compile and debug programs using a command-line interface with Linux (or any variant of UNIX) is recommended
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.
Summary:
This is a summary of the discussion above. Please read the discussion for the rationale.
| Have Taken: |
Next UMBC Course |
| One programming course in any language equivalent to CMSC 104 |
CMSC 201 |
| One programming course equivalent to CMSC 201 |
CMSC 202 |
| CS1&2 sequence equivalent to CMSC 201&202 in C/C++. |
CMSC 202 |
| 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.
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 |
- Boolean expressions
- simple data types
- arrays or lists
- functional/procedural
abstraction
|
- 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.
| Concepts |
Skills |
- functional/procedural abstraction
- top-down design
- libraries
- abstract data types
- recursion
- 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.
| Concepts |
Skills |
- object-oriented abstraction
- inheritance
- polymorphism
- exceptions
- generics
- OOP class design principles
|
- composition/aggregation
- constructors
- iterators
- standard Java library containers
- interfaces
|
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 recommend this. 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.
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 shorter than 4 years 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 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 4 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 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.
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.