Instructor: Dimitris
Papamichail
Office: Forcina Hall 458
Email: papamicd (at tcnj)
(most
emails are answered within 24 hours during business days)
Office
Hours: Tuesdays
3:30pm – 5:00pm, Wednesdays 10am – 11:30am, and by appointment.
Class
Time: Tuesdays/Fridays
11am – 12:20pm (CSC335-1)
Tuesdays/Fridays
3:30pm – 4:50pm (CSC335-2)
Class
Room: Forcina Hall, room 407
Course Description
This course presents the
major principles of algorithm design and analysis, and applies those principles
to classical problems in computer science. Topics include algorithm complexity,
data structures, divide and conquer, searching and sorting, greedy algorithms, graph
search and traversal, network flow, bipartite matching, dynamic programming,
approximate string matching, partitioning, skip lists, and union-find.
Prerequisites: CSC 230 or
250, and CSC 270, both with a minimum grade of C.
Course
Units: 1
Course
Materials
Textbook – The
required textbook for this course is:
Other useful books in the field are:
Course Requirements
á
Readings
& Participation
á
Homework
assignments
á
Presentation
á
Midterm
exam
á
Final
exam
Course Purpose &
Learning Goals
The purpose of
this course is to provide students with an introduction to algorithms and data
structures. By the end of the course students will be able to:
1.
Understand
the distinction between constant factor improvements in performance and
improvements in asymptotic growth rates.
2.
Given
an algorithm, empirically or analytically determine its complexity.
3.
Given
a problem for which efficient algorithmic techniques are known, research and
apply those techniques.
4.
Given
a problem for which no efficient algorithmic techniques are known, apply major
principles of algorithm design to seek a suitable algorithmic solution.
Other outcomes addressed
by the course:
1.
An
ability to analyze a problem, and identify and define the computing
requirements appropriate to its solution
2.
An
ability to apply mathematical foundations, algorithmic principles, and computer
science theory in the modeling and design of computer-based systems in a way
that demonstrates comprehension of the tradeoffs involved in design choices.
In this class,
the deep learning outcomes associated with TCNJÕs 4th hour are
accomplished by algorithmic problem assignments involving analytical and creative
thinking, which require the students to devote additional research time towards
solving them, and the discussions that take place about these assignments in
and out of class.
Course Topics and
Schedule (subject to change)
Topics and Schedule are
listed below. Note that dates are tentative.
Dates |
Topic |
Assignment |
8/25 |
Introduction |
|
8/28 |
Reasoning about
correctness, problem modeling |
Homework Assignment 1 (due on 9/15) |
9/1 |
Machine models, big-Oh
notation |
|
9/4 |
Growth rate and
dominance, logarithms and properties |
|
9/11 |
Elementary data
structures |
|
9/15 |
Dictionary data
structures |
Homework Assignment 2 (due on 9/29) |
9/18 |
Trees |
|
9/22 |
Heapsort |
|
9/25 |
Priority queues |
|
9/29 |
Quicksort |
Homework Assignment 3 (due on 10/16) |
10/2 |
Linear sorting |
|
10/6 |
Binary search |
|
10/9 |
Divide and conquer |
|
10/16 |
Data structures for
graphs |
Midterm |
10/20 |
Midterm |
|
10/23 |
Breadth First Search
(BFS) |
Homework Assignment 4 (due on 11/6) |
10/27 |
Depth First Search (DFS) |
|
10/30 |
Minimum spanning trees |
|
11/3 |
Shortest paths |
|
11/6 |
Network flows |
Homework Assignment 5 (due on 11/20) |
11/10 |
Bipartite matching |
|
11/13 |
Space/Time tradeoff |
|
11/17 |
Approximate string
matching |
|
11/20 |
Longest increasing
subsequence |
Presentation (due on
12/4) |
11/24 |
The partition problem |
|
12/1 |
Skips lists, union-find |
|
12/4 |
Presentations |
Course Policies
á
Course
material will be posted on canvas.
Check often.
á
We
will utilize the Piazza platform (www.piazza.com) for questions and discussions.
á
Homework
assignments will be turned in via canvas, and a hard copy will be delivered in
class.
á
Late homework
deliverables are accepted with penalty: 20% per day.
á
Grades
can be disputed for one week following the return of graded work only.
á
Please
be on time and prepared for class, and silence all cell phones before class
starts.
Additional
Information:
The midterm and final exams may
include problems that are similar to ones encountered in the homework
assignments. Failing to solve these problems will indicate a lack of individual
effort in the homework assignments.
Grading
Grades
will be assigned as follows:
o
Class
participation: 10%
o
Homework:
40%
o
Presentation:
10%
o
Midterm
exam: 15%
o
Final:
25%
Letter
grades are assigned in relation to final score. Traditionally scores above 90%
receive ÔAÕ, scores from 75% – 90% receive ÔBÕ, scores from 60% to 75%
receive ÔCÕ, scores from 50% to 60% receive ÔDÕ, and scores below 50% receive
ÔFÕ, although ranges may vary.
Selected TCNJ Policies
TCNJÕs final
examination policy is available on the web: http://policies.tcnj.edu/policies/digest.php?docId=9136
Attendance
Students are
expected to be present, on time, and prepared to participate in each scheduled
class session as detailed in TCNJÕs attendance policy, available on the web at:
http://policies.tcnj.edu/policies/digest.php?docId=9134
Academic
Integrity Policy
The Academic
Integrity Policy of TCNJ, available on the web at: http://policies.tcnj.edu/policies/digest.php?docId=7642
Americans
with Disabilities Act (ADA) Policy
Any student who
has a documented disability and is in need of academic accommodations should notify
the professor of this course and contact the Office
of Differing Abilities Services (609-771-2571). Accommodations are individualized and in
accordance with Section 504 of the Rehabilitation Act of 1973 and the Americans
with Disabilities Act of 1992.
TCNJÕs
Americans with Disabilities Act (ADA) policy is available on the web:
http://policies.tcnj.edu/policies/digest.php?docId=8082