Statement of Course Outcomes


Course Number: CS 284


Course Name: Introduction to Data Structures


Course Coordinator: S. Gabarró


Graduate or Undergraduate Equivalent:

 

Catalog Description: This is a course on standard data structures, including sorting and searching and using the Java language. The topics include: stages of software development; testing; UML diagrams; elementary data structures (lists, stacks, queues, and maps); use of elementary data structures in application frameworks (e.g., JFC); searching; sorting; and introduction to asymptotic complexity analysis. Prerequisite: CS 115 or CS 181. Corequisite: MA 134.


Course Outcomes


  1. [software-lifecycle] Explain the steps in different models of the Software lifecycle. (core:requirements)

  2. [design-techniques] Know how to choose between Top-Down design and Object Oriented Design (core:requirements)

  3. [OODesign] Use and understand the importance of Data Structures and Abstract Data Types in Object Oriented Programming (core:software)

  4. [UML] Use UML diagrams to represent Abstract Data Types. (core:software)
  5. [error-hunting] Find and recognize different types of errors and understand how to avoid them through several techniques. (core:environments)

  6. [JUnit] Use JUnit to help find errors in a program (core:environments)

  7. [debugging] Use different types of debuggers and understand different debugging techniques. (core:environments)(core:problem-solving)

  8. [big-O] Calculate the Big O of diverse algorithms and use it to compare efficiency. (core:problem-solving)

  9. [OOProgramming] Have in-depth knowledge of how inheritance works, including overloading, super classes, and the differences between private, public and protected.(core:software)

  10. [Object-references] Avoid using shallow copy using cloning and know why.(core:software)

  11. [Collections] Use and understand Collection class in Java. (core:software)

  12. [Lists] Implement different types of lists and know which implementation to pick depending on the situation (array-based, linked, doubly-linked, stacks and queues) (core:problem-solving)

  13. [Recursion] Use recursions as a problem solving technique.(core:problem-solving)

  14. [binary-trees] Use and implement Binary Trees and compare ways to traverse trees (core:problem-solving)(core:software)

  15. [other-trees] Compare and implement more advanced binary trees (like Binary Search Trees, Red-Black trees, AVL trees, Huffman coding trees) (core:problem-solving)(core:software)

  16. [heaps] Program max-heaps and priority queues as part of a Java Application. (core:problem-solving)(core:software)(core:requirements)

  17. [sets-maps] Understand what are Sets and Maps, and more specifically how hash tables work.(core:problem-solving)(core:software)

  18. [sorting] Program sorting algorithms including bubble sort, insertion sort, selection sort, shell sort, quick sort, merge sort, heap sort.(core:problem-solving)(core:software)

  19. [programming] Combine different classes together to implement big programming assignments, including a final project that combines some of the data structures studied in class. (core:problem-solving)(core:software)(core:requirements)