COP 3530: Data Structures
Course Description and Purpose
In COP 3530, you will study a collection of classic algorithmic techniques that are useful for solving problems. These algorithms include sorting algorithms (e.g., selection sort, insertion sort, quicksort), recursive backtracking search, tree algorithms (traversals, binary search algorithms), and graph algorithms (traversals, spanning trees forests, shortest paths, etc.).
The course covers exhaustive approaches, divide and conquer, greedy algorithms, backtracking, branch and bound, and iterative improvement. We will also cover algorithm analysis, asymptotic notation, and recursion. Data structures covered include vectors, stacks, queues, trees, graphs, priority queues, hashtables, and heaps.
By the end of this course, students should be able to perform good programming and design algorithms with different data structures.
Upon completing this course, students will be able to:
- Identify the use of different data structures to design algorithms for solving real-life problems.
- Compare the efficiency of different algorithms and optimize their algorithms.
- Evaluate the correctness and efficiency of different algorithms constructed using different data structures.
- Use standard data structure library of a major programming language to develop efficient algorithms.
- Collaborate effectively to solve problems with the maximum amount of efficiency.
- Learn to value and innovate your own algorithms to solve practical problems.
Pillars Of Course Design Philosophy
- Teach to learn
- Understand more than memorizing
- Evolve with hands-on experience
Introduction to Algorithms, by Cormen, 3rd Edition, 2009.
Data Structures With C++ Using STL by Ford and Topp, 2nd Edition, Prentice Hall, 2002.
Introduction to the Design and Analysis of Algorithms by Levitin, 2nd Edition, Addison Wesley, 2007.
Problem Solving, Abstraction, and Design Using C++ by Friedman and Koman, 5th Edition, Addison-Wesley, 2006.
To take this course, you must:
1. Have taken a Discrete Math course.
2. Know how to write programs in C++ using arrays, loops, conditional statements, functions, parameters, and simple I/O.
3. Know how to use object-oriented techniques, including classes, constructors, destructors, copy-constructors, public and private members, reference parameters, and function overloading.
4. Know how to use introductory data structures, including arrays. pointers, vectors, stacks, and queues.
5. Know how to translate high-level descriptions of algorithms in pseudo-code into working C++.
6. Know how to debug a C++ program.
Structure And Requirements
In this course,
- There will be no midterm or final exam.
- There will be multiple submissions towards the project, which represent 50% of your final grade. Lectures will cover the algorithms and data structures needed to solve the problem, and I will answer your questions about the assignment.
- Most projects need to have two parts. In the first part, you will learn to design a problem statement, articulating a real-world problem using a data structure lens. In the second part, you will implement the basic infrastructure, i.e., the classes and data structures and, you need to develop, implement, and evaluate algorithmic techniques.
- Projects can be completed in groups of two students. There will be one project submission for each group. However, each student must completely understand everything about the solutions they turn in.
- There will be a quiz, usually, either during class or within the video lectures or in the modules which represent 40% of your final grade. Each quiz will evaluate your understanding of the material covered in past projects and lectures.
- Lectures will cover much, but not all, of the required material for the course. There will be reading assignments that accompany each lecture. Reading assignments will be posted and you are also responsible for this material.
- Class attendance/participation is very important. I do not take attendance, but I pay attention to who comes regularly. I encourage questions from you and will usually ask you questions in class.
- You are strongly encouraged to attend all lectures, complete all projects, and regularly do the reading.
- We will use Canvas for all the class-related communications, assignments, and grading. The instructor and the TAs will be available to answer questions and give you feedback on your work.
- The course work will be conducted online. Expectations for performance in an online course are the same for a traditional course. In fact, online courses require a degree of self-motivation, self-discipline, and technology skills which can make these courses more demanding for some students.
To take this course, you must:
- Reading materials and watching videos.
- Identifying the application for the data structures learned in class.
- Formulation of the problem definition to frame the problem statement.
- The practice of writing code. Writing and debugging the maintainable and defensive code with proper documentation and comments.
- The practice of reading code. Develop the skill of understanding the code written by others.
- Group discussion. Develop the clarity of concepts and clear doubts.
Your final grade for the class will be based on the following breakdown:
- Projects 50%
- Quizzes and Assignments 40%
- Class Participation 10%
Sample Grading Scheme
- Grades are determined from the total points as follows:
- All assignments have fixed due dates and times, by which the assignment has to be uploaded to Canvas.
- No late submission will be accepted (the Canvas link for the upload will disappear after the due date/time).
- Class attendance is required. If you miss a class, you are responsible for all material that was covered, announcements that were made, and handouts that were distributed in class.
- If you miss a quiz, you will not be allowed to retake it. All requirements must be completed during the semester.
- No incomplete will be given.
- You are encouraged to discuss assignments with one another, but all writing of code must be done individually or within your group. You must not look at another student’s code, or allow another student to see your code.
- Copying someone else’s work and presenting it as your own, or submitting the same solution as someone else, is not allowed.
- If you have a question about the grading of a homework problem you should first contact the teaching assistant directly. If the issue is not resolved to your satisfaction, please contact me.
- Changes to project and quiz scores will only be made in the first week after the graded work has been returned to you.
- You should check the class website on Canvas daily for announcements and other information.
- You must adhere to FIU’s Policy on Academic Integrity. If you violate this policy will receive a lower grade in the course and may receive an F. You will also be referred to FIU’s Office of Student Conduct where penalties range from deferred suspension to expulsion from the university.
- Exceptions to any course policy may be made if you have a personal emergency that prevents you from participating in the course. In this case, you must make arrangements with me as soon as possible, preferably within 24 hours.
- FIU is committed to the principles of intellectual honesty and integrity. All members of the FIU community are expected to maintain complete honesty in all academic work, presenting only that which is their own work in tests and all other assignments. If you have any questions regarding the proper attribution of the work of others, please contact me prior to submitting the work for evaluation.
- Academic integrity is important for two reasons. First, independent and original scholarship ensures that students derive the most from their educational experience and the pursuit of knowledge. Second, academic dishonesty violates the most fundamental values of an intellectual community and depreciates the achievements of the entire university community.
- Accordingly, FIU views academic dishonesty as one of the most serious offenses that a student can commit while in college. The following is a broad overview of what constitutes academic dishonesty but is not meant to be an all-encompassing definition.
- Cheating: Intentionally using or attempting to use unauthorized materials, information or study aids in any academic exercise.
- Plagiarism: Intentionally or knowingly representing the words or ideas of another as one’s own in any academic exercise without providing proper documentation of source by way of a footnote,
endnote, or intertextual note.
- Unauthorized Collaboration: This refers to instances when students, each claiming sole authorship, submit separate reports which are substantially similar to one another. While several students may have the same source material (as in case write-ups), the analysis, interpretation, and reporting of the data must be each individual.
- Refer to:
- http://integrity.fiu.edu/misconducts.html, (Links to an external site.)
- http://integrity.fiu.edu/resources.html, (Links to an external site.)
- http://integrity.fiu.edu/plagiarism.html, (Links to an external site.)
- University Policies:
Academic misconduct, sexual harassment, religious holidays, and information on services for students with disabilities.
Everything here is subject to change.