On this page:
Algorithm Analysis (Fall 2009)
1 Meetings
2 Projects
3 Homework Policy
3.1 Projects
4 Participation
5 Support
6 Textbook
7 Grading
7.1 Participation Total
7.2 Exercise Total
7.3 Exam Grades
7.4 Support Grade
7.5 Project Total
7.6 Final Numeric Grade
7.7 Final Grade
8 Team Work

Algorithm Analysis (Fall 2009)

This class is taught by Jay McCarthy.

We meet in TMCB 120 at 9am MWF.

Jay McCarthy’s office hours are 1pm to 4:45pm in 3328 TMCB.

There is a mailing list hosted at Google Groups. Use it to ask non-revealing questions and receive answers, as well as general course announcements.

1 Meetings

 

Date

 

Topic

 

Exercises

 

8/31*

 

Overview

 

 

9/2*

 

Ch 0, Sec 1.1 & 1.2

 

0.1-3, 1.1-1.23

 

9/4*

 

Sec 1.3

 

1.24-1.26

 

9/9

 

Sec 1.4

 

1.27-1.37

 

9/11

 

Sec 1.4

 

1.38-1.46

 

9/14

 

Sec 2.1 & 2.2

 

2.1-2.5

 

9/16

 

Sec 2.3 & 2.4

 

2.20 & 2.24

 

9/18

 

Sec 2.5

 

2.11

 

9/21

 

Sec 2.6

 

2.6-2.10 & 2.29

 

9/23

 

Sec 2.6

 

2.6-2.10 & 2.29

 

9/25

 

Sec 3.1 & 3.2

 

3.1-3.3

 

9/28*

 

Sec 3.3

 

3.31

 

9/30*

 

Sec 3.4

 

3.4, 3.10, 3.15

 

10/2

 

Quarterm Review

 

 

10/5

 

Quarterm

 

 

10/7

 

Sec 4.1-4.7 (track exercises)

 

4.1-4.3

 

10/9

 

Sec 4.1-4.7 (track exercises)

 

4.4-4.6

 

10/12

 

Sec 4.1-4.7 (track exercises)

 

4.7-4.9

 

10/14

 

Sec 4.1-4.7 (track exercises)

 

4.10-4.11

 

10/16

 

Sec 4.1-4.7 (track exercises)

 

4.12-4.13

 

10/19

 

Sec 4.1-4.7 (track exercises)

 

4.14-4.15

 

10/21

 

Sec 5.1

 

5.1-5.5

 

10/23

 

Sec 5.2

 

5.13-5.17

 

10/26

 

Sec 5.3

 

5.24-5.25 & 5.32

 

10/28

 

Sec 5.4

 

5.33

 

10/30

 

Midterm Review

 

 

11/2

 

Midterm

 

 

11/4*

 

Sec 6.1-6.2

 

6.1-6.2

 

11/6*

 

Sec 6.1-6.2

 

6.3

 

11/9

 

Sec 6.3

 

6.4

 

11/11

 

Sec 6.4

 

6.5-6.7

 

11/13

 

Sec 6.5

 

6.14

 

11/16

 

Sec 6.6

 

6.16

 

11/18

 

Sec 6.7

 

6.17-6.18

 

11/20

 

Sec 7.1

 

7.1-7.6

 

11/23

 

Sec 7.2

 

7.10, 7.12-7.17

 

11/30

 

Sec 7.3

 

7.23-7.7.24

 

12/2

 

Sec 7.4

 

7.11, 7.25, 7.28

 

12/4

 

Sec 7.6

 

7.29-7.31

 

12/7

 

Sec 8.1-8.2

 

8.1-8.4

 

12/9

 

Finterm Review

 

 

12/17

 

Final @ 11am

 

Jay McCarthy will not be present for meetings marked *.

This schedule may change.

2 Projects

 

Code

 

Project

 

Due

 

qsort3

 

Three Ways, One Quicksort

 

09/18

 

vertsep

 

Planning the Attack with Graph Theory!

 

