Instructor: Dr. Shieu-Hong Lin ![]()
Class: Tuesday, Thursday 3:00~4:15pm, BUSN 210
Office Hours: Mon, Wed. 12:00~1:15pm, Math & CS department
Course objectives:
·
Learn important algorithmic
design paradigms such as divide and conquer, dynamic programming,
branch-and-bound, and greedy algorithms and how they can reduce the
computational time of problem solving in critical real world application
domains such as social media, data mining, sequence analysis in bioinformatics,
and transportation industry.
·
Develop the
skills to analyze computational problems, design efficient algorithms for
problem solving, prove the correctness of algorithms, analyze the computational
complexity of algorithms, and implement the algorithms as functional computer
programs.
·
Understand the
essence of basic complexity classes such as N,
NP, NP-Complete, Pspace-Complete, the question of
whether P equals NP and its implication, and the use of approximation algorithms and
randomized algorithms to cope with time complexity.
Books:
Grading
1. Reading 15%
2. Presentation and participation 15%
3. Homework and programming assignments 40%
4. Exams 30%
Presentation and collaboration
groups
·
You can choose to
work alone as a one-person group or choose to team up with another student to form
a group of two for collaboration in presentation. (To ensure everyone can find one
partner, we may exceptionally allow one group of 3.) For each reading assignment,
we will assign one group to present key concepts and/or algorithmic examples in
the reading in the class. You don’t need to understand every bit of the reading
but you should collaborate within the group in advance to prepare for the presentation
and help the class understand the stuff to the class, possibly including
questions you have from the reading.
Homework and programming
assignments, integrity policy
·
The homework and programming
assignments require you to apply your understanding of algorithmic design explored
in the readings to implement efficient computer programs for solving
interesting computational problems. You are encouraged to interact with one
another (for example in your presentation group) through brainstorming and
discussions in or outside the class. However
everything you submit, either your solutions or your program, should be truly
yours by the time of submission, which means that you should be able to clearly
explain the logic of your solutions from scratch and write your code without
the help of other people.
Weekly progress report
·
Starting from the second week, by Thursday
each week, you should spend around 5~10 minutes to write a brief progress
report (see this template)
regarding the latest progress made in reading, homework, and programming, and
email the report to Dr. Lin.
Tentative Schedule
·
Week 1~2 Overview of Algorithmic Paradigms
·
Week 3 Asymptotic notation &
complexity analysis
·
Weeks 4-5 More on divide and conquer
·
Weeks 6-7 More on dynamic programming
·
Weeks 8-9 More on greedy algorithms
·
Weeks 11-12 More on applications
·
Week 13 P,
NP, and PSPACE
·
Week 14 Approximation algorithms
·
Week 15 Randomized algorithms
·
Final week Final Exam
Students desiring
accommodations on the basis of physical, learning, or psychological disability for
this class are to contact Disability Services. Disability Services is located
in the
ACADEMIC HONESTY POLICY: We are committed at