Active Outline
General Information
- Course ID (CB01A and CB01B)
- CIS D022C
- Course Title (CB02)
- Data Abstraction and Structures
- Course Credit Status
- Credit - Degree Applicable
- Effective Term
- Fall 2023
- Course Description
- Application of software engineering techniques to the design and development of large programs, including a team project, with an emphasis on data abstraction and structures and associated algorithms: stacks, queues, linked lists, trees, graphs, and hash tables. This course also covers recursion and advanced sorting algorithms.
- Faculty Requirements
- Course Family
- Not Applicable
Course Justification
This course is a major preparation requirement in the discipline of Computer Science for at least one CSU or UC and it is CSU and UC transferable. This course belongs on the Network Programming A.A. degree. The course is compliant with the standards of the Association for Computing Machinery and is part of the core curriculum for all Engineering and computer science students.
Foothill Equivalency
- Does the course have a Foothill equivalent?
- No
- Foothill Course ID
Formerly Statement
Course Development Options
- Basic Skill Status (CB08)
- Course is not a basic skills course.
- Grade Options
- Letter Grade
- Pass/No Pass
- Repeat Limit
- 0
Transferability & Gen. Ed. Options
- Transferability
- Transferable to both UC and CSU
C-ID | Area(s) | Status | Details |
---|---|---|---|
COMP | Computer Science | Approved | (CIS D022C or CIS D22CH) & (CIS D022B or CIS D22BH or CIS D035A or CIS D036B) required for C-ID COMP 132 |
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.0 |
Course Student Hours
- Course Duration (Weeks)
- 12.0
- Hours per unit divisor
- 36.0
Course In-Class (Contact) Hours
- Lecture
- 48.0
- Laboratory
- 18.0
- Total
- 66.0
Course Out-of-Class Hours
- Lecture
- 96.0
- Laboratory
- 0.0
- NA
- 0.0
- Total
- 96.0
Prerequisite(s)
CIS D022B, CIS D22BH, CIS D035A or CIS D036B
Corequisite(s)
Advisory(ies)
Elementary algebra or equivalent (or higher), or appropriate placement beyond elementary algebra
Limitation(s) on Enrollment
(Not open to students with credit in the Honors Program related course.)
Entrance Skill(s)
General Course Statement(s)
Methods of Instruction
Lecture and visual aids
Discussion of assigned reading
Discussion and problem solving performed in class
Quiz and examination review performed in class
Homework and extended projects
Collaborative learning and small group exercises
Collaborative projects
Laboratory discussion sessions
Assignments
- Required reading from the text
- Programs: 5-8 individual programming assignments implemented in C++ or Java which include design as well as coding, debugging, and testing, covering the Lab Topics specified in X. below.
- Team Project: Design and development of a large program with three or more programmer-written files.
Methods of Evaluation
- Successful completion of programming assignments with output verifying program correctness; use of structured design principles, documentation, programming style, efficiency, and testing methods.
- Evaluation of the team project for correctness, use of structured design principles, documentation, programming style, and efficiency.
- One or more examinations requiring some algorithm development. Evaluation based on correctness.
- A comprehensive final examination requiring some algorithm development
Essential Student Materials/Essential College Facilities
Essential Student Materials
- None.
- Access to a computer laboratory with Java and C++ programming environments available
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Carrano, Frank M. | Data Structures and Abstractions with Java | Pearson | 2019/5th Edition | 978-0-134-87266-7 |
Carrano, Frank M. | Data Structures & Problem Solving with C++ | Pearson | 2017/7th Edition | 978-0-134-47840-1 |
zyBooks | Data Abstraction and Structures | Wiley | 2022 | 979-8-203-96644-5 |
Examples of Supporting Texts and References
None.
Learning Outcomes and Objectives
Course Objectives
- Create programs which implement the stack data structure.
- Create programs which implement the queue data structure.
- Create programs which implement complex linear lists.
- Create recursive algorithms and relate efficiency to uses of recursion.
- Create programs which implement the binary tree, binary search tree, AVL tree, priority queues, and binary heaps data structures.
- Create programs which implement hashed tables.
- Demonstrate knowledge of advanced sorting algorithms and discuss the usage and relative advantages of various sorts and their efficiency.
- Demonstrate knowledge of external sorting algorithms.
- Create programs which implement the graph data structure.
- Apply software engineering principles including structured programming, object-oriented programming, and abstract data types.
- Design and implement a team project with multiple classes in multiple files.
- Demonstrate usage of templates/generics.
CSLOs
- Read, analyze and explain data structures programs.
- Create and analyze efficiency of data structures algorithms, code, document, debug, and test large data structures programs using appropriate design methodology incorporating advanced programming concepts.
Outline
- Create programs which implement the stack data structure.
- Implementation by linked lists.
- Applications
- Create programs which implement the queue data structure.
- Implementation by linked lists.
- Applications
- Create programs which implement complex linear lists.
- Rings
- Doubly linked lists
- Multilists
- Create recursive algorithms and relate efficiency to uses of recursion.
- The concept of recursion
- Recursive mathematical functions
- Simple recursive algorithms
- Divide-and-Conquer strategies
- Recursive backtracking
- Implementation of recursion using stacks
- Create programs which implement the binary tree, binary search tree, AVL tree, priority queues, and binary heaps data structures.
- General trees
- Binary trees
- Binary search trees
- AVL trees
- Applications
- Binary heaps
- Priority Queues
- Create programs which implement hashed tables.
- Hashing algorithms
- Clustering and collision resolution
- Selecting hash functions
- Demonstrate knowledge of advanced sorting algorithms and discuss the usage and relative advantages of various sorts and their efficiency.
- Shell Sort
- Heap Sort
- Quick Sort
- Demonstrate knowledge of external sorting algorithms.
- Merge
- Natural
- Balanced
- Polyphase
- Create programs which implement the graph data structure.
- Basic concepts
- Spanning trees
- Minimum path trees
- Depths first and breadth first traversals
- Apply software engineering principles including structured programming, object-oriented programming, and abstract data types.
- The abstract data type
- Cohesion and coupling
- Principles of object-oriented programming and structured programming
- Type parameters and parameterized types
- Modules in programming languages
- Strategies for choosing the right data structure
- Working in teams
- Design and implement a team project with multiple classes in multiple files.
- Organizing a multiple-file project
- Project building
- Demonstrate usage of templates/generics.
- Class templates
- Function templates
Lab Topics
- Design algorithms, code solutions, debug and test programs employing the stack ADT.
- Design algorithms, code solutions, debug and test programs employing the queue ADT.
- Design algorithms, code solutions, debug and test programs employing complex ADT linked list structures, such as doubly linked lists, multi-linked lists, circularly linked lists.
- Design recursive and/or iterative algorithms, code solutions, debug and test programs employing ADT binary trees, binary search trees, AVL trees, priority queues, or binary heaps.
- Design algorithms, code solutions, debug and test programs employing hashed tables.
- Analyze and compare simple and advanced sorting algorithms, such as Shell Sort, Insertion Sort, Heap Sort, Selection Sort, Quick Sort.
- Design algorithms, code solutions, debug and test programs employing graphs.
- Demonstrate the building and running of a large program with three or more programmer-written files.