10/21

 

dijkstra

 

Dijkstra on Dijkstra

 

11/06

 

lcs

 

Longest Common Subsequence

 

11/30

 

tsp

 

Traveling He-Man

 

12/09

This schedule may change.

3 Homework Policy

Each meeting has a list of exercises. You must work on these exercises before the meeting.

Exercise sets must be turned in by 6 PM (Provo time) on the work day prior to the meeting. (A Monday meeting’s exercise set are due on Saturday; a Wednesday meeting’s exercise set are due on Tuesday; a Friday meeting’s exercise set are due on Thursday.) (Why? No, really.)

Exercise sets that are late by a second will receive no credit.

Exercise sets are to be emailed to jay@cs.byu.edu.

The subject line must be: "BYU - Fall 2009 - CS 312 - x" where x is the date the exercises are listed next to.

Only one email should be sent. If two or more are sent, I will grade the oldest one.

Exercise sets must be in the PDF file format such that I can open them in Apple’s "Preview.app". The PDF file must be named "es-2009MMDD.pdf" where MM is the two digit numeric month and DD is the two digit numeric day of the month of the date the exercuses are listed next to.

Each exercise must be annotated with the names of the individuals (such as your supporters or supportees) that helped you on the exercise.

Exercise sets that do not have the correct file format, file name, or email format will receive no credit.

3.1 Projects

Projects are turned in slightly differently from exercise sets:

The policy on team work is described in Team Work.

4 Participation

Each meeting will be structured as a seminar on the section of the book listed. We will start by looking at the key ideas of the section and conclude by working through the exercises. Since you will have already read the section and attempted the exercises, we will be able to quickly go through what you can understand on your own, but we will spend the neccessary time on what you find difficult.

The majority of the class will not be a "sage on the stage", but rather a collaboration among the students. This will require you, the student, to be an active, responsible participant in class.

For each topic (key idea or exercise), we will choose a student to present the topic to the class. This may mean explaining the key idea well or demonstrating how to complete the exercise correctly, but it may also mean explaining why you don’t understand the key idea or what is difficult about it or going as far as you can in an exercise then explaining why you must stop. For the purposes of this course, this is participation and it warrants a participation point. I repeat: you do not need to understand the topic perfectly to participate well. If you cannot participate on a topic, the next student will be called.

Participation will start on the second day of class with the first student in the alphabetized roll. Our position on the roll will be remembered from day to day and we will loop from the back to front on overflow. This will give everyone roughly an equal opportunity to participate.

5 Support

Each student in the class is assigned two supportees. Each student is the class is assigned two supporters.

It is the responsibility of a supporter to ensure that a supportee
  • Understands the course material

  • Can complete the exercises

  • Can participate (as defined in Participation) in class

  • Knows about course announcements

This responsibility is broadly defined and is enforced through the support grade component of your final grade.

In rare circumstances, if your supporter is horrible, we can assign you a new one. Similarly, in rare circumstances, if your supportee is horrible, we can avoid the penalty on your final grade.

6 Textbook

We will use the textbook Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani. It is available for free online and in print. The online version is the definitive version for the purposes of this course.

7 Grading

This section walks through the computation of your final grade.

7.1 Participation Total

Each time you participate in class (as discussed in Participation), you will get 1 participation point. At the end of the course, your points will be divided by the largest number of points any one student has accrued. (There will be something done to accommodate the disadvantage in the last cycle.) (This not exactly Bell curve grading, but it is similar.)

This is a number between 0 and 1.

7.2 Exercise Total

Each exercise in each exercise set is graded with a number between 0 and 1. You receive 0 if do not try diligently to solve the problem. You receive 1 if you do.

Each exercise set is graded with a number between 0 and 1. This is the unweighted average of each of the constituent exercises.

Examples:

> (average (list 1 1 1))

1

> (average (list 1 0 1))

33/50

> (average (list 1 1 0 1))

3/4

The 37 exercise sets are averaged to compute your exercise total, which is a number between 0 and 1.

