Jan 8 - Computer Science

advertisement

COSC 2336 Spring 2007 Data Structures and Algorithm

Analysis

Outcomes:

The student will be able to:

1. Create useful software architecture documentation.

2. Develop correct and efficient programs to implement software.

3. Debug implemented software in a proficient manner.

4. Demonstrate familiarity with standard searching and sorting algorithms and linear and non-linear structures.

5. Define and distinguish among frequently used discrete structures such as lists, trees, and graphs to computer science problems.

6. Use elementary concepts of combinatorics, probability, and statistics to analyze and evaluate the efficiency of algorithms.

7. Demonstrate basic understanding of asymptotic notations and time complexity.

8. Design efficient algorithms and compare competing designs.

9. Demonstrate basic understanding of some design approaches such as greedy algorithms, dynamic programming and divide-and-conquer.

General Information:

TEXTS: COSC 2336 Example Booklet (Kampus Korner Bookstore) (required)

Object Oriented Data Structures using Java (2 nd ed), Dale, Joyce &

Weems (recommended)

OFFICE HOURS : 9:00 – 10:00 & 11:00 – 12:00 MWF (office 75 Maes)

EMAIL: foremanml@my.lamar.edu

GRADING : 7 programs 1/4

Test 1 1/4 Fri, Feb 16

Test 2 1/4 Fri, Mar 30

Final exam 1/4 Mon, May 7 (8:00 -10:30)

LATE PROGRAMS :

Programs are due at the beginning of class on the date specified. If a program is turned in late on the date due, but before I leave for the day, 10% will be taken off. From then until the beginning of the next class meeting, 20% will be taken off. Many program assignments will have an optional extra credit component, but extra credit cannot produce a homework average higher than 100%.

