## Topic outline

- General
- Course Description
### Course Description

**Catalog Description**Storage structures and memory allocations.

**Primitive data structures**. Data abstraction and Abstract Data Types.**Array and record structures**. Sorting algorithms and quick sort.**Linear & binary search**. Complexity of algorithms.**String processing**. Stacks & queues; stack operations, implementation of recursion, polish notation and arithmetic expressions.**Queues and implementation methods**. Dequeues & priority queues.**Linked storage representation and linked-lists**. Doubly linked lists and circular lists.**Binary trees**. Tree traversal algorithms.**Tree searching. General trees**. Graphs; terminology, operations on graphs and traversing algorithms.**Course Objectives**At the end of this course, students will be able to:

*understand*the fundamental data structures and Abstract Data Types,*understand*the main sorting and searching algorithms and recursion,*analyze*the time and space complexity of a given algorithm,*understand and implement*stacks and queues,*process*the linked list and tree structures,*understand the graph terminology and perform basic graph operations.*

- Assignments and their due dates...
- Functions
### Functions

OBJECTIVES

In this chapter you will learn:

- To construct programs modularly from small pieces called functions.
- The common math functions available in the C Standard Library.
- To create new functions.
- The mechanisms used to pass information between functions.
- Simulation techniques using random number generation.
- How to write and use recursive functions, i.e., functions that call themselves.

- Arrays
### Arrays

OBJECTIVES

- In this chapter you will learn:
- To use the array data structure to represent lists and tables of values.
- To define an array, initialize an array and refer to individual elements of an array.
- To define symbolic constants.
- To pass arrays to functions.
- To use arrays to store, sort and search lists and tables of values.
- To define and manipulate multiple-subscripted arrays.

- Pointers
### Pointers

OBJECTIVES

- In this chapter you will learn:
- Pointers and pointer operators.
- To use pointers to pass arguments to functions by reference.
- The close relationships among pointers, arrays and strings.
- To use pointers to functions.
- To define and use arrays of strings.

The Quiz on Pointers is reopen for thosecwho missed it. All students are allowed to resubmit.

- Data Structurs
### Data Structurs

OBJECTIVES

In this chapter you will learn:

- To create and use structures, unions and enumerations.
- To pass structures to functions by value and by reference.
- To manipulate data with the bitwise operators.
- To create bit fields for storing data compactly.

- Structure Examples
- Linked_Lists, Queues and Trees
### Linked_Lists, Queues and Trees

OBJECTIVES

In this chapter you will learn:

- To allocate and free memory dynamically for data objects.
- To form linked data structures using pointers, self-referential structures and recursion.
- To create and manipulate linked lists, queues, stacks and binary trees.
- Various important applications of linked data structures.

- Linked_List_Examples
- Queues
- Binary_Trees
### Binary_Trees

Binary Trees

- Introduction to Trees
- Binary Trees: Basic Definitions
- Traversing Binary Trees
- Node Representation of Binary Trees
- Primitive Functions in Binary Trees

- Introduction to Algorithms
- Analysis of Algorithms
- Example Exam Questions and Answers