Examples:

> (average (list 1 1 0.5))

0.83

> (average (list 0.06 0.82 0.53 0.39 0.87 0.54 0.69 0.27 0.9 0.4
                 0.5 0.54 0.97 0.16 0.61 0.4 0.42 0.31 0.81 0.04
                 0.84 0.27 0.36 0.05 0.15 0.15 0.86 0.46 0.18 0.9
                 0.34 0.34 0.47 0.89 0.9 0.49 0.33))

0.49

7.3 Exam Grades

The three exams are graded as if they were exercise sets.

These three grades, the quarterm grade, midterm grade, and finterm grade, are used in the final grade computation.

7.4 Support Grade

Your support grade is the average of your supportees’ exercise total, participation total, quarterm grade, midterm grade, and finterm grade.

7.5 Project Total

Each of the five projects is graded with a number between 0 and 1, based on how well you completed the project requirements.

These five grades are averaged to compute your project total, which is a number between 0 and 1.

Examples:

> (average (list 1 1 1 1 1))

1

> (average (list 1 0.33 1 0.75 1))

0.81

7.6 Final Numeric Grade

Your final numeric grade is a number between 0 and 1.

Your final numeric grade is computed by the following function when it is called with your exercise total, participation total, support grade, quarterm grade, midterm grade, finterm grade, and project total.

Examples:

(define (final exercises participation support quarterm midterm finterm project)
  (%-floor
   (+ (* exercises 0.1)
      (* participation 0.2)
      (* support 0.15)
      (* quarterm 0.15)
      (* midterm 0.15)
      (* finterm 0.15)
      (* project 0.1))))
> (final 1 1 1 1 1 1 1)

1.0

> (final 1 1 0.6 0.75 0.8 0.9 0.75)

0.83

7.7 Final Grade

Your final grade is computed by the following function when it is called with your final numeric grade:

Examples:

(define (convert-to-letter ng)
  (cond
    [(> ng 0.93) "A"]
    [(> ng 0.9) "A-"]
    [(> ng 0.86) "B+"]
    [(> ng 0.83) "B"]
    [(> ng 0.8) "B-"]
    [(> ng 0.76) "C+"]
    [(> ng 0.73) "C"]
    [(> ng 0.7) "C-"]
    [(> ng 0.66) "D+"]
    [(> ng 0.63) "D"]
    [(> ng 0.6) "D-"]
    [else "F"]))
> (convert-to-letter 1)

"A"

> (convert-to-letter 0.94)

"A"

> (convert-to-letter 0.899999)

"B+"

> (convert-to-letter 0.81)

"B-"

> (convert-to-letter 0.74)

"C"

> (convert-to-letter 0.6999999)

"D+"

> (convert-to-letter 0.62)

"D-"

> (convert-to-letter 0.57)

"F"

8 Team Work

The projects for this class will be done in teams (pairs, with a single triple if enrollment is an odd number). This will give you the opportunity to fully discuss a solution with another person. You will work with five different people over the course of the semester.

Programming in teams does not mean each person writes part of the code and the team simply pastes together these contributions. Each person is responsible for every line of code, documentation, etc. turned in. It includes getting or losing points for quality, being able to explain the work, and also incurring penalties in case of plagiarism or other violations. That said, we will sometimes ask you questions individually and, if you are unable to answer them, we may give you less credit than your teammates. In short, working in teams is meant to help you learn material better, not to enable you to do less work than you would have if the project had to be done individually.

For team projects, you may not discuss the project with a student not on your team.

We recommend that teams develop the software together using pair-programming techniques (of the form preached by Extreme Programming) though this is a suggestion, not a requirement. Pair-programming in a nutshell:

While this does require that you schedule times to work with your team, we think that pair-programming will increase your productivity and aid you in taking responsibility for all of your code.

You may not work with the same partner on multiple projects.

Once you have selected a partner please inform the course staff. If you are having difficulty finding someone to be your partner, please contact us and we will attempt to match you with another student.