CO311: Modern Programming II

Course Syllabus

Instructor: Jim Millard Phone: 523-9013
Office: n/a E-mail: jim3@millard.org
On-line info: http://teach.millard.org/CO311/
Availability: Before class (approximately 45 minutes) and by appointment
Assistants: Email
Keith Briggs oogyboogy@earthlink.net
GregAdam gregadam@hotmail.com

Text

C++ Program Design, An Introduction to Programming and Object-Oriented Design, 2nd Edition, Cohoon & Davidson, WCB McGraw-Hill, 1998

Course Description

From the University Catalog: This course covers input/output, iteration, selection, repetition, functions, parameters, elementary data structures, and the object-oriented programming paradigm. Prerequisite: CO211 or equivalent.

What is really covered: CO311 picks up where CO211 left off, assuming that the student has a foundation in the scalar data types of C/C++ (int, float, char), the basic control structures (if, switch, while, for) and program flow and redirection (functions with a variety of argument types). It is also assumed that the student has experience writing programs that work with both the standard input/output as well as simple text files. With this foundation, CO311 will approach the advanced topics of object-oriented design from a “top-down” programming methodology. At the same time object design, reuse and inheritance, polymorphism, container objects and the standard template library are introduced, good programming habits and program design will be covered.

What to Expect

Each 3½ hour class meeting will (typically) consist of two parts, a lecture portion and a lab portion. The lecture portion will use the first 1 to 2 hours for question & answer based on previous day’s work, followed by new lecture material and accompanying demonstration. Following a brief break, we will reconvene in a lab classroom for a chance to begin hands-on work with the topics covered. At the end of each lecture session, homework problems for that lecture will be assigned that illustrate that evening’s new material. Typically, the homework will be collected and graded for correctness, but will not count to the semester grade; if there are exceptions, you will be given ample notice. Instead, a portion of the lab period may be used to administer lab “practicals”: tests of your skill at coding a solution to a problem using techniques covered in previous day’s lecture(s). The hope is that the homework—done with instructor consultation and a lower-pressure deadline—will prepare you for the high-pressure, non-consultative practicals.

About Practicals

“Lab Practicals” will be weekly tests consisting of timed periods where you will be expected to solve a single programming problem with the assistance of nothing but your book, notes, and online help text. In that time period, you will be expected to design, code, test and submit a solution to a problem using a synthesis of skills hopefully learned in previous weeks. Unless otherwise pecified, you will work alone on the problem, consulting the book, your notes or the instructor/lab assistant(s) if necessary. Practicals will not be administered the week that the topics were introduced, giving you time to complete suggested assignments and have questions regarding them answered. Practicals will be very similar—but not identical—to homework problems, and administered every week except the first class meeting.

The general timeframe of lecture, homework and practicals be as follows:

Week Lecture Homework Practical
1 Topic A introduced Topic A homework assigned none
2 Topic A reviewed, Q&A on homework
Topic B introduced
Topic B homework assigned Topic A practical
3 Topic B reviewed, Q&A on homework
Topic C introduced
Topic C homework assigned Topic B practical

Optional Help Sessions

In addition to the scheduled regular meeting, an optional help session will be scheduled during weekends. This schedule will be decided by popular vote of all the students, and will be set on the first night of class, with an optional re-scheduling vote taken after the mid-semester break. No new material will be covered in these sessions; their purpose is to give the student additional access to the instructor (and assistants?) for the purpose of better understanding the topics through homework.

Grading

Grades will be based on :

Homework exercises will be assigned at the end of the lecture period, and the lab period will be spent in getting started on the homework exercises under the guidance of the instructor (or lab aides). These homework exercises should be viewed as “practice exams,” since the test given in the following week will be similar in nature (but different in the details) to the exercises. Final answers to the homework exercises will be posted on the class website by the Thursday following the Monday class.

