Overview

Announcements

Syllabus

Lectures

Projects

Exams

Laboratory

E-mails

 

Syllabus for ICOM 4035 – Data Structures

Fall 2001

 

Professor:

            Dr. Manuel Rodríguez Martínez

            Office: T-212

            Phone: (787)-832-4040, x-3023

            E-mail: manuelr@acm.org

            Office hours: TBA, or by appointment.

 

Teaching Assistant:

            Enna Z. Coronado

            Office: TBA

            E-mail: TBA

            Office hours: TBA

 

Course Description:

Introduction to the design, analysis and implementation of data structures and sorting algorithms, using object-oriented programming techniques. Study of computational complexity and Big-O notation. Design and implementation of abstract data types and containers classes: Vector, Bag, List, Set, Sequence, Map, Stack, Queue, Priority Queue, Tree, and Graph. The list of concrete structures to be studied includes: dynamic arrays, linked lists, Bit vectors, binary trees, binary search trees, AVL trees, B-trees, heaps, hash tables, adjacency matrices and adjacency lists. Recursion, pointers, templates and inheritance will be used extensively. This course is often called Computer Science II (CS2) in many prominent U.S. universities.

Prerequisite:               ICOM 4015 or equivalent. Proficiency with C++ and UNIX.

 

Time and Place:

            Lecture:            Tuesdays and Thursdays, 3:00 PM – 4:20 PM, S-230

            Laboratories:   

Section 156: Wednesdays, 12:30 PM – 3:20 PM, S-121

                                    Section 157: Fridays, 8:30 AM – 11:20 AM, S-121

 

Credits:                       3 credits

 

Web Page:                  http://www.ece.uprm.edu/~manuel/class/fall01/icom4035/index.html

Texts:

            Required:

                        Data Structures and Problem Solving using C++, 2nd edition

                        Mark Allen Weiss

                        Addison-Wesley, 2000

                        ISBN: 0-201-61250-X

 

            Recommended:

                        Essential C++

                        Stanley B. Lippman

                       Addison-Wesley, 2000

                        ISBN: 0-201-48518-4

                       

                        C++ Primer, 3rd ed.

                        Stanley B. Lippman and Josée Lajoie

                        Addison-Wesley, 1998

                        ISBN: 0-201-82470-1

 

Grading:

Your grade will be based exclusively on the scores that you obtain in the class projects, exams and laboratory assignments. The curve to be used to assign a grade to your score will be as follows:

            Score (%)        Grade

100-90                         A

89.9-80                       B

79.9-70                       C

69.9-65                       D

65.0-0                           F

 

Your total score will be calculated from your individual scores in the projects, exams and laboratory assignments. The weights assigned to each of these categories are as follows:

 

Programming Projects   (4)                   40%

            Laboratories                                           10%

            Midterm Exams (3)                                 30%

            Final Exam (Comprehensive)                20%

 

There will be no special project, no special homework, no special exam, nor any other kind of “special work” to improve grades. However, each project or exam might have an extra credit problem that you can use to help improve your score in that corresponding category.

 

Exams:

In this course, there will be three midterm exams and a comprehensive final exam.  Unless otherwise indicated, all exams will be taken with closed books and closed notes. The midterm exams will be administered during the regular class time. The date for each midterm exam will be announced later on. The final exam will be administered in accordance with the schedule specified by the Registrar of the University of Puerto Rico, Mayagüez Campus.

Each question included in each exam (midterm or final) will fall in one of the following categories:

  1. Explanation of a technical concept.
  2. Proof of a mathematical proposition.
  3. Solution to a problem using the concepts discussed in class.
  4. Tracing of either C++ code segments or algorithms.
  5. Implementation of C++ classes and code segments.

 

Exam Reposition Policy:

A student that misses a midterm exam will be given a reposition exam only under the following conditions:

  1. The student must inform the professor about the absence before the scheduled exam time. If the student cannot reach the professor, then the student must call one of the secretaries that work with the Electrical and Computer Engineering Department and inform her. Again, this must be done before the scheduled exam time.
  2. The student must present a valid excuse for missing the exam. Such excuse must be one of the following:
    1. Medical certificate indicating illness.
    2. Legal certificate indicating an appointment to attend a Court of Law.
    3. Certificate from a hospital or a physician indicating the death of either: parent, child, husband, wife or sibling.
  3. The professor will specify the time and date for the reposition exam.
  4. The reposition exam will be more difficult than the exam administered at the regular class time. (NOTE: This is done to prevent abuse of this policy.)
  5. There will be no reposition of a reposition exam.
  6. There will be no reposition of the final exam.

 

Incomplete Grade Policy:

A student will receive an incomplete grade if and only if the student misses the final exam and has a valid excuse.  Such excuse must be one of the following:

  1. Medical certificate indicating illness.
  2. Legal certificate indicating an appointment to attend a Court of Law.
  3. Certificate from a hospital or a physician indicating the death of either: parent, child, husband, wife or sibling.

 

Programming Projects:

In this course, you are expected to complete four programming projects that are designed with the following objectives:

1)      Test your knowledge of the data structures presented in class.

2)      Test your individual skills for engineering a programming solution to a particular problem.

3)      Provide experience in the design and implementation of complex software modules using object-oriented techniques.   

