UMBC CMSC 202, Computer Science II, Spring 1999,
Sections 0101, 0102, 0103, 0104
Course Description
Textbook:
C++ with Object-Oriented Programming by Paul S. Wang, PWS Publishing.
You may also want to consult these books:
- Learning C++: A Hands-On Approach by Eric Nagler, West Publishing
Company. This is my favorite reference for C++. It is short on narrative
text, but rich with examples. You must study the examples carefully to
benefit from this book, so many students don't like it.
- C++ How to Program by Deitel & Deitel, Prentice Hall. This is a
good book with nice sections on common programming errors, good programming
practices, performance tips, and software engineering observations.
- C++ Primer by Stanley Lippman & Josee Lajoie, Addison Wesley.
This is another good C++ textbook that has been around for a while and is now
in its third edition.
- C++ for C Programmers by Ira Pohl, Benjamin Cummins. A short book
aimed at students already proficient in the C programming language.
- The C++ Programming Language by Bjarne Stroustrup, Addison Wesley.
This is not easy reading, but it is the definitive C++ reference, authored by
the creator of the language.
- Effective C++ by Scott Meyers, Addison Wesley. An advanced book
that will help you fine-tune your C++ programming skills.
- Advanced C++: Programming Styles and Idioms by James Coplien. Another
advanced book to help C++ programmers improve their expertise. Not for
beginners!
Prerequisites:
The course prerequisites for CMSC 202 are CMSC 201 (Computer
Science I) and MATH 151 (Calculus I), or their equivalents. We will assume
that you have mastered the following programming skills in C: writing
functions, using header files, character handling, string handling,
advanced pointer manipulations, using pointers as parameters, file I/O and
structures, linked lists, stacks and queues. In addition, you should
understand the following programming concepts: functional/procedural
abstraction, top-down design, separate compilation, libraries and memory
allocation. If you are unfamiliar with a significant number of these skills
and/or concepts, you should take CMSC 201. This course will not review
material that has been covered in CMSC 201.
Objectives:
The objectives of this course are:
- To learn programming in C++ and object-oriented programming.
- To master some basic data structures, including: linked lists,
stacks, queues and binary search trees.
- To understand the fundamental programming concepts of abstract
data types, recursion, memory allocation and functional parameters.
- To gain familiarity with basic algorithms for searching and
sorting, including: hashing, binary search, Merge Sort and Quicksort.
Grading:
Your grade for this course will be based upon 5 projects, 2 exams and the
final exam. Each project is worth 8 percentage points, each exam is worth 18
percentage points and the final exam is worth 20 points. The remaining 4
points are based upon your attendance in discussion sections. Note that
the due dates for the projects and the dates of the exams are already set
(q.v. the syllabus and project policy handout). Please plan your schedules
accordingly.
Your final letter grade is based on the standard formula:
0 <= F < 60, 60 <= D < 70, 70 <= C < 80, 80 <= B < 90, 90 <= A <= 100
Your grade might be curved upward, but under no circumstance will your
grade be curved downward. Your grade is given for timely work done during
the semester; incomplete grades will only be given for medical illness or
other such dire circumstances.
Attendance and Readings:
You are expected to attend all lectures. You are responsible for all
material covered in the lecture, even if they are not in the textbook. You
should keep up with the assigned readings during the semester. Some reading
material will distributed through the course web page. You are responsible
for the material in the readings, even if they are not covered during
lecture.
You are also expected to attend the discussion sections. New material will
be covered during discussion for which you are responsible. For example,
help with the projects, review for exams and instruction on the use of the
UNIX system will take place during discussion rather than lecture.
Your attendance in discussion sections is worth 4 percent of your grade.
Email Etiquette:
Email is great -- much better than voice mail. If you need to contact the
instructor about this class outside of lecture and office hours,
email is much better than the telephone. You should, however, observe the
following etiquette:
- Do not include your programs unless I request it. Email is good
for lots of things, but it is horrible for debugging. You should use my
office hours, the TAs' office hours or the Help Center for debugging
help.
- Use your real name. I get a lot of junk email (spam). Email from
"Hot Stuff" gets deleted without being read.
- Include a meaningful subject line, something like "CMSC 202
Project 2 question."
- Send email only to the email address indicated on the Contacts page.
- If you ask a good question by email, I will send your question and
the reply to the entire class as well. If you do not want your question
repeated to the entire class, please state so clearly in your message.
- Know the difference between "reply" and "reply to all".
- Know how to include a plain text file in an email message without
sending it as an attachment. It is
rare that a plain text file needs to be sent as an attachment.