Overview

CSCI 140 is an introduction to algorithm design and analysis techniques. The course covers basic techniques used to analyze algorithms, basic techniques used in designing algorithms, and important classical algorithms. The goal is to learn how to apply all of the above to designing solutions to new problems (a skill that you will practice throughout the semester). Grades will be based on assignments, exams, and participation. The prerequisite for this class is CS 62.

Resources

Instructor: Dr. Dave
e-mail: David.last_name@pomona.edu
office hours: Edmunds 224

Mon
3-4pm

Wed
3-4pm

Thu
9:30-10:30am

  and by appointment

Mentor hours:

Thu
7-8pm (Sae)

Sat
4-6pm (Taylor)

Sun
9-11am (Catherine)

Sun
2-4pm (Stanley)

Sun
7-9pm (Elshiekh + Sae)

Group session hours:

Thu
4:30-5:30pm (Catherine)

Thu
6-7pm (Sae)

Thu
7:30-8:30pm (Elshiekh)

Fri
9:30-10:30am (Taylor)

Fri
5-6pm (Stanley)

Assignment submission: Gradescope
Discussion/questions: Slack

Textbook: Introduction to Algorithms, 3rd/4th Edition by Cormen, Leiserson, Rivest, and Stein (CLRS). We will have some copies in the Edmunds lab library.

If you need accommodations please contact the Disability Coordinator on your home campus. The process for Pomona students is available here.

Logistics

The basic flow each week will be as follows:

  • Thursday/Friday: group sessions
  • Friday 10pm: group assignment due
  • Sunday 11:59pm: weekly assignment due

Each week there will be a short, group assignment. You must attend one of the group sessions on Thursday/Friday and complete the group assignment with 2-4 of the attendees at that session. These group assignments will be low-stakes and are mostly designed to get you warmed up for the regular assignment that week.

In addition, there will be a weekly assignment. The assignments will mostly be done and submitted in pairs. For the first four assignments you will need to work with a different partner on each assignment. After that, you can choose whoever you would like to work with, but must still work with a partner. You may discuss the assignment problems with anyone else currently taking cs140 (or with the TAs or myself), but each pair must write up their own solution.

You may submit up to two assignments 24 hours late.

Finally there will be three midterms.

The breakdown of grades will be as follows:

  • 24% midterm (8% each)
  • 20% final exam
  • 10% group work
  • 46% assignments

Calendar

This is a high-level outline of the planned syllabus. Note that the calendar is subject to change. Unless otherwise specified, the readings are in CLRS.

Day Date Topic Reading Assignments
T 8/27 intro/math basics (ppt), pseudocode example (.tex) Ch 1, 2
Th 8/29 big-O (ppt)) Ch 3 Assign 0 (.tex)
T 9/3 recurrences (ppt)
Th 9/5 more recurrences (ppt) Ch 7 Group 1
Assign 1 (.tex)
T 9/10 sorting concluded (ppt) Ch 8 (optional)
Th 9/12 order statistics, data structures review (ppt) Ch 9, 10 Group 2
Assign 2 (.tex)
T 9/17 binary search trees (ppt) Ch 12, 13 sample midterm (solutions)
Th 9/19 midterm 1 Group 3
Assign 3 (.tex) (due 9/29 at 11:59pm)
sample files
T 9/24 amortized analysis (ppt) Ch 16
Th 9/26 heaps, binomial heaps (ppt) Ch 6 Group 4
T 10/1 dynamic programming Ch 14
Th 10/3 more dynamic programming Group 4.2
Assign 4
T 10/8 even more dynamic programming
Th 10/10 greedy algorithms
T 10/15 fall break Ch 15
Th 10/17 more greedy algorithms No group assignment
T 10/22 midterm 2
Th 10/24 graph basics Ch 20
T 10/29 more graphs Ch 21
Th 10/31 spooky shortest paths Ch 22
T 11/5 all-pairs shortest paths Ch 23
Th 11/7 network flow Ch 24
T 11/12 network flow applications Ch 25
Th 11/14 NP complete Ch 34
T 11/19 NP complete reductions
Th 11/21 midterm 3
T 11/26 linear programming
Th 11/28 Thanksgiving
T 12/3 review
The take-home final exam will need to be completed by the end of the day on Wednesday, 11/11.