CSCI 320 Data Structures

W
Shared by: hedongchenchen
Categories
Tags
-
Stats
views:
1
posted:
10/15/2011
language:
French
pages:
4
Document Sample
scope of work template
							CSCI 270                                 Data Structures
Fall 2004


Instructor:   Derek Harter
Office:       JOUR 208
Phone:        903-886-5402
Email:        Derek_Harter@tamu-commerce.edu
Web Page:     http://faculty.tamu-commerce.edu/dharter
Office Hrs:   M-Th 10:00am – 11:00am
              M, W 1:30pm – 2:30pm
              or by appointment


Course Description: This course continues with the concept of abstract data structures and
concentrates on building programming tools which can be used to store and manipulate data.
Topics covered include stacks, queues, linked lists, trees, hash tables, recursion, and analysis of
algorithm efficiency.


Goals: After completion of this course, you should be able to create and use classes to
implement the basic data structures (stacks, queues, linked lists, hash tables, and trees) and to
use classes from the Standard Template Library. You should be able to design and code a
program for application areas in which these data structures would be useful. Given multiple
algorithms to solve the same problem, you should be able to estimate which algorithm would be
more efficient in terms of time and memory required.


Prerequisite:   CSci 152


Text: C++ An Introduction to Data Structures by Larry Nyhoff            (ISBN: 0-02-388725-7)

Source code for the example programs in the text is available from the author’s web site:
http://cs.calvin.edu/books/c++/ds/1e/SourcePrograms/
Any source code from the text that is to be used in an assignment will also be available on my
web page.


Evaluation:
Your grade for the course will be based on the following approximate percentages:
  50% Exams (best 2 out of 3)
  25% Final Exam
  25% Programs (5 - 6)

Format for the exams will typically be approximately half coding (usually small sections of code
such as functions, parts of functions, or calling functions rather than entire programs) and half
analyzing the effects of executing code (describing output, completing diagrams to show values
assigned, short essay, etc). Four exams will be given but only the 3 highest scores you achieve
on the exams will be used.

A study guide will be provided for each exam listing topics to be covered (or omitted) and
recommending selected problems from the text from which the majority of exam questions will be
derived. Answers for these problems are available on my web page.

Letter grades will be assigned according to the following scale:
        A at least 90% of the total points
        B at least 80% but less than 90% of the total points
        C at least 70% but less than 80% of the total points
        D at least 60% but less than 70% of the total points
        F less than 60% of the total points
You must earn an A on your own. Lower borderline grades may be affected by your class
attendance, participation, and behavior; the pattern of your grades; and the class grade
distribution.


For details of program requirements, see the separate handout General Policy for
Programming Assignments.


Input data files, sample programs, and most handouts can be downloaded from my web page:
http://faculty.tamu-commerce.edu/dharter


Makeups: If you miss an exam, that will be the low grade (0 points) which will be dropped. If
there is a possibility you might not be able to take the final exam at the scheduled time, please
contact me as soon as you recognize that you have a problem.

Attendance: You are responsible for everything covered in all class meetings. Class attendance
will be taken at the beginning of each class.

Drops: If you find that you cannot complete the course, please don't forget to drop. If you're
making an obvious effort in the course at the time you drop, you may drop passing no matter
what your actual grade might be. If you just disappear, your grade will be whatever you have
earned at the end of the semester.

