COP 4530
Data Structures, Algorithms, and Generic Programming II
Fall 2023 Syllabus
Acknowledgement: The course materials are adapted from Bob Myers's
course materials at https://www.cs.fsu.edu/~myers/cop4530/.
The lecture cancelled due to Idalia will be made up either through a zoom recording
or using recitation hours later in the semester. The detail will be announced later.
Instructor Information
Position |
Name |
E-mail |
Office |
Office hours |
Course Instructor |
Xin Yuan |
LOV 168 |
xyuan@cs.fsu.edu |
Mon, Wed 1:30 - 2:30 PM, plus ad hoc times announced on Canvas
or by appointment |
Teaching Assistant |
Khaled Alharbi |
MCH 103 |
ka19m@fsu.edu |
Tuesday, Thursday 11:00AM-12:30PM |
Teaching Assistant |
Ross Kane |
MCH 103B |
rmk19c@fsu.edu |
Friday 10:00AM-1:00PM |
Teaching Assistant |
Liting Zhang |
Lov 431A |
lzhang8@fsu.edu |
Thursday 9:30AM-11:00AM |
Class Schedule
Main class
Sections |
Room |
Time |
1-4, 14 |
SCN 0214 |
Monday and Wednesday, 3:05 - 4:20 PM |
Recitation
Section |
Room |
Day |
Time |
Instructor |
1 |
MCH 302 |
Thu |
1:20 - 2:10 PM |
Ross Kane |
2 |
MCH 302 |
Thu |
3:05 - 3:55 PM |
Khaled Alharbi |
3 |
MCH 302 |
Thu |
4:50 - 5:40 PM |
Khaled Alharbi |
4 |
MCH 302 |
Thu |
6:35 - 7:25 PM |
Liting Zhang |
14 |
MCH 302 |
Thu |
8:20 - 9:10 PM |
Ross Kane |
Course Requirements:
Prerequisites
- COP 3330: Object-Oriented Programming
- MAD 2104: Discrete Mathematics
- Co-requisite: CDA 3100: Computer Organization I
- This course requires the students be proficient with C++ and object
oriented programming concepts.
- Students also need to have a user-level knowledge of Unix, and
be comfortable working in the Unix environment.
Course Website:
Textbook:
- Data Structures and Algorithm Analysis in C++, 4th ed.,
Mark Allen Weiss, Prentice Hall, 2013
ISBN: 9780132847377
- The course will closely follow the textbook.
We will cover chapters 1-9 in detail and
chapters 10-12 in any remaining extra time.
Course Description
Making efficient use of computational resources is one of the important
tasks of any computer scientists. In this course we will explore
different ways of organizing data to facilitate such efficient use.
This course covers the following topics:
- Data structures: Abstract data types (ADTs), vector, deque,
list, queue, stack, graph, digraph, table, map (associative array), priority
queue, set, and tree, etc.
- Algorithms: Algorithms are formalizations of processes that
result in predictable and desirable outcomes. They are used in a variety of
contexts. Particularly, data structures are made usable by implementing
algorithms for searching, sorting, and indexing the structures.
Algorithm design, complexity analysis and correctness proof form
important components in study of algorithms.
- Generic programming: Generic programming is an important mechanism for
component re-use. We will explore coding for re-use of both data
structures and algorithms in C++. Coding for re-use and re-use
of code are important aspects of software engineering.
Course Objectives:
The objective of the course is to teach students how to design, write,
and analyze the performance of programs that handle structured data and
perform more complex tasks, typical of larger software projects.
Students should acquire skills in using generic principles for data
representation and manipulation with a view for efficiency,
maintainability, and code-reuse.
Upon completion of the course, the student should be able to:
-
Define and use various common abstract data types (ADTs) as
generic containers, including (but not limited to):
- Positional ADTs: vector, linked list, deque, stack, queue, graph
- Associative ADTs: hash table, map (associative array), priority
queue, set
- Demonstrate analytical comprehension of steps performed by
algorithms that use the given data structures (sorting algorithms, tree
navigation, etc), and of their simple variants.
- Perform efficiency analysis on given data structures (which
data structures allow efficient interfaces to particular forms of
data access, such as random vs. sequential data access or
insertion, etc).
- Perform complexity analysis of algorithms that use the studied data
structures
- Effectively implement a given data structures as a generic
container, using class templates with typename template
parameters
- Implement given algorithms using generic programming techniques
(function templates, iterator template parameters)
- Effectively implement these techniques in the C++ language
Grading Policy:
The final course grade will be computed as follows:
Programming Assignments |
45 % |
Midterm Exam |
20 % |
Final Exam |
30 % |
Homework and Random Quizzes |
5 % |
In addition to the scale listed above, in order to earn a C- or better
in the course, course performance must satisfy the following
requirement.
- You must earn at least 60% in both of the programming and exam components.
In other words, to gain
a C- or better grade in this class, you must earn at least 27 points from
the programming assignments and 30 points from midterm and final exams.
Letter Grade Scale:
Letter | Numerical Average |
A | 92.00 - 100 |
A- | 90.00 - 91.99 |
B+ | 88.00 - 89.99 |
B | 82.00 - 87.99 |
B- | 80.00 - 81.99 |
C+ | 78.00 - 79.99 |
C | 72.00 - 77.99 |
C- | 69.00 - 71.99 |
D | 62.00 - 68.99 |
D- | 60.00 - 61.99 |
F | 0.00 - 59.99 |
Incompletes
The grade of 'I' (Incomplete) will be assigned only under the
following exceptional conditions:
- Due to an extended illness or other extraordinary circumstance, and
with appropriate documentation, the student is unable to participate in
class for a period affecting graded work, such that it is not possible
to complete/grade the missing work before end of course.
- The missing work cannot constitute the majority of the work in the
course, and the student must already be passing the course in their
other coursework, for an incomplete to be considered
- In such a case, arrangements must be made to make up the missed
portion of the course prior to the end of the next semester.
Please note that "Incomplete" is not a
"get-out-of-bad-grade-and-retake-the-course" card. University policy on
Incompletes will be strictly followed.
Exams
There will be a midterm exam and a final exam. All exams are in the normally scheduled classroom. On-campus students will be required to bring and show your Student ID on test days. The final exam will be cumulative. The test formats will be a mixture of short-answer, code reading and understanding, and code writing.
Programming Assignments
- Programming assignments will be more substantial and challenging
than those in prior programming courses, and will require more time and
effort to complete. Make sure to immediately start working on
programming assignments when they are announced. Assignment
specifications will be posted on the course web page.
- Please note also that programming is a skill, and PRACTICE is the only
way to learn a skill effectively. Please make sure to start assignments
early enough to leave yourself time for appropriate practice, as well as
testing and debugging!
- ALL ASSIGNMENTS IN THIS COURSE ARE TO BE DONE INDIVIDUALLY.
Students are not permitted to share assignment solutions together, or with
others who are within or outside of our course. Please see the Academmic
Honor Code policies below.
- Turn in all assignments on time! The ability of complete
programming assignments in time is an important capability of a good
software engineer. Gaining this ability is a part of the training in
this course. Late assignments will be accepted one day after the due
date, with the deduction of a letter grade (10%). Assignments more than a
day late will not be accepted.
- Compiling -- Programs that do not compile successfully on linprog (the
machine where your program will be graded) will
receive at most 10% of the total grade for the program. Any program that
compiles without any compilation error on linprog will receive at least 15%
of the total grade for the program. Make sure your code compiles before you
submit it! You also need to make sure that you include a proper makefile
to compile your program on linprog.
- Assignments need to be submitted through the appropriate submission
portal. Instructions will be provided before the first
assignment is due. E-mailed files will NOT be counted as valid
submissions.
- Each student is responsible for ensuring that their program files were submitted
correctly, and that the correct version was submitted. Double-check before you
submit.
- Any concerns or issues regarding the accuracy of grades must be
addressed first to the grader of the assignment in question, and also
must be brought up within 7 days of the grade being posted
Homework and Quizzes
Homework and quizzes will be given, both in Canvas short-answer format and in
small coding-exercise format. Some quizzes may be set up as auto-graded
quizzes on Canvas. Others will be small coding exercises of the type
that might be done in a recitation class period. Such coding exercises
will be assigned and
due in a short time period, always on the same day.
Excused Absence Policy
- Excused absences include documented illness, deaths in the family
and other documented crises, call to active military duty or jury duty,
religious holy days, and official University activities. These absences
will be accommodated in a way that does not arbitrarily penalize students
who have a valid excuse. Consideration will also be given to students
whose dependent children experience serious illness.
- It is the student's responsibility to notify me as soon as possible
regarding any excused absences that affect graded work. In the case of
quizzes, you need to notify me within 24 hours of any excused absence
that causes you to miss a quiz
Miscellaneous Policies
- The course web page is your friend -- check and refresh it
frequently! It will be continually updated with essential course
materials, such as assignments, examples, and notes outlines. It will
also include other helpful supplements, such as instructions for using
the compilers, suggested exercises, and other useful help materials. It
is your responsibility to check the web page often for posted
materials.
- Students in the class should have a computer account from the
Computer Science Department (sign up for one if you don't already have
one), and this can and should be used to store project files and access
one of the compilers used in the course.
- Knowing the contents of this syllabus is each student's
responsibility. "I didn't know" in regards to a clearly stated course
policy will NOT be considered a valid excuse for anything during the
course
Academic Honor Policy:
The Florida State University Academic Honor Policy outlines the
University’s expectations for the integrity of students’
academic work, the procedures for resolving alleged violations of those
expectations, and the rights and responsibilities of students and faculty
members throughout the process. Students are responsible for reading the
Academic Honor Policy and for living up to their pledge to “ . . .
be honest and truthful and . . . [to] strive for personal and
institutional integrity at Florida State University.” (Florida State
University Academic Honor Policy, found at
http://fda.fsu.edu/Academics/Academic-Honor-Policy.)
ALL WORK IN THIS COURSE IS INTENDED TO BE DONE INDIVIDUALLY
In addition to this information, please be aware of the
following:
- It is NOT APPROPRIATE to utilize websites such as: CHEGG.com, COURSEHERO.com, etc. DO NOT post our assignments to these websites to solicit answers, and DO NOT use/view/utilize the 'solutions' found on these websites. Doing so is in direct violation of the FSU honor policy.
- It is NOT APPROPRIATE to work on assignments with other students or to give or receive solutions to or from anyone before an assignment is due and handed in (by all parties).
- It is NOT APPROPRIATE to share any amount of code with your classmates. When you turn in code with your name on it, you are representing that work as your own. If your submission matches that of another student, this is considered a violation of the Academic Honor Code.
- It is NOT APPROPRIATE to copy/paste, or use any amount of code written by other people from any web sources, forums, etc. as your own solutions.
- It is NOT APPROPRIATE to post your code online. If I find your code online (unapproved online compilers, text sites, blogs, help sites, etc...), no matter what the intent was in posting your code, this is automatically in violation of the Academic Honor Policy and the appropriate actions will be taken. If you are keeping code on sites like GitHub, make sure your code is not searchable and viewable by the public.
- Plagiarism detection tools, such as MOSS, will be used in the
grading process.
- A first violation of the honor code will result, at minimum
(but not limited to), a penalty of a 0 grade on the assignment or test
involved, along with a reduced letter grade in the course.
- If the violation is that of soliciting solutions on external
web sites (Chegg, Course Hero, etc), the penalty will be an automatic F
in the course, regardless of whether it is a first violation or not
- Any second violation of the honor code will result in a Hearing
Referral under FSU Honor Code policies (this is an FSU requirement
for any case in which a student has a prior violation in ANY
course).
- A second violation in THIS course will result in a Hearing Referral
with the proposed minimum sanction of an F in the course
Americans With Disabilities Act
Students with disabilities needing academic accommodation should:
(1) register with and provide documentation to the Student
Disability Resource Center; and
(2) bring a letter to the instructor indicating the need for
accommodation and what type. This should be done during the
first week of class.
This syllabus and other class materials are available in
alternative format upon request.
For more information about services available to FSU students
with disabilities, contact the:
Student Disability Resource Center
874 Traditions Way
108 Student Services Building
Florida State University
Tallahassee, FL 32306-4167
(850) 644-9566 (voice)
(850) 644-8504 (TDD)
sdrc@admin.fsu.edu
http://www.disabilitycenter.fsu.edu/
Syllabus Changes
Except for changes that substantially affect implementation of
the evaluation (grading) statement, this syllabus is a guide for
the course and is subject to change with advance notice.