CMSC160:Introduction to Algorithmic Design


Summer 2011(Online)


Instructor:Dr. R. P. Webber

Office location and hours:Ruffner 332; hours by appointment or coincidence during the summer





How to contact me:Email works best.If you are on campus, feel free to stop by my office.However, Iíll be working out of my home as much as Iíll be at school.Thatís one of the benefits of teaching an online course!Iíll be checking email often.


Course description and prerequisite:An introduction to problem solving and algorithmic design using a modern high-level programming language.Topics include:problem solving techniques, high-level structures, subprograms and modularity, simple, aggregate and user-defined types, and fundamental algorithms.Program clarity, good coding style, and effective documentation are stressed.No prerequisites.4 credits.


Text:†† DeFino and Bardzell, Starting Out with C++ Lab Manual, 5/E.Pearson Addison Wesley, 2007.ISBN 0-321-43313-0.


When you look at the manual, you will see it was written to accompany a text by Tony Gaddis.The manual stands on its own; you do not need the Gaddis text to use the manual, and I am not requiring you to buy that text.


You may want more information on C++ than the manual provides.If so, I recommend C++ in a Nutshell by Lishcher (OíReilly, 2003, ISBN 978-0-596-00298-5) as a good reference book.It retails for about $40 and is available at commercial bookstores or online.This book is not required for the course, however.


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. Understand the benefits and drawbacks of classes.
  6. Master the basic syntax of C++.



Course requirements and grading:This is a programming course, and your grade will be based on the assignments that you do.There will be approximately10assignments, counted equally.There will be no tests and no exam.The grade scale is as follows.


90-100 A; 80-90 B;70-80 C;60-70 D;below 60 F




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 12 midnight on that date.Failure to hand it in on time will result in a penalty of 25% for each calendar 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 midnight on the last day of the term for any reason.


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



What to do if you need help:Email me and Iíll be glad to respond.I check email often, at least several times a day.However, I cannot guarantee instantaneous response!Iíve tried various other schemes over the years, such as having students post inquiries on Blackboardís Discussion Board, and they havenít worked.Apparently CMSC students donít want to discuss things; they just want to write code.So email me with problems, and Iíll get back to you as soon as possible.


I will be glad to help you debug a program that does not work.Send me a file with the code, and send me a 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.




What to submit:For nonprogramming exercises, type your answers and submit them.For programming exercises, submit a Notepad or other text editor (not word processor) file with your source code.I will compile and run it on my machine.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.



How to submit:Send your assignments to me


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 of0and grade no further.Make sure it works before sending it to me for grading!



If you submit program via email, donít put the code in the body of the email.Rather, put it in a Notepad file (not a Word file) and send each program as a separate attachment.Similarly, if you are using Blackboardís digital dropbox, put each program in a separate file.


The file name (for programs) must end in the suffix.cpp. It must be a text file.Do not use a word processor (such as Word) to write your program files.Word processors embed all sorts of formatting codes, and the resulting file will not compile.Use a text editor (such as Notepad or Edit) instead.





Tentative Schedule:


Week 1  May 23 Ė 26

Labs 1 - 3:Compiling and running a program, basic syntax, I/O

Week 2  May 30 Ė June 2

Labs 4 Ė 6a:IF statements, loops, functions

Week 3  June 6 Ė 9

Labs 6b, 7; notes:Functions, arrays, binary numbers

Week 4  June 13 - 16

Labs 9 - 11:pointers, strings, classes



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 have to write and run C++ programs for this class.There are two ways to do this.You can use Longwoodís Delphi system, either directly in the labs (if you are on campus) or by Internet access; or you can install C++ on your own computer.


If you decide to use the Delphi system from your home, youíll have to install an access program on your computer.I recommend one called puTTy.It is simple to install and use.Iíll put instructions in Course Documents on Blackboard.puTTy will let you log onto your regular Longwood Delphi account.(If you donít have one, let me know, and Iíll get one for you.)C++ on Delphi is UNIX-based.Itís pretty bare bones and not terribly user friendly, but computer geeks seem to prefer it.Iíll put instructions on how to use it on Blackboard.


You may find it convenient to put a copy of C++ on your PC.(For one thing, youíll have C++ even if the Internet goes down!)I recommend Dev-C++.It is free, and instructions for installing it are in Course Documents on Blackboard.Dev-C++ is more user friendly
than Delphi.

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 Delphi or the Dev-C++ compiler to be acceptable for this class.


No matter which compile you use, you will have to download and modify files for most of the labs.I will put the files on Blackboard and on Delphi.