CSC 344 - Algorithms and Complexity

Dr. R. M. Siegfried

Science 407      (516)877-4482      siegfrie@adelphi.edu

Office hours: Tu 12:00 Noon - 2:00PM; W 10:00-11:00AM; F 1:00-2:00PM

For assignment submission: siegfriedHW@gmail.com

Course Home Page | Announcements | Syllabus | Class Notes | Assignments

Course Description and Purpose

Learn to analyze iterative and recursive algorithms for use of resources (time, memory, parallelism, bandwidth, randomness, etc.). Develop fluency with big-O notation, and learn to choose and implement efficient algorithms for numeric, combinatorial, and geometric problems. Learn basic concepts and terminology in computability and computational complexity.

Gen Ed Learning Goals and Distribution Requirements

Course Learning Goals

Students will be able to write programs in C++ using data structures. Students will be able to analyze the efficiency of sorting and searching algorithms and to determine whether there is a more efficient way of solving a problem or a class of problems.

Preequisite

A grade of C- or better in MTH 131 or MTH 141 and in both CSC 156 and CSC 343.

Text

The Design and Analysis of Algorithms,3rd edition by Anany Levitin, Addison-Wesley, 2012.

Topics:

Lectures

The assignments this semester will require students to use Microsoft Visual Studio to design, code, compile, debug and submit programs written in C and C++. Students may opt to program on Adelphi.s Linux system, Panther, using the GNU C++ compiler using vi. Students may also opt to write some programming assignments in Java. They will find BlueJ and the Java Development Kit (including compiler) on computers in the Department.s Computer Lab.

Assignments

The assignments this semester will require students to use text editors and compilers available on Panther, the University's Linux-based computer as well as a text editor (such as Notepad) to create source-language programs and compilers and interpreters that are either in the public domain or made freely available by the copyright holder. This will require students to have a flash drive on which they can store software as well as source code of programs that they are writing as required assignments in the course.

Grading

Each programming assignment will be graded with a base grade of 90%, with points added to reflected areas in which the assignment exceeded specified requirements and/or points deducted to show areas where the assignment is deficient.

Late penalties may be assessed of 2 points per class after the due date.

