CSCI 280 - Algorithms and Problem Solving Paradigms

Spring 2010

Course Overview:
This course is an introduction to the mathematical study of algorithms. We will examine analytic techniques including proofs of correctness, asymptotic analysis of time and space complexity, intractability, NP-completeness, and undecidability. We will examine a number of strategies for algorithm design, including brute-force, divide-and-conquer, dynamic programming, problem reduction, and greedy algorithms. We will also examine the role of advanced data structures in devising algorithmic solutions. We will examine algorithmic solutions to problems in graph theory, sorting, searching, combinatorics, and numerical computation.

At the end of this course, you will be expected to be able to: Instructor:
Dr. Gabriel Ferrer
M.C. Reynolds 312


Office Hours:
MF: 1:30-3:30 pm
W: 1:30-2:30 pm
R: 9:30-11:00 am, 1:10-3:00 pm
Feel free to make an appointment outside these times, or to stop by whenever my door is open.

Class Web Page: http://ozark.hendrix.edu/~ferrer/courses/280/

Lecture Time: A2 (9:10 - 10:00 am, Monday/Wednesday/Friday)

Final Exam Period: Tuesday, May 11, 2010, 8:30-11:30 am

Required Textbook:
Algorithms by S. Dasgupta, C. Papadimitriou, and U. Vazirani, McGraw/Hill, 2008.

Grading Criteria:
Problem Solving: 35%
Solution Assistance: 10%
Programming Projects: 35%
Final Project: 15%
Class Participation: 5%

Grading Scale:
Each assignment will be assigned a letter grade. Each letter grade has associated with it a percentage grade as follows:
Letter gradePercentage
A95
B85
C75
D65
F50

Missing grades will be scored zero. Any grade can have a "+" or "-" attached to it. A "+" is worth +5, and a "-" is worth -4. A grade of "A+" will only be assigned to work that in some way goes above and beyond the requirements for the assignment.

For each category above, the total points earned will be divided by the total points possible to yield a percentage. These percentages will be weighted as given above. A final average of at least 90 earns an A; 80 earns a B; 70 earns a C; 60 earns a D; below 60 is failing.


Problem Solving:
Many class periods will include student presentations of solutions to problems from the textbook. The format for these problem-solving exercises is as follows:

When the presentation is complete, the instructor will assign a grade according to the following scale:

Degree of CompletionGrade
The solution is correctA
The solution is nearly correct, with a few mistakesB
The solution is the "right idea", but has serious flaws C
The solution is completely off-target or a component of the solution is missingD
No serious attempt is made at solving the problemF

If the student made any changes to his original solution during the presentation, he will need to revise his written solution to incorporate them. A student may revise his written solution at his own discretion as well. Any revised written solution will be due at the start of the next class period. If a revision is submitted, the grade for the revision will replace the grade for the original submission. The instructor reserves the right to lower the grade for the revised submission if he is of the opinion that the student required an excessive number of hints to make progress on solving the problem.

Solution Assistance:
Although only the presenting student is required to have a solution for the assigned problem, each student is expected to have read and thought about each problem to some degree. Each question asked during another student's presentation earns one point. If the instructor requests a student to ask a question, and the student declines, the student forfeits a point. Trivial or flippant questions will not get any credit. The grade for this section is the smaller value of:

Programming Projects:
While the primary emphasis of this course is on theoretical analysis of algorithms, we will also have 3-4 implementation assignments. Emphasis will be on correctness, asymptotic analysis, empirical analysis, and the clarity of the source code.

Final Project:
Towards the end of the semester, you will be assigned a problem for which to research algorithmic solutions. You will give a 20-minute oral presentation of your project during the final exam period for this course. The project write-up will also be due at that time.