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
Telephone: 434-395-2192
Email: webberrp@longwood.edu
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:
Course requirements and grading: This
is a programming course, and your grade will be based on the assignments that
you do. There will be approximately 10
assignments, 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 of 0 and 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
If you decide to use the
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
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
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