Catalog Description
Continuation of CS 121 with emphasis on advanced features of the C++ programming language, including pointers, recursion, classes, inheritance, and polymorphism. Introduction to fundamental data structures including linked lists, stacks, queues, and binary search trees. Basic sorting and searching algorithms. Practical experience in the design, development, and documentation of significant object-oriented programs. Prerequisites: CS 121, MA 113 (Precalculus Trigonometry). Co-requisite: MA 171 (Calculus A).
Course Objectives
- In depth presentation of advanced programming using the C++ language including pointers, data structures, and classes.
- Introduction to the principles of Software Engineering including algorithm analysis, software design, and documentation with an emphasis on the importance of software testing.
- In depth presentation of the fundamental principles of algorithm development and program design, development, and testing with a brief introduction to the Unified Modeling Language (UML).
- Introduction to abstract data types (ADTs): queues, stacks, linked lists, binary trees, and graphs.
- Introduction to the implementation of abstract data types in C++.
- Practical experience in these topics by means of independent programming assignments.
General Information
Please read the general guidelines and policies that apply to this course, They are a part of this syllabus. This syllabus is freely available to anyone. Other course materials, announcements, discussions, etc. will be distributed using Angel (angel.uah.edu).
ANGEL Online Access
Communication in this class will be conducted primarily through ANGEL. To access it, go to http://angel.uah.edu. You'll find instructions there about id/password and access information. You can get help from the TAG help desk at http://its.uah.edu/about/gethelp.php or at (256) 824-3333.
Programming Assignments
There will be 4 programming assignments each designed to provide experience in the topics being covered in class. Details of these assignments will be posted on ANGEL and discussed in class.
You will be required to turn in some program planning written work prior to the date that the programs are due. Work turned in MUST meet the following requirements:
- The written documentation (Design Document and Test Plan) must be turned in via ANGEL by the designated date in the syllabus and must be submitted to the appropriate ANGEL drop box at least 24 hours before the program source code. Documentation turned in at the time as the source code will not be accepted. Documentation is worth 40 points out of 100.
- Electronic copies of the source code (i.e., .cpp and .h files) must be submitted via ANGEL by the designated date. Do not turn in any project files, i.e. those with the following extensions: .dsp, .dsw, .ncb, .opt, .plg, .obj, .ilk, .pch, .pdb, or .idb. Program is worth 60 points of 100.
All programming assignments should be handed in on time, as specified in the course schedule.
Assigments will be graded by the instructor through ANGEL, and your graded assignments (with instructor feedback) will be returned to you through ANGEL.
NO hand drawn models OR hand written answers are allowed except on hand-written exams.
Other adaptations of the policy may be announced during the semester, usually as announcements on Angel.
Course Schedule
NOTE: Readings are to be done before the class at which they will be discussed.
DATE | TOPIC |
TEXT READINGS | ASSIGNMENTS |
Thu Aug 21 | Introduction | ||
Tue Aug 26 | Review of C and C++, prep for programs | ||
Thu Aug 28 | Software Engineering | ||
Tue Sep 02 | UML and software modeling | ||
Thu Sep 04 | Software testing | ||
Tue Sep 09 | Pointers | ||
Thu Sep 11 | Data structures and classes | ||
Tue Sep 16 | Abstract data types (ADTs) | Program 1 Documentation | |
Thu Sep 18 | String as ADT | ||
Tue Sep 23 | Standard Template Library (STL) | Program 1 source code | |
Thu Sep 25 | 1st Midterm Exam | ||
Thu Sep 25 | Linked data structures | ||
Tue Sep 30 | Sorted and unsorted lists | Program 2 Documentation | |
Thu Oct 02 | Stacks and Queues | ||
Tue Oct 07 | List Templates in the STL | Program 2 Source code | |
Thu Oct 09 | FALL BREAK (NO CLASS) | ||
Tue Oct 14 | Trees | ||
Thu Oct 16 | Analysis of Algorithms | ||
Tue Oct 21 | Recursion | ||
Thu Oct 23 | Graphs | Program 3 Documentation | |
Tue Oct 28 | Sets | ||
Thu Oct 30 | Hashing | Program 3 Source code | |
Tue Nov 04 | Sorting | ||
Thu Nov 06 | 2nd Midterm Exam | ||
Tue Nov 11 | Templates | ||
Thu Nov 13 | Namespaces | ||
Tue Nov 18 | File Input/Output | Program 4 Documentation | |
Thu Nov 20 | C++ Standard Library | ||
Tue Nov 25 | C/C++ preprocessor | Program 4 Source code | |
Thu Nov 27 | Thanksgiving (NO CLASS) | ||
Tue Dec 02 | |||
Thu Dec 4 | Final Examination 3:00pm - 5:30pm |