Placement in Introductory Computer Science Courses

Revised: June 2004

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

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 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. On the other hand, you can also get an easy "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:  Should I take CMSC 106?

A: The purpose of CMSC 106 was to provide a quick and advanced course in C programming for students who have mastered programming in another language (e.g., PASCAL). CMSC 106 is no longer offered on a regular basis.


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.

You can also check transfer equivalencies for courses at commnity 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 C programming language. Which course should I take next?

A: The answer depends on the programming language:

C with C++ I/O
Many CS1 courses nominally taught using C++ are really taught in C with C++ input/output. Such a course does little with object-oriented programming and concentrates on functions and pointers. In this case you can safely proceed to CMSC 202.

C++ (object-first)
If you've taken a CS1 course in C++ that concentrated heavily on object-oriented programming, you are strongly encouraged to complete the CS1&2 sequence at that institution. If you take CMSC 202 at UMBC, the first part of CMSC 202 will be a repeat introduction to object-oriented programming. On the other hand, you probably missed out on several topics covered in CMSC 201. Furthermore, you are unlikely to have had enough programming experience for CMSC 341. So, jumping ahead to CMSC 341 is not an option. This is one of the worst mismatches with the programming courses at UMBC.

Java
After one-semester of Java, CMSC 202 is probably the right place for you. The difficulty is that Java handles pointers and memory allocation differently. You will need to master C-style pointers on your own --- this is often a confusing concept for students. If you are unable to or do not want to learn about pointers on your own, then you should take CMSC 201. However, much of CMSC 201 course will repeat concepts that you already know.


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 and you are under the gateway requirements, 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 C/C++ 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 Java, and you've had a course in discrete mathematics equivalent to CMSC 203, you should take CMSC 341 next.

You should also be familiar with the command-line interface in Linux and be able to edit, compile and debug programs in Linux (or any variant of UNIX). Consider taking CMSC 121 Introduction to UNIX if you are not familiar with 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 and you are 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 Course
One programming course in any language equivalent to CMSC 104 CMSC 201
One programming course in C equivalent to CMSC 201 CMSC 202
One programming course in C using C++ I/O equivalent to CMSC 201 CMSC 202
One programming course in C++ (object first) equivalent to CMSC 201 Take the CS2 course at the institution where you took CS1
One programming course in Java equivalent to CMSC 201 Option 1: Learn C-style pointers and memory allocation, then take CMSC 202

Option 2: Take CMSC 201
CS1&2 sequence equivalent to CMSC 201&202 in C/C++. CMSC 341, if you've taken CMSC 203 Discrete Structures.

Make sure you understand the gateway requirements!
CS1&2 sequence equivalent to CMSC 201&202 in Java. Option 1: Learn C++ object-oriented programming (including templates) on your own and then take CMSC 341.

Option 2: Take CMSC 202.

Note: CMSC 203 Discrete Structures is a prerequisite for CMSC 341.

Make sure you understand the gateway requirements!
[an error occurred while processing this directive]