CSCI 3230 Data Structures (Summer 2019)

Instructor:

Office:
Office hours:
Phone:
Email:
Lecture class:
Folio:
Important Dates:
Dr. Weitian Tong
Assistant Professor at Department of Computer Science
CEC 2305
MTWRF 3:40 pm – 4:40 pm; or by appointment
(912) 478-7251 (If I am unavailable, please do not leave a message. Send an email instead. Thanks.)
wtong@georgiasouthern.edu (Please indicate your name, ID, and class information in your emails. )
MTWRF 2:00 pm – 3:40 pm; CEIT 2212
Course materials (such as syllabus, slides, and homework descriptions) are available in Folio.
  • May 20, Class begins and Attendance Verification
  • May 20 – 22, Drop/Add
  • May 27, Memorial Day – No classes
  • June 5, Last day to withdraw without academic penalty
  • June 19, Last day of classes




Course Description:

This course introduces basic data structures and their application using the Java programming language. We introduce a mathematical framework for evaluating the efficiency of Java code, and develop implementations of basic data structures such as lists, stacks and queues. We study searching and sorting algorithms and introduce recursion as a strategy for improving the running time of these algorithms. This leads us to study more advanced data structures that are defined recursively, such as trees and heaps. We cover several advanced topics, such as hash tables and the storage and exploration of graphs. Prerequisite(s): A minimum grade of ``C" in CSCI 1302, MATH 2130.




Objectives:

Proficiency in data structures (including containers, trees, heaps, priority queues, hash tables and graphs) and algorithms for manipulating data (including sorts and tree traversals). Develop the ability to implement those data structures and analytic understanding of the time and space trade offs of different data structures and different implementations. Write larger programs that require interacting with a data structure. At the end of the course, a successful student should be able to:
  • Use the object-oriented programming paradigm to write understandable and maintainable Java programs.
  • Given a specification, design and implement an algorithm in Java that correctly satisfies the specification.
  • Rigorously analyze the time and space efficiency of a Java program.
  • Compare and contrast the relative merits (in terms of efficiency) and applicability of standard data structure.




Course Policy:

  • Consultation with fellow students is encouraged. However, directly copying another student's work (past or present) defeats the purpose of the assignments and exams and is an honor code violation. Unless otherwise noted, you are expected to complete all assignment individually. Violations will result in serious penalties including course failure and possible disciplinary action. Honor Code (refer to Georgia Southern's Faculty Handbook): I will be academically honest in all my course work and will not tolerate the academic dishonesty of others. I also pledge to engage in ethical behavior on-campus and off-campus, to live an honorable lifestyle, and to create a campus environment that is characterized by individual responsibility, civility, and integrity.
  • Attendance and Punctuality: Each of the lectures will build on the previous lectures. Thus, it is very important that you attend every class. Once you start slipping behind it is very hard to catch up. For that reason, attendance is very important for this course. You are expected to attend the all of the lectures and discussion sessions for which you are enrolled. You are expected to come to lectures, discussions, and examinations on time; arriving late and/or leaving early is disrespectful and disrupts the entire class.
  • Late Assignments: No late homework assignments are accepted. Lab assignments must be completed in lab time.
  • Make-up work/tests: This course moves along at a very fast pace. As a consequence I expect everyone to keep up. With the possible exception of documented illness or injury, make-up work and/or tests will not be given.
  • Reporting illness or injury: Although I believe most students are honest and trustworthy, as a matter of policy, I must ask you to verify an illness or injury with a doctor’s certificate. Please note that other family or personal issues will not be accepted as a justification for absence.
  • Accommodations (see faculty or student handbook): Georgia Southern University is an Equal Opportunity and Affirmative Action institution committed to providing reasonable accommodations for any person with a disability who meets the definition of disabled as described in the Americans with Disabilities Act. Students requiring academic accommodation should contact the Director of the Student Disability Resource Center for assistance at (912) 478-5136 or TDD: 912-478-0273.
  • Distribution of course materials: Lecture notes, homework assignments/quizzes/exams, as well as their sample solutions, are prepared for students in this course only. Any other use, distribution, or posting in places outside this course are prohibited without written permission from the instructor.
  • Note about recording: Audio or video recording of lectures, labs, seminars or any other teaching environment by students is allowed only with the prior written consent of the instructor or as a part of an approved accommodation plan. Recorded material is to be used solely for personal study, and is not to be used or distributed for any other purpose without prior written consent from the instructor.




Grading Policy:

Your final grade will be derived from your performance in three areas:
  • Homework: sets of theoretical problems and short coding assignments.
  • In-class Coding: implementation of common data structures in the class.
  • Project: somehow large coding assignment that require the development of solutions to practical problems. Students need to work in groups with size \textbf{at least 2, at most 3}.
  • Written Exams: one mid-term exam during the semester and one final exam. The exams are closed-book, closed-notes and evaluate how well you retained and understood the course content as well as how well you can apply the course concepts to new problems. For each exam, an in-class review session will be held to provide time for resolving issues regarding the content and procedure of the exam.
Homework and projects are assigned according to the schedule posted on the Folio. Solutions to homework and project must be submitted on Folio. Midterm is held according to the schedule on the Folio. The final exam is scheduled by the university. The final grade will be graded with the following weighting:
Homework: 20%; Coding Assignments: 30%; Project: 20%; Mid-term: 15%; Final: 15%.
You are encouraged to track your scores on Folio to ensure that you have received the appropriate credit for each of your assignments and exams. No extra credit or ``make-up” assignments will be given (with exception to the cases stated in the course policy).
The final grade is based on the following standards:
A: 90% or above; B: 80-89.99%; C: 70-79.99%; D: 60-69.99%; F: 59.99% below.




Tentative Course Schedule:

Please note that the schedule is tentative, which might change during the semester. In particular, please double check the time for our final exam on our University website around the last day of classes.
Date Topics Useful Recourses
Module 1
Module 2
A1 Due
Module 3 Linear Data Structures
Module 4 Trees
Module 5 Priority Queues and Heaps
  • Visualizations:
A2 Due
Midterm
Module 6 Hash Tables
Module 7 Search Trees
A3 Due
Module 8 Comparison sorts
Module 9 Linear sorts
Module 10
A4 Due
Project Due
Project Presentations
Final exam