CSCI 151 - Data Structures

Fall 2018

Course Overview:

Building on the skills acquired in CSCI 150, this course introduces data structures such as lists, stacks, queues, trees, and graphs, in the context of object-oriented software design. We will program using the Java language.

At the end of the course, you will be expected to be able to:

Lecture Time: MWF 8:10-9:00 am (A1)

Room for Lecture: MC Reynolds 317

Lab Time: M 1:10-4:00 pm (L6)

Room for Lab: BAILE COMPC

Instructor: Dr. Bayazit Karaman, MC Reynolds 313

Office Hours: By appointment. To make an appointment with me, please send an email. Also, please feel free to stop by whenever my door is open.

Required Textbook: None

Recommended Book:
Data Structures and Algorithms, Michael T. Goodrich, Roberto Tamassia and Michael H. Goldwasser, John Wiley & Sons, 2014.

Grading:
There are a total of 1,000 points available over the course of the semester. The thresholds for earning each letter grade are as follows:

Letter grade Points to achieve
A 900
B 800
C 700
D 600

Here are the semester's assignments and the associated points for each:

Assignment Total Value
Lab-1 (Birthday Paradox) 20
Lab-2 (Inheritance) 20
Lab-3 (Fundamental Data Structures) 20
Lab-4 (GUI with Java) 20
Lab-5 (Recursive Functions) 20
Lab-6 (Stacks, Queues, Deques) 20
Lab-7 (List and Iterator) 20
Lab-8 (Trees) 20
Lab-9 (Priority Queues) 20
Lab-10 (Hash Tables) 20
Lab-11 (Sorting Algorithms) 25
Lab-12 (Text Processing and Graph Algorithms) 25
Midterm Exam 100
Final Exam 250
Final Project 400

Revisions: After assignments are returned, you are welcome to revise and resubmit your work. I will grade anew each submitted revision, and average the original and revised grades to produce a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam period.

No late work will be accepted: Any work not submitted on time is a zero. However, you may submit a solution after the deadline to qualify under the revision policy. In effect, this means that late work can earn up to half credit.

Academic Integrity: All Hendrix students must abide by the College’s Academic Integrity Policy as well as the College’s Computer Policy, both of which are outlined in the Student Handbook.

For specific ways the Academic Integrity policy applies in this course, please refer to the Computer Science Academic Integrity Policy.

The short version is that academic integrity violations such as copying code from another student or the Internet are easy to detect, will be taken very seriously, and carry a default recommended sanction of a zero on the assignment in addition to a decrease of one letter grade on your final grade.

If you have any questions about how the Academic Integrity policy applies in a particular situation, please contact me.

Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Any student who needs accommodation in relation to a recognized disability should inform the instructor at the beginning of the course. In order to receive accommodations, students with disabilities are directed to contact Julie Brown in Academic Support Services at 501-505-2954.

Schedule: The anticipated schedule for the semester is below. The instructor reserves the right to alter the schedule as necessary during the semester. Unless noted otherwise, each project is due at the start of class.

Date Day Topic/Activity Assignment Due
08/22/2018 Wednesday Java Primer None
08/24/2018 Friday Java Primer None
08/27/2018 Monday Java Primer
Lab-1 (Birthday Paradox)
None
08/29/2018 Wednesday Object Oriented Design None
08/31/2018 Friday Object Oriented Design None
09/02/2018 Sunday None Lab-1 (Birthday Paradox)
09/03/2018 Monday Labor day (No class) None
09/05/2018 Wednesday Fundamental Data Structures None
09/07/2018 Friday Fundamental Data Structures None
09/10/2018 Monday Fundamental Data Structures
Lab-2 (Object Oriented Design)
Lab-3 (Fundamental Data Structures)
None
09/12/2018 Wednesday Algorithm Analysis None
09/14/2018 Friday Algorithm Analysis None
09/17/2018 Monday Graphical User Interface(GUI)
Lab-4 (GUI with Java)
Lab-2 (Object Oriented Design)
Lab-3 (Fundamental Data Structures)
09/19/2018 Wednesday Recursion None
09/21/2018 Friday Recursion None
09/23/2018 Sunday None Lab-4 (GUI with Java)
09/24/2018 Monday Stacks, Queues, and Deques
Lab-5 (Recursive Functions)
None
09/26/2018 Wednesday Stacks, Queues, and Deques None
09/28/2018 Friday Stacks, Queues, and Deques
Review for Midterm Exam
None
09/30/2018 Sunday None Lab-5 (Recursive Functions)
10/01/2018 Monday Midterm Exam
Lab-6 (Stacks, Queues, and Deques)
None
10/03/2018 Wednesday List and Iterator ADTs None
10/05/2018 Friday List and Iterator ADTs None
10/07/2018 Sunday None Lab-6 (Stacks, Queues, and Deques)
10/08/2018 Monday List and Iterator ADTs
Lab-7 (List and Iterator)
None
10/10/2018 Wednesday Trees None
10/12/2018 Friday Fall Break None
10/14/2018 Sunday None Lab-7 (List and Iterator)
10/15/2018 Monday Trees
Lab-8 (Trees)
None
10/17/2018 Wednesday Priority Queues None
10/19/2018 Friday Priority Queues None
10/21/2018 Sunday None Lab-8 (Trees)
10/22/2018 Monday Priority Queues
Lab-9 (Priority Queues)
None
10/24/2018 Wednesday Maps, Hash Tables, and Skip Lists None
10/26/2018 Friday Maps, Hash Tables, and Skip Lists None
10/28/2018 Sunday None Lab-9 (Priority Queues)
10/29/2018 Monday None None
10/31/2018 Wednesday Search Trees None
11/02/2018 Friday None None
11/05/2018 Monday Search Trees
Lab-10 (Hash Tables)
None
11/07/2018 Wednesday Sorting and Selection None
11/9/2018 Friday Sorting and Selection None
11/11/2018 Sunday None Lab-10 (Hash Tables)
11/12/2018 Monday Sorting and Selection
Lab-11 (Sorting Algorithms)
None
11/14/2018 Wednesday Text Processing None
11/16/2018 Friday Text Processing None
11/18/2018 Sunday None Lab-11 (Sorting Algorithms)
11/19/2018 Monday Text Processing
Lab section for the final projects
None
11/21/2018 Wednesday Thanksgiving (No class) None
11/23/2018 Friday Thanksgiving (No class) None
11/25/2018 Sunday None None
11/26/2018 Monday Graph Algorithms
Lab-12 (Text Processing and Graph Algorithms)
None
11/28/2018 Wednesday Graph Algorithms None
11/30/2018 Friday Graph Algorithms None
12/03/2018 Monday Review for Final Exam
Final Project Presentations
Lab-12 (Text Processing and Graph Algorithms)
12/10/2018 Monday
2:00-5:00 pm
Final Exam Final Project
All remaining work