Messages

  • Hello World!

Learning outcomes and competences

After attending this course, participants should be able to
  • Given an algorithm, analyze its correctness and running time.
  • Given a problem, design a correct and efficient algorithm for it, express it in a form that a programmer can easily convert into code.
  • Know the mathematical techniques that you will need to analyze your algorithms.

  • Topics

    In this course we will discuss some basic techniques for algorithm design and analysis, including:
    - Divide-and-conquer
    - Dynamic programming
    - Greedy algorithms
    - Graph algorithms
    - Approximation and randomized algorithms
    Course Introduction

    Lecturer

    Qin Zhang
    Email: qzhangcs@iu.edu
    Office hour: Wednesdays 10-11am, Luddy 3044

    Associate Instructors

    Kaiwen Liu
    Email: kaiwliu@iu.edu
    Office hour: Tuesdays 4-5pm, Luddy 2040 area

    Time and place

    3:00–4:15pm Monday/Wednesday, Myles Brand Hall (Informatics) E107


    Texbooks

    Required Textbook: [KT] Algorithm Design, J. Kleinberg, E. Tardos. Pearson Education.


    Tentative Schedule

    - Preparation (overview, Big-O notations, some basic problems and running times, graph representation, graph traversal, topological sort), 5 lectures
    - Greedy algorithms (interval scheduling, shortest path, MST), 5 lectures
    - Mid-term I review
    - Mid-term I (beginning of October)
    - Divide-and-conquer (mergesort, counting inversions, closest pair, integer multiplication), 4 lectures
    - Dynamic programming (weighted interval scheduling, subset sum, sequence alignment), 4 lectures
    - Mid-term II review
    - Mid-term II (early November)
    - Dynamic programming (all pair shortest path), Divide-and-conquer (FFT), 3-4 lectures - (Advanced topics) Appoximation and randomized algorithms (finding median / quicksort, clustering, closest pair), 4 lectures
    - Final review
    - Final

    Grading

    • Assignments 30%

      Four required written assignments, one optional written assignment. Assignments are posted in Canvas. The answers should be submitted via Canvas . Please typeset in your favorite software (best in Latex).
      No extensions will be granted unless emergencies; medical emergencies need doctor's notes covering the deadline dates. Otherwise, we use the following rule: One day late, deduct 10% of the points; two days late, deduct 30% of the points; more than two days late, deduct 100% of the points.

    • Exams 70%

      (1) Mid-term I 20%
      (2) Mid-term II 20%
      (3) Final 30%
      There will be NO make-up exams. If students have to miss the in-class midterm exam due to family/medical emergencies (and/or other reasons which will be granted on a case by case basis; medical emergencies need doctor's notes covering the exam dates), they need to contact the instructor before the exams for permission, and their other exam grades will be re-weighted. Internship and job application interviews and paper deadlines are NOT proper reasons to miss an exam.

    Course policies

    For assignments, students may discuss answers with anyone, including problem approaches and proofs. But all students must write their own proofs, and write-ups. The names of all people that you have talked to should be listed at the beginning of the first page. If a solution comes from existing papers/web/books, they must be properly cited, and you must write the solution in a way that demonstrates your understanding (simply copying the solution will be considered as plagiarism, and will result an "F" for the entire course). All deadlines are firm. No late assignments will be accepted unless there are legitimate circumstances.
    For more details, see Indiana University Code of Student Rights, Responsibilities, and Conduct.

    Prerequisites

      Courses equivalent to IUB CSCI-C241 "Discrete Structures for Computer Science", CSCI-C343 "Data Structures", and MATH-M 216 "Analytic Geometry and Calculus II" (or MATH-M 212 CALCULUS II).