All homework will be accepted and reviewed for correctness at any time during the semester; however, homework that will contribute to your final grade will only receive credit if turned in on or before the due date. Programs will be reviewed in three major areas: compilation, correctness and style. When graded for credit, compilation and style will be worth 25% credit each, and correctness will be worth the remaining 50%. The compilation grade simply indicates the ability of the reviewer to compile, link and execute the submission without modification. If there are simple errors to fix, partial credit will be given; major compilation errors—ones where the reviewer has a difficult time discovering or fixing the error—will result in no credit for that portion. The style portion reflects both objective consistency in source code formatting as well as subjective readability of the algorithm as presented by both good naming convention and use of comments. Correctness of the submission covers all aspects of the solution, from utilization of specified constructs (don’t use a chained if-else-if or complex boolean expression where a switch is requested) and objects (don’t use a float when an int is specified) to whether the program works with all reasonable permutations of sample data (if it works for positive numbers, fails for negative numbers, but should work for all values, partial credit will be given). Written (non-code) answers for design problems will be graded for grammar, spelling, etc. in addition to the content of the answer.

There will be a total of 13 practicals in the semester. Each practical will be worth a total of 100 points, and the final grade in the course will be the straight average of 12 practicals. If a student has been present for all of the 13 practicals, then the lowest score will be dropped and the best 12 scores averaged. If a student has missed a weekly test, then that is score that will be dropped. If a second practical  is missed, it must be made up, and it is the responsibility of the student to contact the instructor and arrange a time for a make-up test. Final letter grades will be assigned according to the following scale:

Grading Scale
Percent Letter Grade

92

A

88.5

A-

85

B+

81.5

B

78

B-

74.5

C+

71

C

67.5

C-

64

D+

60.5

D

Below 60.5% F

Plagiarism

See the Rockhurst College Bulletin for policies regarding academic honesty.
The programs that you submit in this class should essentially be your own (or that of your team, where teams may have been assigned). That means what you type at the keyboard should be from your own notes, not from someone else’s notes or printouts.
Copying a report or program from another student is plagiarism, even if you modify it to disguise the act or add some enhancements. Modifying your program in parallel with another student (teaming up on your own) is not acceptable either, and will not be permitted during practicals. If you and your informal teammate are struggling, then stop typing and go back to the drawing board, away from the computer.
On the other hand, not all forms of cooperation are plagiarism. Discussing a problem with another student is okay; so is designing an algorithm to solve a problem, but that should be done separately from coding it. Helping someone else to correct mistakes in a program is fine, as long as the corrections don’t mean rewriting major chunks of code. Significant help must be acknowledged in writing when the assignment is submitted.
Students caught cheating will receive a 0 on the project and may receive an F for the course, as allowed by the Rockhurst Policy on Academic Honesty.

Incidentals

Class will be meet in R315 on Mondays at 6pm for 1 to 2 hours of lecture and demonstration; following a brief break, we will split up and reconvene in VA310 and VA401 for lab practicals and to begin hands-on work with the topics covered.

The labs have a laser printer and Windows NT v4 machines with—among other things—Microsoft Visual Studio/Visual C++ Version 5. This particular version of the compiler and development environment will be the official environment for the course and all programs will be measured using that particular yardstick, with one exception: The compiler (and its Version 6 sibling) has a known bug specifically related to object scope within for loops; students will be expected to take this into acccount when coding, rather than treating it as “correct.” Students with their own computers will be aided in obtaining/configuring similar setups so they can work off-campus as needed. The labs are regularly open to students outside of scheduled class times (other classes may take place in the labs) for students to work on homework; the University offers at least three labs (R205, R203 and C2) with 24×7 access.

At least one publishing of the text (hopefully the one you acquired) comes with an introductory copy of the Microsoft Visual Studio/Visual C++ Version 6 for use on a personal computer. Using this version of the programming environment at home or work is not specifically encouraged or discouraged, but it is always possible for programs that compile, link and execute correctly in one environment to fail in another. You may also buy educational discount-priced versions by special order of several compilers/development environments in the University Bookstore. Please be certain to test your code in the lab environment if you have any concerns about portability or have had trouble with it in the past.


Comments? Email jim3@millard.org Last updated October 20, 2001