Furthermore, extra credit will not be added to any program that would have earned a grade below 70% (before adding the extra credit or subtracting for lateness. At the risk of belaboring the obvious, it is foolish to turn in nothing at all.

MAKE - UP TESTS:

Except in special circumstances, NO MAKE-UP tests will be given.

The final will be counted twice if you miss a test.

CURVE:

No curve is guaranteed. If I feel a curve is justified at the end of the semester, then one will be applied to your final average. The curve will NEVER be larger than 10 points and is typically a point or two.

OTHER DATES OF INTEREST :

Feb 23 is the last day to drop or withdraw with a Q/W.

(Your first test will be given on or before this day.)

Apr 3 is the last day to drop or withdraw.

(Your second test will be given on or before this day.)

THIS BOOKLET ON DISK OR ON THE WEB :

I will have most of these files placed on the internet under my section of cs.lamar.edu

. It should be done during the first couple of weeks of the semester. Any of these files can be downloaded from there. There are also other useful files particularly in the C++, Java, coding , debugging , and unix / linux directories that you might want to look at. Alternatively, if you bring me a blank

CD, I can burn you a copy of everything.

PROGRAMS :

The example programs in this booklet were tested in Netbeans 5.0 and Microsoft

Visual C++ (v. 6.0). Most have also been tested on Galaxy a LINUX system.

Your programs will be written in Java and must be run on a UNIX or LINUX platform.

You will be given ids to GALAXY or another LINUX platform. You will also be able to request ids on Gandhi or one of the other UNIX boxes if you want one.

Seven(7) program assignments will be made. Programs will be due approximately every two weeks. The due dates are given on the calendar page.

WHAT TO TURN IN:

You will turn in a printout of a SHELL SCRIPT based upon the list below. You may also be asked to include a flowchart or other algorithm. Do not fold the printout. Write your NAME, SECTION, and the PROGRAM NUMBER and

PROGRAM NAME on the front page in large clear letters. Your name must be written as it appears on my role.

Source code

Compilation command

Input data file(s) (if present)

Run command

Program execution

Output file(s) (if present)

COLLUSION ON ASSIGNMENTS :

One of the files in this booklet is titled Guidelines for Grading Homework

Assignments . It describes how your programs will be graded.

In addition, if I feel that two programs are too similar, the grade given both programs will be zero (0). This imposes a burden on you that you not allow others to copy your programs. This may mean not throwing old versions away at school or allow others access to your directory. Furthermore, you are not to obtain assistance from others on how to write the algorithm for the solution of a program. You may ask for help on removing a syntactic or semantic error from a program already written.

ABSENTEEISM :

A seating chart will be made and checked at the beginning of each class period.

A student who is tardy or absent without excuse more than 4 times will be penalized three(3) points for each additional absence or tardy.

Accommodations for students with disabilities will be made as needed though the university office that provides this assistance.

COSC 2336 Topic Outline

Data Structures & Algorithm Analysis

I. Linear Structures

A. Stack

B. Queue

C. SLL - Single Linked List

D. DLL - Double Linked List

II. Implementation Schemes for Data Structures

A. Language Primitive (Show variations among languages.)

1. Integer

2. Real

3. String

(Static, Dynamic, and Hybrid)

4. Set

5. Record, Struct, Heterogeneous Aggregate

6. Array, Homogeneous Aggregate

7. Others, (Stack, List, Logical, Complex, etc.)

B. Programmer Defined

1. Static with Implicit Pointers

(Typically using an array.)

2. Dynamic with Explicit Pointers

(Typically using dynamic variables.)

3. Static with Explicit Pointers

(Typically using an array of structs.)

III. Non-Linear Structures

A. MLL - Multi-Linked List

B. Binary Tree

1. PreOrder, PostOrder, InOrder, and other Traversals

2. Binary Search Tree (BST)

3. Expression Tree

4. Heap

C. M-ary Tree

D. M-ary Tree implemented as a binary tree

E. Height Balanced Binary Search Tree (AVL Tree)

F. B tree, B+ Tree

G. Game Trees

H. Graphs

1. Directed

2. Undirected

3. Implementations a. Connectivity Matrix b. Weighted Connectivity Matrix c. N union E as an MLL d. Array-Array and Array-List combinations e. Effective storage for sparse matrices

IV. Internal Sorting

A. Bubble, Selection, Insertion, etc.

B. BST Sort

C. Heap Sort

D. Quick Sort with variations

E. Bin or Radix Sort

F. Address Calculation Sorting Techniques

G. Merge Sort

H. Shell Sort

(if time permits)

V. External Sorting

A. Merging Sorted Files

B. External Merge Sort

VI. Introduction to Algorithm Analysis (Primarily computation time, but also other resources such as memory in some cases. )

A. Worst Case Analysis - Upper Bound (Big Oh)

B. Best Case Analysis - Lower Bound (Big Omega)

C. Average Case Analysis - Expected Value (Called Big A)

VII. Introduction to File Structures (if time permits)

A. Sequential Files

B. Indexed Files

C. Indexed Sequential Files

D. Inverted Files

VIII. Searching

A. Linear Search

B. Binary Search

C. Binary Search Tree

D. Hashing and Symbol Tables

1. Open or Bucket Hashing

2. Closed Hashing

(Linear Quotient)

IX. Algorithmic Styles and Techniques

A. Recursion

(Direct and Mutual)

B. Divide and Conquer

C. Greedy Method

D. Exhaustive Search

E. Backtracking

F. Dynamic Programming

G. Two-Opting

H. Intro to Stochastic and Event Driven Simulation

X. Specific Examples of Related Problems

A. Parsing simple expressions to produce an expression tree

B. Evaluating postfix expression using a stack

C. Game Trees (Alpha-Beta Pruning)

D. Traveling Salesman Heuristics

E. Graph Algorithms such as Dijkstra ’ s Algorithm

F. Huffman Algorithm

G. Optimal Binary Search Tree

H. Minimum Spanning Tree

XI. Notes

1.

The grouping above is logical and does not coincide with the order in which the material is taught.

2.

The concept of a heap is saved until the heapsort is discussed.

3.

The BST sort is used as a tree example before the bulk of the other sorts are discussed.

4.

The algorithm analysis material is discussed as needed, primarily during the discussion of sorting and searching techniques.

5.

As recursion techniques are particularly useful for tree algorithms, recursion is primarily discussed in conjunction with this topic. Some of the possible applications of recursion to linear structures are also discussed.

6.

Program assignments are designed so as to require the student to implement data structures using all three basic implementation schemes.

7.

Program assignments are designed to implement at least: SLL and/or DLL, Stack and/or Queue, Binary Tree, MLL, Recursion, and Graph.

COSC 2336-02

Monday

Jan 8

Jan 15 Holiday

Jan 22

Jan 29

Feb 5

Feb 12

Feb 19

Feb 26

Mar 5

Mar 12 Holiday

Mar 19

Mar 26

Apr 2

Apr 9

Apr 16

Apr 23

Apr 30

Last Class

.

Late HW accepted up to 5:00.

Last Class Dat

8:00 – 10:30

20

27

6

13

20

30

6

13

Tue

9

16

Class Schedule (8:00 MWF)

Spring 2007

Wednesday

10

17

Thu

11

18

Friday

12

First Class Day

19

23

24

25

26 Pg1 Due

31

7 Pg2 Due

14

Feb 1

2

8

15

9

16 Test 1

21 Pg3 Due

28

7 Pg4 Due

14 Holiday

21

15

22

22

Mar

1

8

29

23 First Drop

2

9

16 Holiday

23

30 Test 2 27

3

Last

Drop

10

17

28 Pg5 Due

4

11

18

24

May 1 dead day

25

2

5

12

19

26

3

6 Holiday

13 Pg6 Due

20

27 Pg7 Due

4

8

9

10

11

Download