CSC241 Syllabus

  1. Course number and name

    CSC241 – Data Structures and Algorithms

  2. Credits and contact hours

    3 Credit Hours

  3. Instructor’s or course coordinator’s name

    Instructor: Dr. Robert Kline, Associate Professor of Computer Science

  4. Text book, title, author, and year

    Data Structures and Algorithms in Java, 3rd edition, Mark Allen Weiss, Pearson, 2011

    Other Supplemental Materials
    The Instructor's website: http://www.cs.wcupa.edu/rkline/csc241

  5. Specific course information
    1. brief description of the content of the course (catalog description)

      Data structures and related algorithms are studied using object-oriented programming, such as Java. Topics include data abstraction, recursion, lists, stacks, queues, linked lists, trees, hashing, searching and sorting algorithms, and the evaluation of algorithm efficiency.

    2. prerequisites or co-requisites

      Prerequisite: CSC240: Computer Science III, MAT151: Discrete Mathematics, MAT161: Calculus I.

    3. indicate whether a required, elective, or selected elective course in the program

      Required course.

  6. Specific goals for the course
    1. specific outcomes of instruction
      • Students will learn to analyze and discuss the runtime properties of algorithms.
      • Students will be able to apply common programming techniques, particularly recursion, to searching, sorting and data structure operations.
      • Students will learn the Java-style data structures as is used in the Java Collections.
      • Students will be exposed to sophisticated programming and analysis techniques used in advanced data structures and in algorithms which use them.
    2. explicitly indicate which of the student outcomes listed in Criterion 3 or any other outcomes are addressed by the course.

      Course addresses Student Outcomes (a), (b), (o).

  7. Brief list of topics to be covered
    • Algorithm analysis using the order language: O, Ω, etc.
    • Lists, Deques, Stacks, Queues via array-based and link-based implementations.
    • Stack-based algorithms for expression evaluation.
    • Binary Trees, TreeSets, TreeMaps.
    • Hashing via open and closed implementations.
    • Abstract classes
    • AVL Trees.
    • Exception throwing and handling
    • Generic classes
    • Sorting algorithms and timing comparisons.
    • Priority Queues and Binary Heaps.