Fall 2017 Syllabus

Time: MW 11:45-1:30 (section 2) MW 4:45-6:20 (section 1)
Location: LS 307 (section 2), Harney 435 (section 1)
Professor: EJ Jung
Office: Harney 403A
Office Hours: MW 10-11:30am, or by appointment
   I highly encourage you to make an appointment with me, and I'm available on Zoom (video conference) too.
Email: ejung@cs.usfca.edu (include 673 in the subject) - Piazza preferred

Teaching Assistants: Chengcheng Wang, Bingkun Yang
Contact: Use Piazza!
Office Hours: Bingkun - Mondays 6:30-8:30pm, Fridays 4-6pm in CSI 307 Chengcheng - Wednesdays 1:30-2:10pm, 3:25-3:55pm CSI 307 4:05-4:40pm CSI G12

Tutoring Center
You may also visit the CS Tutoring Center for help with this course.

Prerequisite:
Graduate standing

Text:
     Required: Cormen, Leiserson, Rivest, Stein Introduction to Algorithms, 3rd Edition

External Resources

Grading Policy
      Grades will be given according to scores on written homework assignments, midterms and finals, according to the following percentages.  

Assignment  Percentage Date
Homework 40% Approx. Weekly
Midterm 1 15% 10/04/2017
Midterm 2 15% 11/15/2017
Final (Comprehensive) 30% Saturday, December 9th, 2017 5:30pm - 7:30pm (both sections)
and will be assigned as follows:

A+ >100% B+ ≥87% C+ ≥77%
A ≥94% B ≥84% C ≥74%
A- ≥90% B- ≥80% C- ≥70%
F < 70%

Academic Honesty
All students are expected to know and adhere to the University of San Francisco's Academic Honor Code. Go to https://myusf.usfca.edu/academic-integrity/honor-code for details. You must never represent another person’s work as your own. Any student may be asked to reproduce any of his/her work at any time. Failure to reproduce work in a timely manner will be considered academic dishonesty. Copying answers from other students or sources during an exam or homework assignment is a violation of the university’s honor code. This includes copying answers or other material from the web, and having anyone other than yourself complete your assignments. It also includes working too closely with another student. Collaboration or discussion that results in the same or very similar answer indicates that you have not placed enough independent work into your solution and is a violation of the honor code. Flagrant or repeat violations of the honor code will result in an F in the course, a report to the University Academic Integrity Committee, and a report to the Dean. At the discretion of the instructor, a less severe penalty may be imposed for minor or first offenses. This is at the sole discretion of the instructor and any violation may result in an F in the course. Examples of honor code violations include but are not limited to:

Academic Honesty
     You are not allowed to search the web for solutions to the homework assignments. You are not allowed to use any solutions to previous version of this class in completing your homework assignments -- if you have any old solutions, throw them out now! While it is acceptable to discuss the homework problems at a high level with other students, you should not get into details, or tell another student the solution to a problem. You should write up the solutions to your homework problems entierly on your own. You should never look at the solutions of other students, or allow them to use your solutions.

Late Policy
     Late homeworks WILL NOT BE ACCEPTED.  If you have difficulty with an assignment, or some type of time conflict, the correct time to see me is before it is due.  Trying to get an extension on the due date itself will lead to sympathy from the instructor, but no extension.

Exams
The exam portion of your grade will be based on two exams administered throughout the semester and one exam administered during the final exam period. You are responsible for being in class on the day of the exam. Make-up exams will be given only in the case of a medical emergency verified by a doctor's note.

Exam Policy
If a student earns less than 60% on any two out of the three exams the student will get an automatic F for the class.

Students with Disabilities
If you are a student with a disability or disabling condition, or if you think you may have a disability, please contact USF Student Disability Services (SDS) at (415) 422-2613 within the first week of class, or immediately upon onset of disability, to speak with a disability specialist. If you are determined eligible for reasonable accommodations, please provide me with your SDS Verified Individualized Services and Accommodations (VISA) form, and we will discus your needs for this course. For more information, please visit: http://www.usfca.edu/sds or call (415) 422-2613.
I would like to hear from anyone who has a disability which may require seating modifications or testing accommodations or accommodations of other class requirements, so that appropriate arrangements may be made. Please contact me during my office hours or make an appointment.

Learning Objectives
      Upon successful completion of this course, you should be able analyze the running time and space requirements for complex algorithms, both recursive and iterative. You will understand a variety of fundamental computer science algorithms, and be able to modify them to solve related problems. Most importantly, you will improve your "algorithmic thinking" skills, and be better able to create novel algorithms for new problems.

Tentative Course Outline

The following is subject to change, given the interests/knowledge of the students

Introductions
Algorithm Basics
Mathematical Foundations
    O(), Ω(), o(), ω() Θ()
    Recurrence Relations
    Proof Techniques
Randomized Algorithms
Sorting & Selection
    Heapsort, Quicksort, Randomized Quicksort, Mergesort
    Selection Problem
         O(n lg n) Quicksort (worst case)
    sub-O(n lg n) sorting
        counting sorts, radix sort, bucket sort
Modifying Data Structures
    Read/Black Trees & Interval Trees
    Leftest Heaps
    Fibonacci Heaps
Dynamic Programming
    Relation to Divide and Conquer
    Fibonacci Numbers
    Matrix Chain Multiplication
    Longest Common Subsequence
    Polygon Triangulation
Greedy Algorithms
    Scheduling
    Huffman Codes
    Proving Correctness
    Matroids
Amortized Analysis
    Basic Concepts
    Aggregate method
    Accounting method
    Potential Method
Graph Algorithms
    Graph representations
    BFS / DFS
    Spanning Trees
    Shortest Path
    Maximum Flow
Other Topics (Time permitting)
    String Matching
    RSA & Encription
    Computational Geometry
    Approximation Algorithms