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
[software-lifecycle] Explain the steps in different models of the Software lifecycle. (core:requirements)
[design-techniques] Know how to choose between Top-Down design and Object Oriented Design (core:requirements)
[OODesign] Use and understand the importance of Data Structures and Abstract Data Types in Object Oriented Programming (core:software)
[error-hunting] Find and recognize different types of errors and understand how to avoid them through several techniques. (core:environments)
[JUnit] Use JUnit to help find errors in a program (core:environments)
[debugging] Use different types of debuggers and understand different debugging techniques. (core:environments)(core:problem-solving)
[big-O] Calculate the Big O of diverse algorithms and use it to compare efficiency. (core:problem-solving)
[OOProgramming] Have in-depth knowledge of how inheritance works, including overloading, super classes, and the differences between private, public and protected.(core:software)
[Object-references] Avoid using shallow copy using cloning and know why.(core:software)
[Collections] Use and understand Collection class in Java. (core:software)
[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)
[Recursion] Use recursions as a problem solving technique.(core:problem-solving)
[binary-trees] Use and implement Binary Trees and compare ways to traverse trees (core:problem-solving)(core:software)
[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)
[heaps] Program max-heaps and priority queues as part of a Java Application. (core:problem-solving)(core:software)(core:requirements)
[sets-maps] Understand what are Sets and Maps, and more specifically how hash tables work.(core:problem-solving)(core:software)
[sorting] Program sorting algorithms including bubble sort, insertion sort, selection sort, shell sort, quick sort, merge sort, heap sort.(core:problem-solving)(core:software)
[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)