The final average will be weighted (based on the following ratio:

Midterm Exam 40%
Final Exam 40%
Assignments 20%

The final average will translate to a letter grade according to the following table:
Final Average Course Grade
A 90 - 100
A- 87.5 - 89.9
B+ 83.3 - 87.4
B 80.0 - 83.2
B- 77.5 - 79.9
C+ 73.3 - 77.4
C 70.0 - 73.2
C- 67.5 - 69.9
D+ 63.3 - 67.4
D 60.0 - 63.2
F 0.0 - 59.9

Attendance

The following is the Adelphi University General Attendance Policy:

Only students who are registered for courses, and whose name appears on the Official Class Roster may attend courses at the University. Adelphi students make a commitment to be active participants in their educational program; class attendance is an integral part of this commitment. Attendance requirements for each course will be announced by the faculty member at the beginning of each term. Students are expected to be present promptly at the beginning of each class period, unless prevented by illness or by other compelling cause. In the event of such absence, students may request that faculty members be notified by the Office of Academic Services and Retention. Students are responsible for completing course work missed through absences. Students should wait a reasonable length of time for an instructor in the event that the instructor is delayed.

Additionally, you are also responsible for whatever work is covered in class whether or not you are there. Absence from the final exam will be excused only for a good and well-documented reason. The decision to allow a make-up exam will be made in accordance with the policies of Adelphi University.

NB: I will not be available on Wednesday, April 12 or Monday, April 17. There will be lab on both days with attendance taken; we will make up both class meetings on Monday, May 8 11:00-11:50 and 2:25-3:40 in our usual rooms with attendance taken. Students are encouraged to take advantage of the time to complete programming assignments.

If the University is closed for more than two days due to an emergency, go the home page for this course site each day for instructions and assignments. Student instructions materials can be found at http://home.adelphi.edu/~siegfried/cs344

Tentative Schedule (Subject to Change)
Date Topic Assignment due
January 23 Review of Mathematical Induction
January 25 Big O Notation
January 27 Big O Notation Assn #1 - Some basic mathematical induction practice
January 30 Internal Sorting
February 1 Internal Sorting Assn #2 - Working with Asymptotic Notation
February 3 Internal Sorting
February 6 External Sorting
February 8 External Sorting
February 10 External Sorting Assn #3 - Analyzing the efficiency of internal sorts
February 13 Searching
February 15 Searching Assn #4 - Tracing a Polyphase merge sort of 34 runs
February 17 Searching
February 20 Greedy Algorithms
February 22 Greedy Algorithms Assn #5 - Implementing a Polyphase merge sort
February 24 Greedy Algorithms
February 27 Greedy Algorithms
March 1 Pattern Matching
March 3 Review for Midterm Exam Assn #6 - Using Kruskal's and Prim's Algorithm To Find the Minimum Spanning Tree
March 6 Midterm Exam
March 8 Pattern Matching
March 10 Pattern Matching Assn #7 - Creating an AVL tree, a 2-3 tree and a B-tree.
March 20 Pattern Matching
March 22 Pattern Matching Assn #8 - Analyzing the efficiency of searches
March 24 Random Numbers
March 27 Random Numbers
March 29 Random Numbers
March 31 Recursive Algorithms Assn #9 - Analyzing pattern search algorithms
April 3 Recursive Algorithms
April 5 Recursive Algorithms
April 7 Recurrence Relations Assn #10 - Comparing Random Number Generators
April 10 Recurrence Relations
April 12 No class meeting
April 14 Recurrence Relations Assn #11 - Finding the efficiency of Recursive Algorithms
April 17 No class meeting
April 19 Numerical Computation
April 21 Numerical Computation
April 24 Numerical Computation Assn #12 - Prove non-recurrence relation is equal to the equivalent recurrence relation
April 26 Numerical Computation
April 28 Graphs
May 1 Graphs Assn #13 - Numerical integration
May 3 Graphs
May 5 Review for Final Exam
May 8 Review for Final Exam Assn #14 - Dijkstra's algorithm
May 17 Final Exam (8:00-10:00AM)

Students With Disabilities

If you have a disability that may significantly impact your ability to carry out assigned coursework, please contact the Student Access Office (SAO) at 516-877-3806 or send an email to sao@adelphi.edu. The staff will review your concerns and determine, with you, appropriate and necessary accommodations. Please allow for a reasonable time frame for requesting ASL Interpreters or Transcription Services.

Honor Code

Students enrolled in this course are expected to abide by the Adelphi University Honor Code. The purpose of the Honor Code is to protect the academic integrity of the University by encouraging consistent ethical behavior in assigned coursework by students. Following is excerpted from the Student Honor Code:

The code of academic honesty prohibits behavior, which can broadly be described as lying, cheating, or stealing. Violations of the code of academic honesty will include, but are not limited to, the following:

  1. Fabricating data or citations
  2. Collaborating in areas prohibited by the professor
  3. Unauthorized multiple submission of work
  4. Sabotage of others' work, including library vandalism or manipulation
  5. Plagiarism: presenting any work as one's own that is not one's own
  6. The creation of unfair advantage
  7. The facilitation of dishonesty
  8. Tampering with or falsifying records
  9. Cheating on examinations through the use of written materials or giving or receiving help in any form during the exam, including talking, signals, electronic devices, etc.

Student Course Evaluations

During the last two weeks of the class, you will receive notification, via mail and eCampus, that the course evaluation is available for your input electronically. Availability will end at the start of the final examination period. Your feedback is valuable and I encourage you to respond. Please be assured that your responses are anonymous and the results will not be available to the instructor until after the end of the semester and therefore after course grades have been submitted.


Tear off this and return with information required below:


STUDENT ACKNOWLEDGEMENT:

I HAVE RECEIVED AND READ THE SYLLABUS FOR [INSERT COURSE NUMBER AND SECTION].


SIGNED: __________________________________________


PRINT NAME: _________________________________________


DATE: ___________________________


Warning - This page must be signed and returned to the instructor to receive a complete grade in this course.