You will be given three weeks to complete each programming project. You must implement your project using the C++ programming language, and you must work individually. You might discuss with your peers general aspects about the project and/or programming environment. However, you cannot share your code with any student, nor use code written by someone else. Failure to comply with this requirement will be considered as an act of academic dishonesty and you will receive a grade of F in the class (read section below titled Academic Integrity).

You must submit your project electronically following a procedure that will be discussed in class. For each project, you will be given a tar file containing a directory, called the project directory, with the following items:

1)      A document explaining the tasks to be completed for the programming project.

2)      A document indicating a minimal set of operations that your program must execute to be considered a running program. If your program neither compiles nor performs this minimal set of operations it will receive a score of 0.

3)      A make file with the commands needed to compile the modules in the project.

4)      A set of .h files containing the declarations of the classes and methods to be implemented in the project. NOTE: For project number 4 you must create these .h files.

5)      A set of .cc files containing empty implementations of the methods associated with the classes, algorithms and other tasks related with the particular programming project. It is your job to implement the C++ code that executes the tasks these methods are designed to perform.

6)      A set of test input files and their corresponding test output files. You should use these to help you decide whether your program is working correctly or not, based on what type of output your program produces out of these test input files. NOTE: This set of input files will not be the only one to be used to grade your project. Hence, a program might pass all the tests in these test files, and yet fail some of the extra tests used for grading. However, if your program executes correctly on the test input files you will receive at least 70% of the total score for a given project.

Your project directory should contain all the files associated with your project. Once you have completed your project, you will create a new tar file that must contain everything that you have created in your project directory. You will submit this tar file for us to grade your project. Again, you will receive further instructions on how to submit your project electronically.

You are expected to work in the Amadeus UNIX lab provided by the University of Puerto Rico, Mayagüez Campus. But, you are free to use your own UNIX computer, if you prefer to do so. However, you must ensure that the programs that you submit for grading do compile and execute correctly on the machines available in the Amadeus UNIX lab, since the projects will be graded there. Failure to comply with this requirement will result in a score of 0 for the project being evaluated. NOTE: This policy will be strictly enforced.

 

Late Project Policy:

Each project will have a due date composed of an hour, month and day (i.e. 4:00 PM-September 12). A project will be considered late if it is submitted for grading one minute after its due date. For example, if the due date for a project is 3:00 PM-October 31, then a project submitted at 3:01 PM-October 31 is considered as one day late. Any late project will receive the following penalty:

1 day past due date                  -15%

            2 days past due date                 -30%

No project will be accepted for grading if submitted 3 or more days after its due date, and any such project will receive a score of 0. Any project that is not submitted for grading will automatically receive a score of 0.

NOTE: We will not debug your code via e-mail. We shall only look at your program source code listings, or login to see your code files during the allotted office hours.

 

Laboratory:

In this course there will be a weekly 3-hour laboratory session in which the Teaching Assistant will further discuss the concepts presented in class, and the programming projects. There will be several problem sets, and various small programming exercises as part of the assignments associated with the laboratory.

Academic Integrity:

Each student is expected to work individually on all projects, exams and laboratory assignments. You may not share your answers to the laboratory assignments. You may not use code from another student, or code that you find on the Internet or any similar resources. You may not share your code with another student. Failure to comply with these requirements will result in a grade of F in the course for the student(s) breaking these rules. Unauthorized group efforts, particularly during exams, will be considered academic dishonesty and the students involved will receive an F in the course. You should read Article 10 of the “Reglamento General de Estudiantes de la Universidad de Puerto Rico” to learn more about the possible sanctions that you might experience if caught in an act of academic dishonesty.

List of Topics:

The following is a list of the course topics in the order in which they will be presented. This list is subject to change and it will vary depending on the pace of the lectures.

TOPICS:

1.      Discussion of the Class Syllabus

2.      Review of C++ fundamentals

a.       Dynamic Arrays

b.      Pointers

c.       Structures

3.      Object-Oriented Programming with C++

a.       Classes

b.      Templates

c.       Inheritance

4.      Container Classes

a.       Vector

b.      Bag

c.       Set

d.      Bit Vector

5.      Computational Complexity

a.       Big-O notation

b.      Worst case analysis

c.       Average case analysis

6.      Linked Lists

a.       Singly Linked Lists

b.      Doubly Linked Lists

c.       Circular Linked Lists

d.      Container Classes using Linked Lists

                                                               i.      Bag

                                                             ii.      Set

                                                            iii.      Sequence

7.      Stacks

a.       Dynamic Array implementation

b.      Linked List implementation

8.      Queues

a.       Dynamic Array Implementation

b.      Linked List Implementation

9.      Recursion

10.  Trees

a.       General trees

b.      Binary trees

c.       Tree traversals

                                                               i.      Postorder

                                                             ii.      Inorder

                                                            iii.      Preorder

11.  Binary Search Trees

12.  AVL-Trees

13.  B-Trees

14.  Maps and Hash Tables

a.       Linear Probing

b.      Quadratic Probing

c.       Open Hashing (Separate Chaining)

15.  Heaps and Priority Queues

16.  Graphs

a.       Adjacency matrix implementation

b.      Adjacency list implementation

c.       Graph traversal algorithms

17.  Sorting algorithms

 

.

 

 

© 2001 University of Puerto Rico-Mayaguez. All rights reserved.


Last update was on August  24th, 2001
manuelr@acm.org