CSA 274 Data Abstraction and Data Structures (3 credits)
Catalog description:
Abstract data types and their implementation as data structures using object-oriented programming. Use of object-oriented principles in the selection and analysis of various ADT implementations. Sequential and linked storage representations: lists, stacks, queues, and tables. Nonlinear data structures: trees and graphs. Recursion, sorting, searching, and algorithm complexity.
Prerequisite:
either CSA271 (with C-or above) and MTH 231
or CSA271 (with C-or above) and MTH 222, MTH 251, and ECE 287.
Course Objectives:
- Apply appropriate data structures and abstract data types (ADT) such as bags, lists, stacks, queues, trees, tables, and graphs in problem solving.
- Apply object-oriented principles of polymorphism, inheritance, and generic programming when implementing ADTs for data structures.
- Create alternative representations of ADTs either from implementation or the standard libraries.
- Apply recursion as a problem solving technique.
- Determine appropriate ADTs and data structures for various sorting and searching algorithms.
- Determine time and space requirements of common sorting and searching algorithms.
Success Skills:
- Research paper (3-5 pages)
- Oral presentation (5-20 minutes)
- Team programming assignment
CSA 274 is a third-tier course in the CSA2 "Computer Programming" thematic sequence. Computer software plays an important role in our daily lives: Our mobile phones, laptop computers, online banking, Internet applications such as YouTube, video games and movies, cars, and almost all aspects of daily life are touched by software. In your personal and professional life you will utilize computer software. It is also likely that you will select, or even influence the design of, software that is used in your professional or personal life. This thematic sequence will give you a deep understanding of how software works and is created, its limitations, and its potential. You will be able to read software and therefore be able to make informed decisions when selecting or participating in the design of business, scientific, or information systems that utilize computer software. The CSA2 thematic sequence consists of both of the following introductory computer programming courses. Followed by one of the following courses...
CSA 274 is a course in which you build upon the programming concepts and techniques learned in CSA 174 and CSA 271 to design and implement more software using sophisticated data structures such as lists, stacks and queues. You will expand your problem solving skills by analyzing and using more sophisticated algorithms and programming techniques. |
Learning Outcomes
Below are the learning outcomes for this course. Miami Plan foundation courses and thematic sequence courses address some or all of the Four Principles of Liberal Education: Thinking Critically, Understanding Contexts, Engaging with Other Learners, and Reflecting and Acting. These principles are not simply additional "topics" that are covered during the course. Rather, they are perspectives and ways of reasoning that are essential to all the content of the course. Learning outcomes that address these principles are indicated in the table. Liberal Education Principals (LEP) Key: T=Thinking Critically, U=Understanding Contexts
Learning Outcomes: | LEP |
CSA 274.1: To be able to apply the use of appropriate data structures, abstract data types, and algorithmic methods in problem solving | T |
CSA 274.2: To be able to create implementations of data structures and abstract data types | T |
CSA 274.3: To be able to apply object-oriented principles when implementing data structures and abstract data types | T |
CSA 274.4: Determine time and space requirements of common data structure implementations and algorithms | U |
CSA 274.5: To be able to apply the use of C++ in the development of object-oriented programs | T,U |
Required topics (approximate weeks allocated):
- Review of dynamic variables and principles of object-oriented programming (3)
- ADTs: vector, bag, set, list, stack, and queue (4)
- operations
- various implementations and their comparisons
- traversal algorithms (iterative and recursive)
- varieties of linked list (singly, circular, doubly)
- application of standard class libraries
- Trees (3)
- representations
- traversal algorithms (iterative and recursive)
- binary search trees
- heaps
- B-trees
- Tables (2)
- internal vs. external access
- access methods: hashing and indexing
- Graphs (1.5)
- implementations: adjacency lists and adjacency matrices
- traversals: DFS and BFS
- Sorting/searching and algorithm complexity (.5)
- space and time complexity of basic sorting/searching algorithms
- Exams/Review (1)
