COP 4530
Data Structures, Algorithms, and Generic Programming II
Spring 2024 Syllabus
Instructor Information
Position |
Name |
E-mail |
Office |
Office hours |
Course Instructor |
Bob Myers |
myers@cs.fsu.edu |
Love 108-D |
Tues 1:00 - 3:00 PM |
TA |
Jayen Lare |
jlare@fsu.edu |
MCH 114-C |
Mon 1:00 - 2:30 PM, Tues 11:30 AM - 1:00 PM |
TA |
Ross Kane |
rmk19c@fsu.edu |
MCH 103-B |
Thurs 11:30 AM - 1:00 PM, Fri 10:30 - 12:00 noon |
Class Schedule
Main class
Sections |
Room |
Time |
1-4 |
MCH 201 |
Mon/Wed 4:50 - 6:05 PM |
Recitation
Section |
Room |
Day |
Time |
Instructor |
1 |
MCH 202 |
Tues |
3:05 - 3:55 PM |
Lare |
2 |
MCH 202 |
Tues |
4:50 - 5:40 PM |
Kane |
3 |
MCH 202 |
Tues |
6:35 - 7:25 PM |
Kane |
4 |
MCH 202 |
Tues |
1:20 - 2:10 PM |
Lare |
Course Requirements:
Prerequisites
- COP 3330: Object-Oriented Programming
- MAD 2104: Discrete Mathematics
Course Website:
Textbook:
- Data Structures and Algorithm Analysis in C++, 4th ed.,
Mark Allen Weiss, Prentice Hall, 2013
ISBN: 9780132847377
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 sufficient 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 the science of
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/C++ language
Grading Policy:
The final course grade will be computed as follows:
Programs / Assignments / Quizzes |
40 % |
Test 1 |
17.5 % |
Test 2 |
17.5 % |
Final Exam |
25 % |
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 each of the following components: (1)
Programming assignment average and (2) Exam average.
- COP 4530 is also selected for assessment of two expected outcomes
for its degree program (ABET/SMALCS assessment):
- That students passing this course have basic programming
competence
- That students are able to apply complexity analysis to choose better
solutions/algorithms for programming problems
The official assessments will consist of one or more of the programming
assignments in the course. The assignments counting for the ABET
assessments will be specified when they are posted
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 |
Tests:
There will be three tests -- two term tests 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. Tentative test
dates are listed below. Be aware that these may change slightly
depending on where we are in the course materials.
Test Dates: (Test 1 and 2 tentative)
Test 1 |
Wed, Feb 21 |
Test 2 |
Wed, Apr 3 |
Final Exam |
Mon, Apr 29, 5:30 - 7:30 PM |
For your reference
Link to Spring 2024 Final Exam Schedule
Incompletes
The grade of 'I' (Incomplete) will be assigned only under the
following exceptional conditions:
- The final exam is missed with an accepted excuse for the absence.
In this case, the final exam must be made up within two weeks of the
beginning of the next semester
- 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.
Recitation / Quizzes
Periodic quizzes may be given, in lecture or in recitation class, to
help students gauge their progress in the class, and to gauge
attendance, if needed. Attendance and participation is expected, both in
lecture and recitation class. There may also be some hand-in exercises
done in recitation class. Any attendance grades, quiz grades, or graded
work from recitation will count in the assignment average.
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 annnounced. Waiting until the due
date to start is a bad strategy!
- 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.
- Assignment specifications will be posted on the course web
page.
- Turn in all assignments on time! 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 are very tedious to
grade, and they show a lack of testing, which is a large part of
programming. There will be an automatic 5% point penalty for each
easier compile error in a student's code that has to be fixed in the
grading process -- up to a maximum of 10 compile errors. After 10
errors fixed, if it still fails compilation, the submission will be
marked as a 0. (Bottom line: Make sure your code compiles before you
submit it!!!)
- 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 the correct version. Double-check it!
- 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
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.
- A student will be allowed to make up a missed test if he or she has
a notice of illness from the Student Heath Center or family physician.
Any other excuses that are not medical or emergency related will be at
the discretion of the instructor, and must be approved in advance. If
you miss a test for any reason (without advance approval), you must
notify me of the issue within 48 hours of the missed exam. Missed tests
must be made up within 2 weeks of the test date, unless there is an
extended long-term excused absence (e.g. hospital stay, etc)
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
responsibiltiy. "I didn't know" in regards to a clearly stated course
policy will NOT be considered a valid excuse for anything during the
course
- Please turn off cell phones, computer audio, Nintendo Switches, and
any other things that beep and/or make noise in the classroom.
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.
- It IS APPROPRIATE to utilize examples found in the course textbook or
in the course notes and examples, as long as the source is cited. This is
appropriate, as some hand-in assignments will have structural elements
that are based on examples we've done in class, or contain other code
that is provided to you in the assignment specification.
- It IS APPROPRIATE to discuss solutions and techniques on assignments
with other students AFTER the assignment has been graded and handed back.
- It IS APPROPRIATE to study general topics, ideas, and solve
non-assigned-for-homework questions for practice with other classmates.
- If it is found that a student has violated the academic honor policy
the student is not permitted to drop or withdraw from the course and must
complete the course with the sanctions assessed via the policy. This is a
UNIVERSITY policy.
- 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 course letter grade for that term (-10 points off of
the final course grade).
- If the violation is that of soliciting solutions on external
web sites (Chegg, Course Hero, etc) -- which is also a violation of
copyright -- 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 an automatic F
in the course, and possible proceedings before the FSU Honor Code
Committee.
Americans With Disabilities Act
Students with disabilities needing academic accommodation should:
(1) register with and provide documentation to the Office
of Accessibility Services; 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:
Office of Accessibility Services
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
https://dsst.fsu.edu/oas
Students approved to take exams at the OAS office are expected to
take exams at the regularly scheduled time. Any exception to this
will only be granted with a valid documented reason and must be approved
by the instructor a week before the exam.
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.