Teaching‎ > ‎

CISS 350: Advanced Algorithms and Data Structures

Instructor: Ryanne Dolan
 
Advanced concepts of data, storage, organization and retrieval. Topics include multiple-linked lists, balanced trees, graphs, abstract data types, classes and methods, object-oriented programming, searching and sorting. Prerequisite: CISS 245 or CISS 243.

Course Objectives

  • To develop and analyze algorithms to create and manipulate data structures including multiple-linked lists, circular-linked lists, queues, trees including binary trees, B-trees, AVL trees, graphs.
  • To use several of the Standard Template Library Classes.
  • To implement and compare the time and space complexities of different algorithms.
  • To implement data structures using the object-oriented paradigm.
  • To use programming techniques such as divide-and-conquer, backtracking and dynamic programming.

Topics

Projects

There will be several projects assigned throughout the semester as homework.  You may collaborate on projects with your peers, however the work you submit must be your own.  In particular, do not copy-paste code.  Projects will involve writing and submiting:
  • C++ code, including citations and comments
  • input and output data or summary thereof
  • emperical runtime analysis charts showing clear trends
  • background research
  • description and analysis of all algorithms used
All code must be written clearly so as to be understood easily.  This involves comments where necessary.  If you cannot explain your code to me verbally, I will not believe you wrote it.  Additionally, all algorithms must be cited, even if they are straight from the book.
 
Cheating on projects will not be tolerated.  Cheating may involve:
  • having someone else write your code for you
  • copy-pasting code from online
  • emailing your code to a friend
  • submitting charts that you did not create yourself from your own data
  • plagerizing information from books or the web (i.e., missing citations)
However, the following are acceptable:
  • working in groups to better understand the algorithms
  • helping friends debug their code
  • using examples from the book or Wikipedia (cite them!)

Exams

There will be 3 midterm exams throughout the semester covering the following major topics:
  1. Sorting algorithms and linear data structures (e.g. dynamic arrays, lists)
  2. Searching algorithms and basic data structures (e.g trees, heaps)
  3. Advanced data structures and algorithms (e.g. graphs, dynamic programming)
In addition, there will be a comprehensive Final Exam.

Grading

  • 50% Projects
  • 30% Midterms (3 total, 10% each)
  • 20% Final

Texts

  • REQUIRED: Introduction to Algorithms [Hardcover]
    • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Clifford Stein
    • ISBN-10: 0262033844 | ISBN-13: 978-0262033848
    • Publication Date: July 31, 2009
    • Edition: third edition
  • RECOMMENDED: The C++ Standard Library: A Tutorial and Reference [Hardcover]
    • Nicolai M. Josuttis (Author)
    • ISBN-10: 0201379260
    • ISBN-13: 978-0201379266
    • Publication Date: August 22, 1999
    • Edition: 1

Obligitory Statements

Students with documented disabilities who may need classroom academic adjustments or auxiliary aids or services are requred to register with the ADA Cordinator located in AHSC 215.