CMSC 495:  Special Topics:  Algorithms
 (Fall 2017)
(as of August 20, 2017)

Instructor: Scott McElfresh (pronounced  mac' - el- fresh)
Office: 
Ruffner 346     Phone:  x2249
Email:   ProfScottMcElfresh @ gmail.com (checked more frequently) or  mcelfreshsa @ longwood.edu
Office Hours: 
- MWF 3-3:45pm 
- Th  12:30-1:30pm
- or when I am in my office with the door open
- or by appointment
Other times may be announced in class or on the website.

Course Web Page:
http://cs.longwood.edu/~scottmce/Fall2017/CMSC495-Algorithms  Most of the handouts in this course will be available through this World Wide Web address.   

Canvas:
Canvas will be used for submission of some assignments and recording of grades on individual assessments.  You may wish to set up Canvas to send you an email when grades and/or feedback is entered.   NOTE:  Canvas does not always calculate course grades correctly.  The relative weights are in this syllabus.

Course Description:   A survey of fundamental algorithms and algorithmic techniques, including divide-and-conquer algorithms, backtracking, lower bounds, dynamic programming, greedy and approximation algorithms, amortized analysis, and graph algorithms.  Pre-req:  CMSC 262 with a grade of C- or better.

Course objectives:
At the end of the course, a successful student will be able to:

Textbooks:  
There is no required textbook for this course.  Instead, there will be books in the departmental student lounge area, online readings, videos, and other resources.

Technology:  
It is assumed that you have a laptop that you can bring to class and can install software on if necessary.  

Pictures, Audio, and Video:
Students should not take audio or video recordings in the classroom without prior permission.    Still pictures of the board may be taken as a supplement to note-taking.    However, these should not be posted online or elsewhere such that they might be shared with someone not enrolled in the class.

Class Participation and Preparedness:  
A portion of the grade is allocated to your participation in class and your preparedness for the class period.   Preparedness involves having done assigned readings and made effort on assigned problems.
Participation includes attendance, participation in group discussions, and presenting your efforts and ideas to your peers.

Exercises: 
 
    This class will have a variety of graded assignments, including reading assignments, written exercises, and programming exercises.   Due to the varying nature, some graded work will be worth more than other work.     Each assignment will indicate the weight on the assignment.    Note that some assignments will not be "graded" but will be "checked".    See section above on Class Participation and Preparedness.
       Lateness:  Each exercise will give not only a due date, but a due time.  Some exercises may be gone over in class, so you will need permission to hand in asisgnments late.  If I agree to accept an assignment late, there may be a 50% penalty.
      Collaboration:  Unless otherwise specified, all work is assumed to be your own.   You are encouraged to discuss the exercises with other students, but you must write up your own solutions. When using a calculator or computer, you are expected to type everything in yourself.  When you consult with other students, you must indicate this on your submission - by including a note at the top or bottom indicating with whom you consulted and a description of the level of consultation.
              When doing computer programming, you will often be utilizing someone else's ideas or code and modifying them to be your own.  In this case, you must fully document this in the program comments as well as any other documentation.  For some guidelines, see the Academic Honesty in Computer Programming handout.

Quizzes:  
There will be quizzes throughout the semester.   These will typically take the form of short (5-15 minutes) sets of questions.  There will be no make-up quizzes given.    If more than 5 quizzes are given, the lowest two quiz scores for each student will not be calculated into the course grade.

Midterm Exam: 
There will be an exam at approximately the middle of the term.    It will come in two parts:

Final Exam: 
There will be a comprehensive exam.    It will be handed out on Thursday, November 30 and will be due at 2pm on Thursday, December 7.    More details  will be announced as the time approaches. 

Grading:
The relative weight of each item in determining your course grade will be as follows:
 
Prep and Participation: 15%
  Exercises: 35%

Quizzes: 15%

Midterm Exam: 15%

Final Exam: 20%
Course Grades will be assigned as follows: 
 
Course percentage   Course Grade
90 - 100
A-, A
80 - 89.9
B-, B, B+
70 - 79.9
C-, C, C+
60 - 69.9
D-, D, D+
 0  - 59.9 
F
+'s will be assigned in the top 2 percentange points of the range.
-'s will be assigned in the bottom 3 percentange points of the range.
SPECIAL NOTE:  Exercises that are not handed in, or quizzes and exams not taken will count as a 0.    Canvas does not always calculate these accurately.

Collaboration:
 
Unless otherwise specified, all work is assumed to be your own.   You are encouraged to discuss the exercises with other students, but you must write up your own solutions.  Some guidelines:
Efforts will be made in class to describe these issues.  If you have any questions as to what is appropriate and what is not, please ask me about it.

Academic Honesty:     
Longwood University is an academic community that subscribes to an honor system.   By accepting membership in this community, we all assume the obligation to be trustworthy in all pursuits.  Violations may receive grade penalties in the course and be referred to the Honor Board, which may impose additional penalties.

Tentative Topic outline:

Week Dates Topics
1 Aug 21 - 25 Basic Algorithmic ideas
2 Aug 28 - Sept 1 Analysis intuition and proofs
3 Sept 4 - 8 Divide and Conquer; Recurrences
4 Sept 11 - 15 Dynamic Programming
5 Sept 18 - 22 Dynamic Programming
6 Sept 25 - 29 Greedy Algorithms
7 Oct 2 - 6 Approximation Algorithms
8 Oct 9 - 13 Probabilistic Algorithms
9 Oct 16 - 20 Graph Algorithms
10 Oct 23 - 27 Graph Algorithms
11 Oct 30 - Nov 3 NP-completeness
12 Nov 6 - 10 Backtracking
13 Nov 13 - 17 Pruning
14 Nov 20 - 24 TBA
15 Nov 27 - Dec 1 TBA
Dec 7 Final Exam due

A detailed day by day calendar will be kept up-to-date on the course website.