| Credit Hours: | 4 |
| Course Coordinator: | Karla Fant |
| Course Description: | Data abstraction with formal specification. Elementary algorithm analysis. Basic concepts of data and its representation inside a computer. Linear, linked, and orthogonal lists; tree structures. Data structures are implemented as data abstractions. Sorting and search strategies. Data management. |
| Prerequisites: | CS 162, Introduction to Computer Science |
| Goals: | To acquaint students with structures used in C++ for the storage and manipulation of data. The concept of data abstraction and the problem of building implementations of abstract data types are emphasized. Both static and dynamic implementations of major structures are presented and the advantages and disadvantages of each are discussed. Structures include lists of several types, stacks, queues, trees, binary trees, B-trees and graphs. Recursion and key transformation (hashing) are examined. Students are encouraged to examine algorithms and to make judgments about the practical and social application of these algorithm concepts to large scale programming projects; the course stresses the importance of quantitative methods in designing software.
Upon the successful completion of this course students will be able to:
|
| Textbooks: | Data Abstraction and Problem Solving with C++, Carrano, Addison Wesley. |
| References: | Optional: Weekly Lecture Notes and Course Slides. |
| Major Topics: |
|
| Laboratory Exercises: | Course requirements consist of homework problems, five programming problems, one midterm exam, and a final exam. Programming problems provide experience building correct implementations of abstract data types.
|
| CAC Category Credits | Core | Advanced |
| Data Structures | 3.0 | |
| Algorithms | 1.0 | |
| Software Design | ||
| Computer Architecture | ||
| Programming Languages |
| Oral and Written Communications: | Every student is required to submit at least one full page with each programming problem that discusses in paragraph form the design considerations and data structures selected. In the design considerations, they are asked to discuss what the main design considerations are, why they are the main design considerations, how they were solved, and why they were solved this way. They are encouraged to think in terms of analyzing the solution! They must answer the following questions in the design writeup:
1) How well did the data structure selected perform for the assigned application?
This material is graded for grammar, spelling, style, technical content, completeness, and accuracy. |
| Social and Ethical Issues: | Students are encouraged to examine algorithms and to make judgements about the practical and social application of these algorithm concepts to large scale programming projects; the course stresses the importance of quantitative methods in designing software. |
| Theoretical Content: | Students learn in CS163 about a wide variety of linear and non linear data structures. Emphasis is placed on learning the advantages and disadvantages of algorithms used to store, delete, search, and sort data using each of the data structures described. Primary emphasis is placed on dynamic memory management considerations and non-linear data structures. |
| Problem Analysis: | See Solution Design Statement. |
| Solution Design: | Students are expected in CS163 to use the syntactic knowledge gained in CS162 to analyze and design software using data abstraction. Students are expected to apply existing knowledge to each of the data structures discussed. Students must be able to determine the tradeoffs between selecting one data structure over another. Their designs must focus on efficiency in terms of memory usage. Optimal software performance is analyzed and stressed throughout the course. |