BGSU Logo
BGSU Home BGSU Academics BGSU Admissions The Arts BGSU Athletics Libraries Offices
Department of Computer Science
Computer Science Home Undergraduate Program Graduate Program Computer Science Faculty Academic Advising Mission and Vision
Small font Medium font Larger font Largest font
Left Bracket CS 335: Data Structures and Algorithms Right Bracket

Course Syllabus

  1. BRIEF REVIEW OF ESSENTIAL PREREQUISITE CONCEPTS
    1. Pointers versus References
    2. Encapsulation of User-defined Data Types in Classes
    3. Public, Private and Protected Members
    4. Parameterized Classes (Template Classes)
    5. Virtual Functions
    6. Interclass Relationships: Abstract classes, base classes, derived classes and friends
    7. Function Overriding
    8. Operator Overloading
    9. Assertions and Exceptions
  2. ESSENCE OF COMPONENT-ORIENTED SOFTWARE CONSTRUCTION
    1. Encapsulation of Interface
    2. Separation of Implementation
    3. Sharing the Interface (via Inheritance)
    4. Sharing the Implementation (via Composition)
  3. CRITERIA FOR EVALUATION OF SOFTWARE COMPONENTS
    1. ECONOMY OF TIME AND SPACE
      1. Formal measures (including big-O)
      2. Empirical measures
    2. OTHER RELEVANT CRITERIA (e.g., simplicity, functionality, ease of adaptation and use)
  4. REUSABLE SOFTWARE COMPONENTS
    1. COMPONENT SPECIFICATION
      1. Pre- and post-conditions
      2. Other kinds of specification (e.g., class invariants, IDLs, axioms)
    2. ADVANCED DATA STRUCTURES: Specification, definition, alternative implementations, applications, adaptation, use and reuse
      1. BASIC STRUCTURES (those that serve as building blocks for more complex structures, either by composition or inheritance): Date and Time, String, Bit Vector, Dynamic Array,Sequence, Singly Linked List, Stack, Queue
      2. DERIVED STRUCTURES: Doubly Linked List, Double-ended Queue, Bag, Set, Heap, Association List, Table, Dictionary (or Map)
      3. POLYLITHIC DATA STRUCTURES: Generalized List (as in Lisp), Binary Tree, Graph, Network
      4. FILE DATA STRUCTURES: Stream, BTree, Block (for storing persistent objects)
    3. RELATED CONTROL ABSTRACTIONS: Recursion, Iteration, Searching, Hashing, Sorting, Balancing, Permuting
  5. SOFTWARE COMPONENT LIBRARIES
    1. C++ Standard Template Library
    2. Others (e.g., GUI libraries, application "frameworks")

webmaster@cs.bgsu.edu