This project involves implementing a List ADT using a doubly-linked list. To traverse the elements of the List, we
will implement an iterator.
1. You can use the implementation of Deque<T> from Project 3 as the basis for the implementation of
List<T>. You can also use the Makefile from Project 3 for this project, with the appropriate
2. The design of List<T> is inspired by the design of Java’s LinkedList<T>
(https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html). The design of
ListIterator<E> is inspired by the design of Java’s ListIterator<E>
3. Thorough documentation for this project’s classes is available on-line
(http://people.cs.georgetown.edu/~maloof/cosc052.s19/p4docs/index.html). Class declarations for the
list and list iterator classes are also available on Blackboard.
This is an individual project and all work must be your own. Refer to the guidelines specified in the Academic
Honesty section of this course syllabus or contact me if you have any questions. A file named HONOR containing
the following contents is also provided:
Make the appropriate substitutions and ensure that the file is included with your submission.
Instructions for Electronic Submission
Your project must be submitted no later than Wednesday, April 17, 2019 at 11:59pm. Late submissions will be
penalized 1 point for each minute. In general requests for extensions will not be considered.
You will submit Project 4 in the same way you did the previous three projects. (Plan B: ONLY in case of some
catastrophic issue with the AutoLab system, one of the servers, or if you have some serious extenuating
circumstances, then upload your zip file to Blackboard).
In accordance with the class policies and Georgetown’s Honor Code,
I certify that, with the exceptions of the class resources and those
items noted below, I have neither given nor received any assistance
on this project.
28 March 2019 Project #4
COSC 052 Spring 2019 Page 2 of 4
Once you’ve submitted your project, it is important to keep an electronic copy on a university machine such as the
class server (cs-class) that preserves the modification date and time. If we lose your project or the submission
system breaks, then we will need to look at the modification date and time of your project to ensure that you
submitted it before it was due. Retain either the zip file or the directory containing your project’s files.
This graded assignment is worth 100 points and will be counted as part of the Programming Projects category for
the course. Your final score is based on automated tests performed by AutoLab, as well as a manual review
conducted by one of our Teaching Assistants (TAs). We will talk about the AutoLab tests in class and you will be
able to see exactly what those are when you submit for the first time.
Where to Begin?
This is a very long project. Many of the methods you need for the List class are essentially the same as Deque
class methods so you can reuse that code. However, there are still more than enough new concepts in this project
to make it a significant challenge.
Starting immediately, you should set up a project and get your files organized. You will need separate .h files for
class List and class ListIterator. You will need a main.h and main.cpp the same as last project. Get
the files organized on the server in in your IDE and then copy and paste the provided class declarations.
Note that class List in particular has very many member functions. Please begin work immediately to create
function stubs for all of these member functions. You should have the stubs in place for both of the new classes
early next week. Also, I strongly recommend that you develop some strategy so that you can quickly locate the
member function that you want to edit. Large banners (multi-line comments) above each member function can
help. Once you begin implementing the member functions, the code for the List class methods is going to be
very, very long. It is essential that you have a well-organized file. Otherwise you spend more time looking for the
right section of code to edit than you will spend actually writing code! Do the “housekeeping” work early this
week, it will pay huge dividends once you get into the coding. Also, the process of simply putting the function
stubs in place will help to acclimate you to the new classes and should begin the planning process about how the
methods work together and how they should be implemented. It should also help to generate some questions so
we can have a productive dialog about the project during lecture.
Get set up and write the function stubs right away. Then start to prioritize the functions to implement. Some have
different names but are very similar to Project #3. For example List::addLast is just Deque::insertBack
with a different name. Find and implement those easy methods, and any others that are the bare minimum to
instantiate and populate a list object. Once you can populate and print the contents of a list you will be ready to
begin writing and testing the new methods.
28 March 2019 Project #4
COSC 052 Spring 2019 Page 3 of 4
Course Materials Notice
The materials used in Georgetown University courses (“Course Materials”) generally represent the intellectual
property of course instructors which may not be disseminated or reproduced in any form for public distribution
(e.g., sale, exchange, etc.) without the written permission of the course instructor. Course Materials include all
written or electronic documents and materials, including syllabi, current and past examination questions/answers,
and presentations such as lectures, videos, PowerPoints, etc., provided by a course instructor. Course Materials
may only be used by students enrolled in the course for academic (course-related) purposes.
Published course readings (book chapters, articles, reports, etc.) available in Canvas are copyrighted material.
These works are made available to students through licensed databases or fair use. They are protected by
copyright law, and may not be further disseminated or reproduced in any form for distribution (e.g., uploading to
websites, sale, exchange, etc.) without permission of the copyright owner.
More information about intellectual property and copyright can be found here:
More information about computer acceptable use policy and intellectual property can be found here:
This document: Copyright © 2019 W. A. Woods. All Rights Reserved. This material may not be published,
broadcast, rewritten, or redistributed.
On-line documentation: Copyright © 2019 Mark Maloof. All Rights Reserved. This material may not be
published, broadcast, rewritten, or redistributed.
28 March 2019 Project #4
COSC 052 Spring 2019 Page 4 of 4
(this page intentionally left blank)