CS 501 Foundations of Computer Science: Course outline

 

Catalog data   Software design for structuring and manipulating data. Topics include tree structures, graphs, data abstraction and external sorting.

 

Prerequisites   CS 152 or CS 500.

 

Textbook  

Tomassio and Goodrich, Data Structures and Algorithms in Java

Robert Lafore "Data Structures & Algorithms in JAVA",  Waite Group Press, CA.

 

 

 

Instructor: Fatemeh Abdollahzadeh, Ph.D., Professor of Computer Science.

 

            Office            MS303.
            Phone             (860) 832-2714.
            E-mail            abdollah@ccsu.edu
            
  Office hours        
                MW:  4:20 to 4:30 Pm  in Room Ms204 and  5:50 to 7:10 Pm in my office

TR  :  4:00 to 4:25 Pm  in my office , 5:45 to 5 :55 Pm in room MS 204  and      7:15 to 7:40 Pm in my office

 

                                     

Course Objectives:  Having completed this course successfully, the student

should:

   - Be familiar with the use of data structures as the foundational

     base for computer solutions to problems.

   - Become introduced to and investigate the differing logical relationships

     among various data items.

   - Understand the generic principles of computer programming as applied to

     sophisticated data structures. 

   - Comprehend alternative implementations using the differing logical

     relationships and appreciate the significance of choosing a particular

     logical relationship for implementation within real-world setting.

   - Demonstrate the ability to plan, design, execute and document

     sophisticated technical programs to handle various sorts of data

     structures. 

 

Topics in the course and number of lecture hours each:

 

     Introduction to algorithm analysis: pseudo code,

     algorithm efficiency (examples: sorting and searching

     problems), asymptotic and empirical analysis of

     algorithms.                                           

 

     Introduction to data structures. Linear data

     structures: stacks, queues, linked lists and

     sequences (operations, implementations,

     applications.)                                        

 

     Non-linear data structures: binary trees and

     general trees (operations, implementations and

     applications). Binary search trees.                   

 

     Priority queues and heaps: using a heap to implement

     a priority queue. Heap sort.                          

 

     Dictionaries, AVL trees, and hash tables.             

 

     Balanced search trees: (2,4) and red-black trees.

 

     Sets, selection, and sorting: merge and quick sorts.  

 

     Caches and disks: external searching and sorting.     

 

     Non-linear data structures: graphs (representations,

     implementations). Path algorithms: depth-first and

     breadth-first search, transitive closure, topological

     ordering).                                            

 

     Non-linear data structures: weighted graphs. Minimum

     spanning tree algorithms. Shortest path algorithms.   

 

 

     Tests.                                                 3.0 hours

 

     Student presentations.                    3.0 hours

 

Programming assignments.  There will be at least 4 programming assignments and a

research project, which every student must perform individually. There will be a penalty for late submissions, but all assignments must be completed for a student to have a passing grade in the class.

 

Project.  For the research project, a team of 3 students may choose  a topic in graph theory. It is expected that the student will study 2 – 6 references on the topic, develop an implementation of an algorithm(s) involved in a selected application context, and write a research paper summarizing the results. Every team will present their research project in class in a 10-15 minute talk.  The project must also be submitted in an appropriate form (10-15 pages project description, and a program listing) for evaluation.

 

Tests.  There will be two tests during the semester and a final exam.

Grades

         Programming assignments  and project     40 points

         Tests                                  15 points each

         Final exam                          30  points