Students requesting accommodations for disabilities must go through the Academic Support
Committee. For more information, please contact the Director of Disability Resources & Services,
Halladay Student Services Bldg., Room 303D, (903) 886-5835.
"All students enrolled at the University shall follow the tenets of common decency and acceptable
behavior conducive to a positive learning environment."
(See Student's Guide Handbook, Policies and Procedures, Conduct)
All students should be aware that plagiarism is a serious offense. This is true not only of written
essays but also of work written in artificial computer languages such as C++. Copying code for
assignments from other students or the internet is not allowed. You may discuss general aspects
and strategies of the coding assignments with one another, but you must code the programming
assignments on your own.
TENTATIVE SCHEDULE
Week   Date     #                          Topic / Activity                             Reading
 1     30 Aug   1   Introduction, Preliminary Quiz , and review                  Ch 1
                2   Review of selected 152 topics                                Ch 2-3

 2     6 Sep    1   Stacks: Introduction                                         Ch 4:169-175
                2   Stacks: Designing and building stacks                        Ch 4:175-192

 3     13 Sep   1   Stacks: Applications of stacks                               Ch 4:192-204
                    Programming Assignment #1 Due
                2   Queues: Introduction                                         Ch 5:211-220

 4     20 Sep   1   Queues: Array-based implementations                          Ch 5:220-228
                2   Queues: Applications of queues                               Ch 5:228-239

 5     27 Sep   1   Exam 1
                2   Templates and Standard Containers: Introduction,             Ch 6:243-268
                    Overloading and Templates

 6     4 Oct    1   Templates and Standard Containers: The vector container      Ch 6:268-294
                    Programming Assignment #2 Due
                2   Templates and Standard Containers: Other standard            Ch 6:294-301
                    containers

 7     11 Oct   1   Recursion: Introduction & Examples                           Ch 7:320-336
                2   Recursion: More Examples and Implementation                  Ch 7:336-349


 8     18 Oct   1   Introduction to Analysis of Algorithms                       Ch 7:349-364
                2   Standard Algorithms                                          Ch 7:364-377

 9     25 Oct   1   Lists: Introduction                                          Ch 8:385-398
                2   Lists: Array-based implementations                           Ch 8:398-404


 10    1 Nov    1   Lists: Pointer-based implementations of linked lists         Ch 8:404-450
                    Programming Assignment #3 Due
                2   Lists: The standard list class template                      Ch 8:450-459

 11    8 Nov    1   Exam 2
                2   Other Linked Structures: variants including circular and     Ch 9: 467-475,487-
                    doubly-linked lists                                          498

 12    15 Nov   1   Hash Tables                                                  Ch 9: 482-486
                2   Binary Trees: Introduction and Review of Linear and Binary   Ch 10: 513:525
                    Search

 13    22 Nov   1   Binary Search Trees                                          Ch 10:525-536


                2   Binary Trees as Recursive Data Structures                    Ch 10:536-554
                    Programming Assignment #4 Due

 14    29 Nov   1   Applications of Binary Trees                                 Ch 10:554-567
                2   Exam 3


 15    6 Dec    1   Programming Assignment #5 Due
                2   Review and Study for Final Exam

 16    13 Dec       Final Exam
270 Course Objectives

1. Be able to create and use classes (review from 152).
   a. Be able to create and use friend functions.
   b. Be able to overload functions.
   c. Be able to overload operator functions.
   d. Be able to use default parameters.
2. Be able to use the stack data structure.
   a. Be able to implement a stack as an array.
   b. Be able to write client operations or functions for stack objects.
   c. Understand how stacks are used in the evaluation of infix expressions.
   d. Understand how stacks are used in the implementation of function calls.
   e. Be able to implement a stack as an abstract data type (ADT) class.
3. Be able to use the queue data structure.
   a. Be able to implement a queue as a circular array.
   b. Be able to write client operations or functions for queue objects.
   c. Be able to implement a queue as an abstract data type (ADT) class.
4. Be able to create and use templates.
   a. Be able to write a function template and call the function for different types.
   b. Be able to write a class template declaration and implementation.
   c. Be able to use the STL container classes.
   d. Understand what an iterator is and be able to use one.
5. Be able to design, code, and use recursive functions.
6. Understand algorithm efficiency (Big-O notation): what it means, how it is determined,
   and why it should be considered in effective programming.
7. Be able to use address variables.
    a. Be able to declare a pointer variable, initialize it, and dereference it.
    b. Be able to pass a variable by address using a pointer parameter.
    c. Understand the relationship between pointers and arrays.
    d. Be able to use pointer arithmetic to access elements of an array.
    e. Be able to declare, initialize and use a reference variable.
    f. Be able to use a reference variable as a function parameter.
    g. Be able to use a reference variable as the return data type of a function.
    h. Be able to pass an argument to a function that uses a reference parameter to accept the
       argument’s address.
    i. Understand the differences between reference variables and pointer variables.
8. Be able to use the linked list data structure.
   a. Be able to implement a singly-linked list using dynamic memory allocation.
   b. Understand how to implement a dynamically allocated linked list as an abstract data
       type (ADT) class; be able to create and use destructor, copy constructor, and operator=
       functions.
   c. Be able to implement a doubly-linked list using dynamic memory allocation.
9. Understand what a hash table is and what it is used for.
    a. Understand what a synonym is and why collisions are a problem.
    b. Understand how collisions can be handled.
10. Be able to understand and use a tree data structure.
    a. Be able to implement a binary search tree.
    b. Be able to use inorder, preorder, and postorder traversals.
    c. Understand how trees can be used as indexing systems for large collections of data.
    d. Understand how to implement a dynamically allocated binary search tree as an abstract
       data type (ADT) class.
11. Be able to integrate the use of container classes (user-created or STL) into a moderately
    complex program solution.

						
Other docs by hedongchenchen
Donley PE 10.8-10.19
Views: 392  |  Downloads: 0
DoMN YOG Rego form 2 pilgrims
Views: 206  |  Downloads: 0
Donchian
Views: 0  |  Downloads: 0
Donation Requests 101006f
Views: 0  |  Downloads: 0
Donation_Request
Views: 0  |  Downloads: 0
Donalyn-Miller-Book-list
Views: 0  |  Downloads: 0
don't judge
Views: 0  |  Downloads: 0
Domestic Service Groups
Views: 0  |  Downloads: 0
domainsandmeasuresnovember2012_tcm77-286624
Views: 0  |  Downloads: 0
domainsandmeasuresfinal_tcm77-287743
Views: 0  |  Downloads: 0