Advanced Programming
Incomplete Course Syllabus
Required Text
Ford, William H. & William R. Topp. Introduction to Computing Using C++ and Object Technology. Upper Saddle River, NJ: Prentice Hall, 1999.
Supplemental Texts
Deitel, H. M. & P. J. Deitel. C How to Program. Second Edition. Upper Saddle River, NJ: Prentice Hall, 1994.
Eckel, Bruce. Thinking in C++. Upper Saddle River, NJ: Prentice Hall, 1999. Available Online at: http://www.BruceEckel.com/ThinkingInCPP2e.html
Satir, Gregory and Doug Brown. C++: The Core Language. Cambridge: O'Reilly and Associates, Inc., 1995.
Goals
Catalog Description: An intensive programming course in C++. Topics covered: problem solving fundamentals; data types; functions; selection and repetition structures; classes; objects etc.
After completing this course a student should be able to write C
programs using:
General: Programming is an art form that can only be effectively learned by practice. This means that to become truly adept at C++ programming you will need to do more than just the assigned programs. In most of the chapters of the Ford and Topp text there are around 30 questions. There are another dozen or so exercises at the end of the chapters in Eckel's Thinking In C++ book.Students are encoraged to look at these problems and either solve them or think about how they could solve them.
Attendance: Students are expected to attend each scheduled class session. If a student needs to miss a class they should notify the instructor in advance. Unexcused class absences will reduce the attendance and participation grade.
Exams may only be made up in the case of an excused absence. Please notify the instructor in advance if you are unable to attend a scheduled exam session.
Academic Honesty: Students are referred to the policy outlined in the student handbook (The Maggie).
Lecture Schedule
| Day | Satir & Brown | Ford & Topp | Topics covered |
| January 28 | Preface, 2 | What is C++ | |
| January 31 | 1 | 1 | What is object-oriented programming? |
| February 2 | 2 | 2-1, 2-2 | I/O, integer objects |
| February 4 | 2-3, 2-4 | Character & real number objects | |
| February 7 | 2-5, 2-6, 2-7 | String objects and C++ operators | |
| February 9 | 1, 6 | 3-1, 3-2, 3.3 | Class descriptions |
| February 11 | 3-4 | UML | |
| February 14 | 3-5, 3-6, 3-7, 3-8 | Class declarations | |
| February 16 | 3-9, 3-10 | Free functions | |
| February 18 | 4-1, 4-2, 4-3 | Logical expressions | |
| February 21 | 4-4, 4-5, 4-6 | Boolean & loops | |
| February 23 | Preface, 1, 2, 6 | 1, 2, 3, 4 | Review |
| February 25 | Preface, 1, 2 | 1, 2, 3, 4 | Exam |
| February 28 | 5-1, 5-2 | Implementing classes | |
| March 1 | 3 | 5-3, 5-4, 5-5, 5-6 | Member functions |
| March 3 | 4 | 5-7 | Inline code, encapsulation |
| March 6 | 6-1, 6-3, 6-3, 6-4, 6-5 | Enumeration | |
| March 8 | 6-2, 6-6, 6-7, 6-8, 6-10 | Switch, For | |
| March 10 | 8 | 6-9, 6-12 | File I/O |
| March 13 | 10 | 7-1, 7-2, 7-3, 7-4, 7-5 | Arrays of objects |
| March 15 | 7-7, 7-8, 7-10 | Searching and sorting | |
| March 17 | 7-11, 7-12 | Strings | |
| March 20-24 | Break | ||
| March 27 | 8-1, 8-2 | Object design principals | |
| March 29 | 8-3, 8-4 | UML | |
| March 31 | 8-5, 8-6 | Recursion | |
| April 3 | 3, 4 | 5, 6, 7, 8 | Exam 2 |
| April 5 | 9 | 9-1, 9-2 | Function Overloading |
| April 7 | 9-3, 9-4, 9-5 | Operator overloading | |
| April 10 | 11 | 9-6, 9-7, 9-8 | Templates |
| April 12 | 10-1, 10-2 | Pointers | |
| April 14 | 7 | 10-3, 10-4, 10-5 | Dynamic memory |
| April 17 | 10-6, 10-7 | Vectors and strings | |
| April 19 | 11-1, 11-2 | Linked list | |
| April 21 | Good Friday (No class) | ||
| April 24 | Easter Monday (No class) | ||
| April 26 | 11-3 | Building linked lists | |
| April 28 | 11-4 | List class | |
| May 1 | 5 | 12-1, 12-2 | Inheritance |
| May 3 | 12-3 | Ordered list | |
| May 5 | 12 | 12-4 | Polymorphism |
| May 8 | 13 | 12-5, 12-6 | Virtual functions |
| May 10 | 14, 15, 16 | Final remarks on Object-oriented design | |
| May 17 | 1 through 16 | 1 through 12 | Final exam at 8AM |
Grading Scale
| Grade | Percentage |
| A | 87 – 100% |
| B | 75 – 86% |
| C | 63 – 74% |
| D | 50 – 62% |
| F | 0 – 49% |
Grade Distribution
| Component | Percentage |
| Exam 1 | 15 % |
| Exam 2 | 15 % |
| Final exam | 25 % |
| Quizzes | 10 % |
| Homework | 30 % |
| Attendance & participation | 5 % |
Exam Schedule
| Week | Exam | Topics covered |
| February 25 | Exam 1 | Booleans, logic, loops, objects, classes, |
| April 3 | Exam 2 | Functions, arrays, searching, strings, recursion |
| May 17 (8 AM) | Final Exam | This exam will be comprehensive, but greater emphasis will be placed on material covered since the last exam. |
Quiz Schedule
The top 8 of 11 quiz scores will be used to figure a student’s quiz grade.
No quiz can be made up after 5 PM on Wednesday following the Friday
the quiz was given. Quizzes can only be made up for excused absences. Make
up quiz may vary from original quiz.
| Quiz Date |
| February 4 |
| February 11 |
| February 18 |
| March 3 |
| March 10 |
| March 17 |
| March 31 |
| April 7 |
| April 14 |
| April 28 |
| May 5 |
Homework Schedule
Some adjustments to the homework schedule may occur during the semester.
There will be a one day grace period on all assignments. Credit for assignments turned in late will be reduced by 2 % for each day past the grace period. Assignments will not be accepted more than 15 days late.
You should always keep an electronic copy of any assignment you turn
in. This is for two reasons: Your instructor could lose what you turn in
and some later assignments are based on earlier assignments and you may
need to start on these before your graded assignment is returned. Keep
copies of graded assignments for later questions about your grade.
| Due Date | Chapter | Exercises in Ford & Topp |
| February 7 | 1 | 21, 22, 34 |
| February 14 | 2 | 17, 24, 26, 39, 50, 53, 66 |
| February 21 | 3 | 16, 20, 23, 33, 37 |
| February 25 | 4 | 15, 19, 24, 27, 35, 45, 59, 60 |
| March 8 | 5 | 13, 18, 25, 34 |
| March 15 | 6 | 16, 23, 24, 30, 52, 59, 61, 72 |
| March 29 | 7 | 27, 28, 40, 41, 49, 66, 73 |
| April 3 | 8 | 15, 20, 34, 35, 39 |
| April 14 | 9 | 17, 23, 24, 30 |
| April 28 | 10 | 21, 23, 30, 33 |
| May 3 | 11 | 16, 20, 28, 29, 33 |
| May 10 | 12 | 10, 12, 19, 22, 23, 26, 27 |
Documentation for Programs
(All programming assignments must include at least the following comment lines)
// TASK: Identify what the entire program
accomplishes
//
// CREATED BY: List author(s)
//
// CREATION DATE:
//
// MODIFICATIONS: List modifications and
date
//
// PRECONDITION: List all requirements
that must be satisfied
// Before program can work. This would
include
// describing input parameters and acceptable
values.
//
// POSTCONDITION: What actions are taken
by the program.
// The status of any output parameters
//
// ALGORITHM: Describe how program accomplishes
the task
#include <stdio.h>
main()
{
}
(If your program includes any function modules, each function needs to be documented )
// PURPOSE: Identify what the function will
accomplish
//
// CREATED BY: List author(s)
//
// CREATION DATE:
//
// MODIFICATIONS: List modifications and
date
//
// PRECONDITION: List all requirements
that must be satisfied
// before the program can work. This would
include
// describing input parameters and acceptable
values.
//
// POSTCONDITION: What actions are taken
by the program.
// The status of any output parameters
//
// RETURN: If the function returns a value,
state its significance.
// For instance: Function returns a 1 to
indicate success and
// a 0 to indicate that it did not find
the desired value.
//
// ALGORITHM: Describe how the function
accomplishes its task.
{
}