COMP 554 – Analysis of Algorithms – fall 2019

Course Syllabus

  • Course URL: http://prof.msoltys.com/?page_id=4952
    (This course was taught previously in the Spring 2015, in the Fall 2016, and in the Spring 2018)
  • Canvas Page: https://cilearn.csuci.edu/courses/10409
  • CI Catalogue URL
  • Course Syllabus
  • Instructor: Michael Soltys <michael.soltys@csuci.edu>
  • Twitter: @MichaelMSoltys
  • Course Outline: This course is an introduction to the analysis of algorithms. We are going to cover some basics of proving algorithm correctness (pre/post-condition, loop invariants, and termination), and then we are going to spend the bulk of the time on three classical categories of algorithms: Greedy, Divide-and-Conquer, and Dynamic Programming. We are going to see examples of problems that yield to these types of algorithms. We will discuss NP-completeness when we meet Dynamic Programming algorithms. We will also see three more advanced types of algorithmic approaches: Approximation, Online and Randomized. The last one is intimately connected to modern Cryptography, and so we will introduce the algorithmic foundations of Cryptography as well.
  • Lectures: Wednesdays, 6-9pm, Location: Sierra Hall 1422.
  • Textbook: An Introduction to the Analysis of Algorithms, by Michael Soltys.
  • Grading: A midterm worth 25% and a final exam worth 25%, both to be written without aids and individually in class. There will also be 10 short assignments, each worth 5%. The assignments have to be completed in groups of three one group of 2 or one group of 4 will be allowed if not possible otherwise. Please form a group at the beginning of the course, and worked on all the assignments with the same group. There is tremendous value in working on problems with your group; it amplifies the learning experience, and teaches teamwork.
  • How to avoid plagiarism: As mentioned above, the assignments will be written in groups. Each group has to work independently of the other groups; verbal discussions of problems among groups are allowed, but you should not show written notes, and you should not leave such discussions with written notes. The same applies to the final individual exam.
  • Attendance: Students are encouraged but not required to attend the lectures. The assignments will be posted online.
  • Students with disabilities: Cal State Channel Islands is committed to equal educational opportunities for qualified students with disabilities in compliance with Section 504 of the Federal Rehabilitation Act of 1973 and the Americans with Disabilities Act (ADA) of 1990. The mission of Disability Accommodation Services is to assist students with disabilities to realize their academic and personal potential. Students with physical, learning, or other disabilities are encouraged to contact the Disability Accommodation Services office at (805) 437-8510 for personal assistance and accommodations. Please discuss your arrangements with the instructor as soon as possible.
  • Check this web page regularly for announcements.

Announcements and class diary

  • August 28, 2019: There is going to be no class on Wednesday September 4th, as the instructor is away at a conference (KES 2019 in Budapest). Please read book section 1.1, What is Correctness?, pp. 1-10, and do all the exercises; this is important foundations to the rest of the course. On September 11th, we will continue with section 1.2, Ranking Algorithms.
  • August 28, 2019: First class today at 6pm in Sierra Hall 1422.
  • June 26, 2019: Page set up.

Assignments

  • Assignment 1: Show that for any integer k\ge 1, if a>b\ge 1 and b<F_{k+1} (where F_i is the i-th Fibonacci number), then Euclid’s algorithm on a,b takes fewer than k iterations of the while loop. (Ignore swaps or use 2k instead.)
  • Assignment 2: in 2004, Google ran a recruitment campaign where they posted the following billboard along the main freeway (101) running through Silicon Valley, and later at other locations in the country. Would you be able to apply for this position? You can test yourself by doing this assignment. Please submit the correct URL, as well as a description of how you achieved it. In particular, your algorithm has to be from scratch meaning that you should find a way to generate the digits of e and do a search through them for the appropriate prime. Please do not look up the solution online.