CMSC160:  Introduction to Algorithmic Design I


Fall 2008


Instructor:  Dr. R. P. Webber


Office location and hours:  Ruffner 332.  MF 2:00 – 3:30, T 1:30 – 3:00, and by appointment or coincidence.


Telephone and email:  395-2192;



Course description and prerequisite:  An introduction to problem solving and algorithmic design using a modern high level language.  Topics include problem solving techniques, high level structures, subprograms and modularity, user defined types, and fundamental algorithms.  No prerequisite.  3 credits. 



Text:   Malik, C++ Programming, Fourth Edition.  Course Technology, 2009.



Course objectives:

  1. Utilize appropriate control structures.
  2. Successfully implement good program design.
  3. Make appropriate use of local and global data.
  4. Understand and use addressing techniques.
  5. Master the basic syntax of C++.



Course requirements and grading:


            Three tests and a composite quiz grade (drop lowest of those 4) ………11% each 

            Assignments .………………………………………………………………… 55%

            Final exam …………………………………………………………………… 12%


The grade scale is as follows.  90-100 A; 80-90 B;  70-80 C;  60-70 D;  below 60 F



Quizzes:  Given frequently (but not every day), quizzes are given at the start of the period.  They are intended to see if you have read the material, paid attention in class, and done the simple exercises in the text.  Quizzes are always short, and they are open book and notes.  Often they are taken directly from the homework.  Quizzes that are missed for any reason cannot be made up.  You may miss one quiz without penalty, but you will be assigned a grade of  0  on any additional quizzes that you miss.



Assignments and working with others:  Assignments will consist of nonprogramming and programming exercises.  It is OK to work with others on the logic of a program and to help others debug a program or understand an error message.  Everyone should contribute approximately equally to the work.  If somebody tries to freeload, don’t work with him or her, and tell me if the person persists.  Furthermore, everyone is to write up his or her own solutions.  I don’t want to see duplicate code or solutions.  In general, it’s all right to brainstorm about how to do an assignment, but the details of carrying it out are to be done individually. 


Each assignment will have a due date.  It is due by the start of class on that date.  Failure to hand it in on time will result in a penalty of 25% for each class day it is late.  No excuses will be accepted for late programs.  I’m sorry, but such things as computer failure, sickness, etc., are not excuses!  I strongly urge you not to wait until the last minute to submit your assignments.  No assignment will be accepted after the last day of the term for any reason.


Click here to see the rubric for grading programs.  Nonprogramming exercises will be graded on a partial credit basis.



What to submit:  For nonprogramming exercises, type your answers and submit them on paper.  For programming exercises, submit paper copy with your source code, documentation, and output.  Examples will be shown in class.  For all exercises, make the first line a comment with your name, the assignment number, and (for programs) a brief account of what the program is supposed to do.


Make sure that programs compile, run, and produce correct output before submitting them.  As stated in the grading rubric, if a program doesn’t compile, I assign it a grade of  0  and grade no further.  Make sure it works before sending it to me for grading!


Of course, I will be glad to help you debug a program that does not work.  Bring me a file with the code along with a brief description of what happens when you try to compile or run it.  Do this before the due deadline so that you’ll be able to correct it before it is due.



Attendance:  Attendance is expected at all classes.  Makeup tests will be given only with a doctor’s or school excuse.  Makeup tests are always more difficult than regular tests, regardless of the reason for absence.  Homework or programming assignments that are late for any reason, including excused absences, will be penalized  25%  per class day late.



Tentative Schedule:


Week 1  Aug 25 – 29

Ch.1:  Introduction; history; get C++ compiler running

Week 2  Sep 3 – 5

Ch. 2:  Data types; primitive operations

Week 3  Sep 8 – 12

Ch. 3, 4:  Basic I/O; Boolean types and operations

Week 4  Sep 15 – 19

Ch. 4:  Decision statements; review

Week 5 Sep 22 – 26

TEST; Ch. 5:  Loops

Week 6 Sep 29 – Oct 3

Ch. 5:  Loops

Week 7 Oct 6 – 10

Ch. 6:  Functions

Fall Break


Week 8 Oct 15 – 17

Ch. 7, notes:  Parameters; binary numbers

Week 9 Oct 20 – 24

Ch 8:  Arrays

Week 10  Oct 27 – 31

Review; TEST

Week 11  Nov 3 – 7

Ch. 8:  Arrays 

Week 12  Nov 10 – 14

Ch. 9:  Applications of arrays

Week 13  Nov 17 - 21

Ch. 9,10:  Applications; records 

Week 14  Nov 24

Ch. 11:  Classes



Week 15  Dec 1 – 5

Review; TEST; review

Thursday, Dec 11

EXAM 3:00 a.m. – 5:30 p.m.



Honor Code:  The teacher subscribes to the Longwood College Honor System, which, among other things, assumes you do not cheat and that you take responsibility to see that others do not.  Infractions will be dealt with harshly.  A student who is convicted of an Honor Code offense involving this class will receive a course grade of F, in addition to penalties imposed by the Honor Board.


Computer:  You will be given an account on Longwood’s LINUX system.  You may do your programs and assignments on this system.  You may want to put a copy of C++ on your PC.  I recommend Dev-C++.  It is free, and instructions for downloading will be given in class.  You may use other versions of C++ if you wish, but you will not be able to get help from me in implementing them.  Programs must run correctly on the LINUX system or Dev-C++ to be acceptable for this class.