Algorithm Design and Analysis
Instructor:
◦ Farnaz Dargahi
◦ Office: SW2-363
◦ Please email to confirm all office hour appointments
◦ Email: [email protected]
Background
◦ Computer Science and Software Engineering(Ph.D,
MSc, BSc.)
Research Area
◦ Distributed service scheduling
◦ Multi-agent Systems
◦ Algorithmic Mechanism Design, Game Theory
◦ Wirelesses sensor Networks
Prior to that... software development
This is a course on algorithms
◦ Explicit descriptions of procedures to solve
problems
Why we need to study algorithms?
◦ Is recognized as the core of computer science
◦ To know a standard set of important algorithms
◦ Design new algorithms and analyze their efficiency
Algorithms don’t change quickly
◦ 20 years ago, nobody was learning Java
◦ They were learning the same algorithms
◦ They are good programmers now
Describe common algorithms
Analyze pseudo-code using asymptotic notation
Design algorithms using several techniques e.g. Divide and
Conquer, Greedy, Graph techniques, etc
Implement algorithms in Java
Recognize different types of problems and how to go about
solving them
Argue the correctness of algorithms
Textbook
◦ “The Design and Analysis of Algorithms,” Levitin In
the book store
Grading:
Criteria % Comments
Lab Assignments 25 Weekly assignments, 10 assignments in total
Quizzes 20 Biweekly held in lab, 5 quizzes in total
Midterm Exam 25
Final Exam 30
Total 100
Note: the passing grade in this course is 50%.
Java (Comp 2526)
◦ You need to be able to program in Java
Used for assignments
Used to test algorithm efficiency
◦ I am not going to teach you Java
◦ You can use any IDE you want
◦ You are expected to write “good code” as you
learned previously
Discrete math (COMP 2121)
◦ Parts of this course are theoretical
◦ Parts of this course use math
Solve polynomial equations
Set up and solve summations
Work with logarithms
◦ I expect you know these things
◦ I am happy to review and explain them
PLEASE DON’T FALL BEHIND BECAUSE OF BASIC MATH
Not an official pre-req… but C programming
is good to know
◦ Lots of web resources on algorithms in C
◦ Lots of procedural descriptions of algorithms
◦ It is useful to understand C when you read it
Lectures
◦ Focus on one core topic each week
Labs
◦ Reinforce topic through practice
Homework/reading
◦ Is my way of telling you what I think is important
◦ You should care about this
Do practice problems
◦ The only way to get good in algorithm design is
practice
Keep up with material
◦ It is hard to succeed “cramming” for tests
If you do the reading/homework:
◦ Quizzes and labs will be easy
Labs are done in the lab time
◦ Practice with problem solving
◦ Mandatory attendance
◦ Sometimes on paper, sometimes programming
Quizzes are also done in the lab time
◦ 20-30 minutes, individually