University of Maryland/Asian Division


Term 2
25 Oct - 18 Dec 2004
TTh 1645-1930

David Wills

taking CMIS 102 and 140 in consecutive terms is recommended. This course concentrates on structured programming and introduces object-oriented programming concepts. It covers detailed algorithm design, the implementation of simple data structures and complex data elements such as arrays, structures, and enumerated types. It introduces object-oriented constructs such as classes and encapsulation. The discipline, methodologies, and techniques of software development are studied. There will be programming assignments in C++.

102 is a real prereq. You are expected to know the material covered in it for this class. If you don't know the material from 102 you won't be able to manage this course. Specifically, chapters 1-6 of the textbook are expected to have been thoroughly covered in 102.

COURSE DESCRIPTION: This course is the first full course in programming. The course provides the student with the opportunity to design solutions to problems and implement those solutions by writing computer programs in the C++ programming language. The course examines the essential features of C++ for writing programs to solve complex problems.

COURSE OBJECTIVES: On successful completion of this course, you will be able to:

  1. understand what computer programming is about by having done lots of it.
  2. design algorithms that represent solutions to a given problem.
  3. implement an algorithm by writing, testing and debugging programs in C++.
  4. Topics covered include:

Programming and Problem Solving with C++ 3rd Edition, by Dale, Weems, and Headington.

We will cover chapters 9, 7, 8, 10, 11 (part), 12, and 13 in the textbook (see the schedule below). Chapters 1 thru 6 are assumed to have been covered in CMIS 102. You are strongly encouraged to work the exercises at the end of the chapters.
Note: you should already have the textbook, since it's the one used in 102.
All the text's programs are available from the publisher in softcopy at

In class, we'll use a set of notes that I will give you. The notes are available online at my web site.

You'll need access to a C++ compiler. UMUCAD computer labs will have a variety of C++ compilers installed, including VC++ and DevC++. You should probably already have a compiler from your 102 class.

A very good free Windows C++ compiler and IDE is Dev-C++ from
See my class web site for my setup tips for Dev.
I recommend this compiler, if you use MS Windows.
Why pay (and pay and pay for each "upgrade") $100-$300 for Microsoft's VC++? OK, it's your money, do what you want. The textbook comes with a student version of VC++. Dev is easier, simpler, and nicer.

Students who are interested in computing in general and CMIS in particular are encouraged to use Linux Academic computer science is almost wholly done using the Unix operating system. I don't think MS-Windows is an appropriate OS for computer science in general, but it's sufficient for this class. Linux has everything you need for computing, and it's free and open source. The GNU C++ compiler is excellent, and free.
I can lend you a Linux CD-ROM to install on your own computer.

Only use the standard functions as defined in the textbook. Don't use functions or header files such as conio.h that are specific to the compiler because it probably won't work elsewhere, in particular when I grade your programs. This means no clrscr() function! Pet peeve of mine.

EVALUATION: Your final grade will be based on two exams and four homeworks (programs) in the following proportions:

Homework                40%
Midterm Exam	  	30%
Final Exam	  	30%

According to the UMUCAD catalog the grade of 'A' means 'Outstanding', 'B' is 'Good', 'C' is 'Satisfactory'. Grades are curved, based on the class average. There is no fixed grading of 90-100 is an A, etc. Significantly above the average is A-ish, above the average or maybe just above or at the average is B-ish, etc.

Note that the exams are a major part of your grade. You must study for them! Doing the programs is not enough to get a very good grade in this class. Work as many exercises in the textbook's chapters as you can; the textbook is very good for self-study.

Examination: The exams are intended to measure your knowledge and ability with regard to the objectives of the course. Exam will be a combination of objective ("what is the value/output of this") and short programming exercises ("write a function with such and such arguments that does this and that"). I will give you a practice exam before the real one so that you have a strong idea of what it will be like.

To receive full credit, assigned work must be submitted on the scheduled due dates. Late assignments will be reduced one letter grade per every few days late. This is to "strongly encourage" you to keep up with the work. You will rapidly fall behind if you slack off. Plagiarized assignments, whether copied in whole or in part, will receive a grade of 0 (zero) for all parties concerned. Do not give or show anyone your programs, in either soft or hard copy. Cheaters, like thieves and liars, are low life forms and will not be tolerated. Programming can only be learned by hard work and hard thinking.

Homework can often take a shockingly large amount of time to complete due to the creativity required and the precision with which one must specify an algorithm, a precision that is usually not needed in other activities. And unlike other activities, the computer enforces rigorous thinking by immediately presenting us with the errors of our thought process.

Week    Topic/Readings/Assignments

 1      Chapters 1-6  Review from CMIS 102

 2      Chapter 9:  Switch, do, and for statements.

 3      Hmk #1 due.
        Chapter 7,8: Functions

 4      Chapter 12: 1D arrays
        Hmk #2 due

 5      Midterm exam
        Chapter 12: 2D arrays

 6      More arays and functions with arrays.
        Hmk #3 due

 7      Chapter 11: Structures

 8      Chapter 11: arrays of structures
        Hmk #4 due
        Final exam