Chris Pollett> Old Classes> CS255
( Print View )

Student Corner:
[Submit Sec1]
[Grades Sec1]

[Lecture Notes]
[Discussion Board]

Course Info:
[Texts & Links]
[Description]
[Course Outcomes]
[Outcomes Matrix]
[Course Schedule]
[Grading]
[Requirements/HW/Quizzes]
[Class Protocols]
[Exam Info]
[Regrades]
[University Policies]
[Announcements]

HW Assignments:
[Hw1] [Hw2] [Hw3]
[Hw4] [Hw5] [Quizzes]

Practice Exams:
[Midterm] [Final]

CS255 Spring 2019 Sec1 Home Page/Syllabus

Design and Analysis of Algorithms

Instructor: Chris Pollett
Office: MH 214
Phone Number: (408) 924 5145
Email: chris@pollett.org
Office Hours: MW 4:30-5:30pm
Class Meets:
Sec1 MW 1:30-2:45pm in MH422

Prerequisites

To take this class you must have taken:
CS155
with a grade of C- or better.

Texts and Links

Required Texts: Introduction to Algorithms, 3rd Ed.. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
Randomized Algorithms. Rajeev Motwani and Prabhakar Raghavan
Online References and Other Links: Java Website.
Python Website.

Description

This course covers the basics of randomized algorithms, parallel algorithms, distributed algorithms, algorithms related to the theory of NP-completeness, and approximation algorithms. Randomized algorithms are algorithms which make use of a random number generator. For instance, one fast way to check if a number is prime makes of such a generator. Parallel algorithms are algorithms which are designed to be partitionable with minimal overhead among many processors who share a global clock. Distributed algorithms are algorithms designed to work on multiple processors which don't share a global clock. An example situation might be to get an algorithm to get a bunch of computers on a network to agree on a common value. NP problems are languages with polynomial time proofs of membership. For instance, given a potential factorization of a number we can in polynomial time check whether it is correct. NP-complete problems are problems in NP to which any other problem in NP can polynomially time reduced. We will consider different algorithms for during this kind of reduction. Approximations algorithms are usually efficient algorithms which approximately solve some optimization problem which is not known to have a efficient solutions. For instance, one might have an algorithm which approximately finds a traveling salesman tour. In addition to these algorithms, we will also go over the computer algebra algorithms neccessary to do basic cryptographic protocols such as RSA. By the end of this course, you should be able to code one example of a randomized algorithm, parallel algorithm, distributed algorithm, a polynomial time reduction, an approximation algorithm, and a computer algebra algorithm.

Course Learning Outcomes (CLOs)

By the end of this course, a student should be able to:

CLO1 -- Analyze or code a randomized algorithm

CLO2 -- Analyze or code a parallel algorithm using a thread library

CLO3 -- Analyze or code a parallel algorithm using a library such as OpenCL

CLO4 -- Analyze the correctness and run time of a distributed algorithm

CLO5 -- Given a problem within NP that is promised to be either in P or NP-complete prove which it is

CLO6 -- Analyze or code a number theoretic algorithm

CLO7 -- Analyze or code an approximation algorithm for a optimization problem whose decision problem is NP-complete.

Course Schedule

Below is a tentative time table for when we'll do things this quarter:

Week 1:Jan 28