|
COURSE SYLLABUS
COP 4530 Data Structures, Algorithms, and Generic Programming
Summer Semester 2019
|
SPECIAL SCHEDULING NOTE:
This is an online-only class (distance learning).
Regular participation via the
fsu.instructure.com [Canvas]
course interface is required. Official course announcements, lecture
materials, assignments, and help archives will all be on-line at this site. Note
that all registered students should have the course web site listed on their
Canvas home page. Be sure to test this and resolve any difficulties during
the first week of classes.
Regular participation means:
- Subscribe to Announcements and read them as soon as they are received.
- Read every Discussions post. Keep up on a daily basis.
- Start assignments no later than the date they appear in the Course Calendar.
- Turn in assignments on time - use the 5-day grace period for emergencies only.
- Take exams during the exam window.
All exams must be proctored and taken
during the exam window. It is the student's responsibility to arrange for
proctored exams in compliance with the FSU standards.
(See COURSE POLICIES for details.)
All exams must be taken by
appointment at your pre-approved proctored testing site during the online exam
window. (See Exam Schedule below.)
Examity Remote Proctoring Service:
Online students may sign up for the Examity web-based Remote Proctoring
Service. This service uses your own computer's webcam and microphone to
monitor your Exam at an Internet-connected location of your own choice.
Details are here:
Proctor Designation Page.
There will be an Examity link button in the Canvas course site that leads to
the Examity dashboard. To use Examity:
- Designate Examity as your proctor on the Online Proctor Designation Form.
- Click the Examity Proctor button to create your account in the Examity
dashboard.
- Use the Examity dashboard to test your system and schedule an Exam
appointment within the Exam window.
- Be sure you know the rules: any suspicious activity flag raised by an
Examity proctor will AUTOMATICALLY trigger an Honor Code incident report.
FSU ID: Note that students may be required to identify themselves with official FSU
ID to sit an exam.
INSTRUCTIONAL STAFF:
Instructor: Chris Lacher
Responsibilities: Online Interaction, Exam & Assignment Creation
& Assessment; Materials Preparation; Overall Course Supervision |
|
Office: |
A2110 Academic Center / Panama City Campus
|
Office Phone (during PC office hours):
|
850-770-2256 (local direct line)
| |
Mobile Phone & Voice Mail (24/7): | 850-510-5575 |
Email: |
lacher[at]cs[dot]fsu[dot]edu |
Fax: | 850-770-2082 |
Mail & Delivery: |
Florida State University
4750 Collegiate Drive
Panama City, FL 32405-1099
|
|
|
Tony Harris, Co-Instructor, Online Mentor and Assignment
Assessment Coordinator
Responsibilities: Online Interaction, Assignment Help & Assessment |
|
Email: |
wharris[at]cs[dot]fsu[dot]edu |
|
COURSE PREREQUISITES:
The courses COP 3330 and MAD 2104 are required prerequisites for
COP 4530. In addition, CDA 3100 is required as either a pre- or
co-requisite. These pre- and co- requisites will be enforced. Students not
meeting the pre/co-requisite requirements may be dropped from the class.
COURSE RATIONALE:
Data structures and algorithms form the foundation of both the theory and practice
of all computing disciplines. Mastery of this course marks the transition from
computer programming to computer science.
COURSE DESCRIPTION:
This IS NOT a course in object-oriented programming.
This IS a course about efficiency of programs and programming, in
various meanings of efficient. It is efficient to re-use code instead
of re-writing code (or, worse, re-inventing code). It is efficient to select
only the linguistic features you need without having to use costly extra
features you do not need. It is efficient to minimize the run time of
code, especially code that is destined for re-use. It is also efficient to
minimize the memory and storage needs of code, recognizing that there may be
a tradeoff between speed and memory requirements. It is efficient to spend
less time writing a program of equal quality, and even more efficient to
spend the same time writing a program of higher quality. In many
applications, correctness is the ultimate form of efficiency, while in
others efficiency means getting the best result possible in the limited time
(or space) available.
Efficiency can happen at different levels. Take code: source code can be
small in size, easy to read, and easy to understand. Executable code can be
fast or compact (or both). The code production process can be efficient by
applying good software engineering methodology. Code can run efficiently, in
either a temporal or spatial sense. Savings in human effort also represent
efficiency. Effort can be saved by good design, by careful (error-free)
programming, and by re-using both code itself and patterns of problem
solving that are known to be successful.
All these ideas of efficiency are central to this course. It is also true
that all of these ideas of efficiency are fundamental to the design and
specification of the C++ language, which is one of many reasons C++ is a great
choice for the core language in our curriculum and for this course.
The three topics mentioned in the title of the course are
data structures, algorithms, and generic programming. Data
structures will be discussed in abstract terms (as abstract data types,
or ADTs) but they will also be looked at in very concrete ways, actually
implemented using C++. Algorithms are just formalizations of processes
that result in predictable and desirable outcomes. Algorithms are used in a
variety of contexts. Particularly, data structures are made usable by
implementing algorithms for searching, sorting, and indexing the
structures. 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.
We will also have several substantial programming projects that involve
the implementation and use of data structures, algorithms, and generic
programming.
COURSE OBJECTIVES:
At the end of this course, the student should have mastered the following
objectives.
Data Structures
- Define the following concepts:
Positional ADTs: vector, list, deque, stack, queue
Associative ADTs: set, table, associative array, priority queue
- Define the iterators associated with these ADTs
- Choose and use among these ADTs to solve various programming problems
- Implement a representative selection of these abstractions, including their
associated iterator classes and including performance constraints (in terms of
runtime complexity) on the operations.
- Implementations should include the following:
- vector
- list
- deque
- stack
- queue
- priority queue
- ordered set
- graph (directed and undirected)
Note that this implies the detailed understanding of trees of several types as
implementation structures and the use of template classes as well as the
elementary study of algorithms and their complexity.
Algorithms
- Be able to prove correctness of various algorithms.
- Be able to give an informal complexity analysis of various algorithms.
- The various algorithms should include:
- Implementations of all operations of the ADTs mentioned above
- Sequential Search
- Binary Search
- Push and Pop Heap
- Heap Sort
- Breadth and Depth First Search
Generic Programming
- Define and use generic containers as
class templates with typename template parameters
- Show how each ADT above can be realized as generic container
- Define and use generic algorithms as
function templates with iterator template parameters
- Show how various algorithms can be realized as generic algorithms
- Define and use predicate classes and objects
- Define and use function classes and objects
COURSE MATERIALS:
The following materials are required:
- Lecture Notes (Slides and Narrative) available through Canvas
and also through the Course Calendar under "Lectures"
- Code Distribution Library: progressively released at
[LIB] = /home/courses/cop4530p/LIB/
(see Chapter 0 of Lecture Notes for details)
- Assignment Documents: progressively released through the Course Calendar.
- Course Text: Weiss, Mark. Data Structures & Algorithm Analysis in
C++ (4th ed), Addison Wesley, 2014. ISBN: 0-13-284737-X
- Alternate (or supplemental): Sedgwick, Robert. Algorithms (parts
1-5) (3rd edition, C++). Addison-Wesley, 1998 (11th printing, June, 2011.)
- Alternate (or supplemental): Sedgwick, Robert and Wayne, Kevin.
Algorithms (4th edition, Java). Addison-Wesley, 2011.
The following optional reference books are sanctioned for this course.
- Stroustrup, Bjarne. The C++ Programming Language (4th
edition). Addison-Wesley, 2013.
ISBN 0-321-56384-0. Highly recommended C++
reference, written by the language inventor.
- Savitch, Walter (2016), Absolute C++ (6e), Pearson. (Current text for COP3330.)
- Deitel, H.M. and Deitel, P.J. (2003 - 2015). C++: How to Program (various
editions). New Jersey: Prentice Hall.
The "late objects" edition was the text for COP 3330 in prior years.
- Cormen, T.H., Leiserson, C.E, Rivest, R.L., and Stein, Clifford (2009). Introduction to
Algorithms (3rd edition). New York: McGraw-Hill.
ISBN
978-0-262-03384-8. The text for COP 4531 - no harm in getting it early.
- Oram, A. and Talbott, S. (1991). Managing Projects with
make. Sebastopol, CA: O'Reilly & Associates.
ISBN 0-937175-90-0. Make is a necessary tool for modern project
management. There are also good on-line references.
- Cameron, D., Rosenblatt, B., and Raymond, E. (1996). Learning GNU Emacs,
2nd Edition. Sebastopol, CA: O'Reilly & Associates.
ISBN 1-56592-152-6.
Emacs is a text-based IDE for programming for a
non-MSWindows environment. It will be necessary for this course as well as other
future courses where you may be asked to write in Lisp, Prolog, C, or SPARC Assembly.
The following are useful on-line references:
GRADING/EVALUATION:
Course Grade.
The overall grade for COP 4530 is determined by a weighted average as shown in
Table 2 below. There will be two exams - one in-term and one final -
counting 25% and 30%, respectively, of the
course grade. Assignments count the other 45%
cummulatively.
The dates for the exams are shown in
Table 1 below. Due dates for assignment deliverables will be available on the
Course Calendar.
Table 1: Exam Schedule |
Exam |
On-Line Window (Dates Inclusive) |
Midterm Exam |
Sat Jun 22 - Fri Jun 28 |
Final Exam |
Sat Jul 27 - Fri Aug 2 |
Table 2: Course Points |
Item | Points/Item |
No of Items | Points [Percent] |
Projects 1-7 | 50 | 7 | 350 [35] |
Project 8 | 100 | 1 | 100 [10] |
Midterm Exam | 250 | 1 | 250 [25] |
Final | 300 | 1 | 300 [30] |
Total Points [Percent]: | 1000 [100] |
|
Table 3: Letter Grades |
Percent | Grade |
93 - 100 | A |
90 - 92 | A- |
88 - 89 | B+ |
83 - 87 | B |
80 - 82 | B- |
78 - 79 | C+ |
73 - 77 | C |
70 - 72 | C- |
68 - 69 | D+ |
63 - 67 | D |
60 - 62 | D- |
0 - 59 | F |
|
NOTES:
- The exam windows run for 7 days, which includes a weekend. These windows cannot be widened or
otherwise changed. It is very important to check with your testing center to
verify that the exam can be taken in the window. Changing testing centers may be
necessary, but requires planning in advance.
- FSU Testing requires that you register your test site within the first two
weeks of classes. Be sure to take care of that promptly.
- Deadlines for deliverables are firm. Please note the deadlines listed in the
calendar.
|
|
See Assessment of Programming
Assignments for policies on assessment, deadlines, grace periods,
and late submissions.
ABET/SACS Program Outcomes Assessment
Department and University policy asserts that COP 4530 is to be used to assess
some of the required ABET and SACS outcomes for the degree program. The outcomes assessed
are:
(a) An ability to apply knowledge of computing and mathematics appropriate to
the discipline [recursion, data structures]
(c) An ability to design, implement, and evaluate a computer-based system,
process, component, or program to meet desired needs
(i) An ability to use current techniques, skills, and tools necessary for
computing practice
These will be assessed using the following rubric based on the overall percent
grade on course assignments.
Rubric | I | E | H |
Key:
I = ineffective
E = effective
H = highly effective |
Grade on assignments 90% or higher | - | - | x |
Grade on assignments 70% or higher but less than 90% | - | x | - |
Grade on assignments below 70% | x | - | - |
In order to earn a course grade of C- or better, the assessment must result in
Effective or Highly Effective.
In addition, ABET/SACS requirements require a passing average on proctored
exams is necessary to pass any class. The practical effects are
summarized as follows:
A passing grade [70% or higher] in both
assignments and exams is required to earn a
grade of C- or better in the class.
Finally we have the following constraint to earn the highest grade:
Credit for a working version of every assignment is necessary
in order to be eligible for the grade of A or A- in the class.
COURSE POLICIES:
First Day Attendance Policy: Official university policy is
that any student not attending the first class meeting will be automatically
dropped from the class. For ALL STUDENTS: This policy is implemented using the
FDA Quiz in Canvas. Answering in the affirmative by the posted deadline
is interpreted as first
day attendance.
Regular Attendance Policy:
The university requires
attendance in all classes. Attendance in distance classes shall mean regular
access to the course web site via canvas.fsu.edu and regular
participation in the class discussion forums. Here, "regular" shall mean a
substantial amount of time on a weekly basis. Note that individual access
statistics are maintained by Canvas. It is expected that every student read
every new discussion post daily.
Excused absences include documented illness, deaths in the immediate family and
other documented crises, call to active military duty or jury duty, religious
holy days, and official University activities. Accommodations for these excused
absences will be made and will do so in a way that does not penalize students
who have a valid excuse. Consideration will also be given to students whose
dependent children experience serious illness.
Proctored Exam Policy: All exams must be proctored and taken at
an approved testing site during the exam window.
For on-campus students, the exam must be taken at the regularly scheduled class
meeting that falls within the exam window.
For distance/online students, it is the student's responsibility to arrange for proctored exams in
compliance with the FSU standards. Go to
Student Testing Responsibilities for complete information
on setting up a proctored exam site. Please note also that students taking exams
on main campus in Tallahassee are now required to sign up for a time slot at the
site.
Exam Makeup Policy:
An exam missed without an acceptable excuse will be recorded as a grade of zero
(0). The following are the only acceptable excuses:
- If submitted prior to the day of the scheduled exam:
- A written and signed explanation as to why the exam will missed. Illness or required
professional travel are acceptable, while discretionary or personal travel
are not. In any case the explanation should be accompanied by corroborating
documentation, including names and contact information, and the explanation must
be accepted by the instructor prior to missing the exam.
- Evidence from a university official that you will miss the exam due to
university sanctioned travel or extracurricular activity.
- If submitted on or after the day of the scheduled exam:
- A note from a physician, university dean, spouse, parent, or yourself indicating an illness
or other extraordinary circumstance that prevented you from taking the exam and
could not be planned for in advance. Again, corroborating information should be
supplied.
All excuses must be submitted in writing, must be signed by the excusing
authority, and must include complete contact information for the authority,
including telephone numbers and address.
Missed exams with acceptable excuse will be made up or assigned the average
grade of all other exams, at the option of the course instructor.
Missed, and acceptably excused, final exams will result in the course grade of
'I' and must be made up in the first two weeks of the following semester.
Grade of 'I' Policy:
The grade of 'I' will be assigned only under the following exceptional circumstances:
- The final exam is missed with an accepted excuse for the absence. In this
case, the final exam must be made up during the first two weeks of the following
semester.
- Due to an extended illness or other extraordinary
circumstance, with appropriate documentation, the student is unable to
participate in class for an extended period. In this case, arrangements must be
made to make up the missed portion of the course prior to the end of the next semester.
Completion of Work Policy:
To be eligible for the grade of A or A-, working versions of all programming
assignments must be submitted.
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 students
are expected to uphold the Academic Honor Policy.
Please note the following items are defined and made violations by the policy:
- Plagiarism
- Cheating
- Unauthorized Group Work
- Fabrication, Falsification, and Misrepresentation
- Multiple Submission
- Abuse of Academic Materials
- Complicity in Academic Dishonesty
- Attempted ...
- Students are expected to do their own work on any classwork or
test submitted for a grade (unless designated as a group assignment).
- It is NOT appropriate to work on coding 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 appropriate to discuss
conceptual issues with other students.)
- It is NOT appropriate to share any amount of code with your
classmates
- DO NOT POST YOUR CODE ONLINE. If I find your code online (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. DO
NOT USE online compilers, chat rooms, or
post any amount of your code on the web. I'll find out, trust me.
- If you've posted a homework question for a solution on sites like Chegg,
course hero, etc. This is considered a violation of the honor code
policy.
- "Pay for code" is also obviously an honor code violation. You wont pass my
tests anyways if you choose this route.
- Discussing solutions and techniques on assignments with other
students after the assignment has been graded and handed back
is okay, and encouraged.
- When you turn in work 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.
- If you have previously taken the course, you are NOT permitted to submit
your old work for any assignment
in the current semester. You must do your work from scratch. This is
included in the FSU honor policy. See the
link above.
- 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 accessed via the policy. This is a UNIVERSITY policy. (Added
for clarification, 2/17/15)
- It is HIGHLY suggested that you only go to our course TA's or the instructor
for help if/when needed. Outside tutors are
NOT recommended
- Proctored Exam Violations. All exams in this course are required to be
proctored. Proctors are trained professionals and will be observing you while
sitting for the exam. Any suspicious activity flag that is raised by
an exam proctor will result in automatic initiation of formal
proceedings with the FSU Dean of Students.
Violations of the academic honor policy may result in failing grades and/or
dismissal from the university. All students are expected to read and understand
the policy.
Checking for Plagiarism: FSU subscribes several databases of papers and computer
source code that have been previously published or turned in for credit in
university courses worldwide. Student work may be checked in one or more of
these databases for originality. Note that turning in work that contains uncited
quoted material from any source is considered plagiarism and a violation of the
FSU honor code.
Student Help Policy:
Students in this class are encouraged to help each other within the official
course Canvas site. Instruction staff will also help there and be able to
monitor student interaction to assure correctness and guide the nature of the
help when appropriate.
It is a violation of the course code of ethics for students to receive help in a
medium outside the visibility of the course, such as in a third party
discussion board, chat room, or via email. The only help that is condoned is
that obtained from any instructor or from discussions on the Canvas course
site or in class. If help outside the course environment is discovered, both the giver and
receiver of help will be given a failing grade.
Code Distribution Policy:
Department policy is that students and former students are not permitted to
freely distribute or make available to the public any code that has been used
as
part of a course assignment. Former students who have either graduated or are
cleared for graduation may put code in a portfolio that is password protected
and may divulge the password to appropriate individuals for the purpose of
applications for employment and other professional evaluations.
Transgression of this policy will be considered honor code violations.
A list of known violations will be maintained by the department.
AMERICANS WITH DISABILITY 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
EMERGENCY MANAGEMENT INFORMATION:
Information regarding the status of FSU in an emergency situation may be
obtained from the following sources:
- For information specific to the Panama City Campus go to the FSUPC web page at http://www.pc.fsu.edu/ or call the Campus
Hotline number 850-770-2000
- For information related to FSU in general and the Tallahassee Campus go to
the FSU alerts web page at http://www.fsu.edu/~alerts/
- For state-wide and national information, go to the Florida Division of
Emergency Management information pages at http://www.floridadisaster.org/
Any specific information related to this class will be posted on the course web site
or sent via email to your fsu email address.
SYLLABUS CHANGE POLICY:
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.
Such notice will be in the form of a posting to the course web site on instructure.fsu.edu.
|
|