Catalog Description:
Continuation of COS220 with emphasis on the development of non-numeric algorithms. Topics include program efficiency, text processing, sorting and data structures (prerequisite: COS220 or permission; C/C++ programming language experience).Instructor info:
Larry Latour, Dept. of Computer Science.Class Meeting Time:
Lab Office: 224 East Annex
Office Hours: 1-3 MWF
Tel: (Lab) 581-2260
Email: larry_latour@umit.maine.edu (firstclass)
MWF, 12-12:50pmRequired Textbook:
115 DPC
Data Structures in C++ Using the Standard Template Library, Timothy Budd, Addison-Wesley, 1998.Platforms:
We will be working with the Microsoft Visual C++ environment, available on our RockNRoll PC network. For those seeking alternatives, the standard template library is also available in the GNU C++ environment in Linux.Topics:
Introduction: Overview of Microsoft Visual C++, Classes and Object-Oriented Programming, and the philosophy behind the Standard Template Library. You are responsible for chapter 1 as part of the COS220 prerequisite of the course. We will begin our class discussions with chapter 2.
Classes and Objects: The class construct, member functions, constructors, and operators, accessor and mutator functions, STL generic algorithms. Chapter 2.
Iterative and Recursive Algorithms: Properties of algorithms, algorithm specification and implementation, proving algorithm correctness. Chapter 3.
Analysis of Execution Time: Algorithmic analysis, Big-Oh notation and algorithmic classification, benchmarking. Chapter 4.
More on Algorithm Correctness: Program proofs, assertions, invariants, program testing. Chapter 5.
The Standard Library Container Classes: Taxonomy of classes, criteria for container selection, iterators. Chapter 6.
Strings and the Pointer Model: The STL string abstraction and simplified implementation, primitive C strings, the C pointer model and dynamic storage allocation, Deadlock modeling, the Ostrich problem, deadlock detection, prevention, avoidance, and recovery. Chapter 7.
Vectors, Templates, and Sorting: The STL vector abstraction and simplified implementation, primitive C arrays, C++/STL templates, merge sort, implementing generic algorithms. Chapter 8.
Lists: The STL list abstraction and simplified implementations, list iterators, variations on lists. Chapter 9.
Stacks, Queues, and Deques, and Frameworks: The STL stack, queue, and deque abstractions and simplified implementations, adapters, depth vs. breadth first searching, frameworks. Chapters 10 and 11.
Sets and Multisets: The STL set abstraction, bit vector sets. Chapter 12.
Trees: Properties of trees, binary trees, tree traversals. Chapter 13.
Sorting and Searching: Divide and conquer algorithms, balanced binary tree searches, tree sort, partition and quick sort. Chapter 14.
Priority Queues: The STL priority queue data abstraction, heaps and heap sort, skew heaps. Chapter 15.
Other Containers: Maps, multi-maps, hash tables, matrices, Graphs. Chapters 17-19.
Grading:
Prelim 1 (1 1/2 hours.) - 20 points.Important Notes on Programming Assignments and Tests!:Prelim 2 (1 hour) - 20points.
Final Exam (1 1/2 hours) - 20 points.
6-8 Programming Projects - 30 points.
Homework and attendance - 10 points.
While you are encouraged to discuss approaches to programming project solutions, these solutions should be your own unless otherwise indicated. If I see evidence of identical projects I will split the grade for that project between the students participating in the work.You are allowed to bring one 3x5 index card of notes (both sides) to each of the three exams. The exams are otherwise closed book.
Last Updated: 9/3/02