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: 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: 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 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 is CMSC 201H ? A: Students enrolled in CMSC 201H can count this course toward the requirements for UMBC's Honors College and the Computer Science Department's Honors option. The students in 201H, the honors section, attend the same lectures as students in the other sections, but have a different discussion section. In a regular discussion section, the TAs conduct a hands-on lab related to the material covered during lecture. In the honors section, new material will be introduced. The lab assignments must be completed by ALL 201 students, so only students who feel that they will not need regular assistance performing the lab exercises should enroll in the honors section. One goal of the honors section is to expose the students to topics in advanced areas of computer science that are not usually covered in introductory programming courses. 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 Java or C). Concepts Skills o the compilation process o if statements o Boolean expressions o for loops and while loops o simple data types o arrays 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 C, in addition to those listed above for CMSC 104. Concepts Skills o functional/procedural o writing functions, using header abstraction files o top-down design o character and string handling o separate compilation o basic pointer manipulations o libraries o file I/O o dynamic memory allocation o pointers as parameters o abstract data types o structures 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