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.
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
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