UNIVERSITY OF BELIZE FACULTY OF SCIENCE & TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY Algorithms (CMPS 314) Course Outline Semester II Course description: Instructor This course is designed to teach techniques for the design and analysis of efficient computer algorithms through theoretical backgrounds and examples of advanced methods and data structures. Topics include asymptotic growth analysis of functions, average and worst case analysis, sorting and selection problems, advanced search trees, graph theory and related algorithms, divide and conquer and greedy programming paradigms, hashing, complexity classes of P, NP and NP-complete. Ms. Freida Palma, MSc. Office Jag-D4 Prerequisites: CMPS255 – Object Oriented Programming MATH333 – Calculus III Telephone 822-3680/81 Ext. 305 Course Course Objectives: At the end of this course, students will be able to: Email Cmps314@freidapalma.com Class Hours/Room Tuesday/Thursday 2:00pm-3:15pm Bachelors Lab 1. Explain characteristics of algorithms 2. Describe and differentiate between characteristics of algorithms 3. Explain major formal methods for the design, analysis, and implementation of algorithms 4. Assess characteristics of algorithms 5. Utilize efficient algorithms for problems 6. Compare algorithms by their efficiency 7. Apply methods to design algorithms that address practical problems, such as sorting, searching, and string matching effectively and efficiently 8. Implement complex algorithms in a modern computer language, such as C++ Textbook: Office Hours Tuesday/Thursday 3:30-5:00 pm Introduction to the Design and Analysis of Algorithms, 2/E Anany V. Levitin, Villanova University Recommended reading: Cormen, T.H., Leiserson, C.E., Rivest, R.L.: Introduction to Algorithms CMPS 314 Pg 1 of 5 Department of Information Technology Course Topics 1. Introduction 1.1 What is an Algorithm? 1.2 Fundamentals of Algorithmic Problem Solving 1.3 Important Problem Types 1.4 Fundamental Data Structures 2. Fundamentals of the Analysis of Algorithm Efficiency 2.1 Analysis Framework 2.2 Asymptotic Notations and Basic Efficiency Classes 2.3 Mathematical Analysis of Nonrecursive Algorithms 2.4 Mathematical Analysis of Recursive Algorithms 2.5 Example: Fibonacci Numbers 2.6 Empirical Analysis of Algorithms 2.7 Algorithm Visualization 3. Brute Force 3.1 Selection Sort and Bubble Sort 3.2 Sequential Search and Brute-Force String Matching 3.3 Closest-Pair and Convex-Hull Problems by Brute Force 3.4 Exhaustive Search 4. Divide-and-Conquer 4.1 Mergesort 4.2 Quicksort 4.3 Binary Search 4.4 Binary Tree Traversals and Related Properties 4.5 Multiplication of Large Integers and Strassen’s Matrix Multiplication 4.6 Closest-Pair and Convex-Hull Problems by Divide-and-Conquer 5. Decrease-and-Conquer 5.1 Insertion Sort 5.2 Depth-First Search and Breadth-First Search 5.3 Topological Sorting 5.4 Algorithms for Generating Combinatorial Objects 5.5 Decrease-by-a-Constant-Factor Algorithms 5.6 Variable-Size-Decrease Algorithms 6. Transform-and-Conquer 6.1 Presorting 6.2 Gaussian Elimination CMPS 314 Pg 2 of 5 Department of Information Technology 6.3 Balanced Search Trees 6.4 Heaps and Heapsort 6.5 Horner’s Rule and Binary Exponentiation 6.6 Problem Reduction 7. Space and Time Tradeoffs 7.1 Sorting by Counting 7.2 Input Enhancement in String Matching 7.3 Hashing 7.4 B-Trees 8. Dynamic Programming 8.1 Computing a Binomial Coefficient 8.2 Warshall’s and Floyd’s Algorithms 8.3 Optimal Binary Search Trees 8.4 The Knapsack Problem and Memory Functions 9. Greedy Technique 9.1 Prim’s Algorithm 9.2 Kruskal’s Algorithm 9.3 Dijkstra’s Algorithm 9.4 Huffman Trees 10. Iterative Improvement 10.1 The Simplex Method 10.2 The Maximum-Flow Problem 10.3 Maximum Matching in Bipartite Graphs 10.4 The Stable Marriage Problem 11. Limitations of Algorithm Power (If time permits) 11.1 Lower-Bound Arguments 11.2 Decision Trees 11.3 P, NP, and NP-complete Problems 11.4 Challenges of Numerical Algorithms 4 12. Coping with the Limitations of Algorithm Power (If time permits) 12.1 Backtracking 12.2 Branch-and-Bound 12.3 Approximation Algorithms for NP-hard Problems 12.4 Algorithms for Solving Nonlinear Equations CMPS 314 Pg 3 of 5 Department of Information Technology Exam: In accordance with the University Exam Schedule Evaluation This course will be evaluated using three evaluation tools: assignments, tests and a final examination. Presentation(1) topic will be given with a guide as to what students are expected to cover during presentation. Assignments (6) will be given throughout the semester based on materials cover during class lecture. Tests are scheduled to cover small portions of the course. This generally means that at the end of several major topics a test is scheduled. The tests will be based on the lectures, assignments and other shared course material. The final examination is a comprehensive written exam: all materials shared throughout the semester have a fair chance of showing up on the final exam. Late penalties Except when a case is documented as a medical emergency, assignments submitted late will be penalized at a rate of 20% per day, leaving students with a maximum of five days before obtaining a zero. Evaluation Weight The final grade will be assigned to each student based on the following: Evaluation Method Presentation(1) 6% Assignments(6) 24% Tests(4) 40% Final Examination(1) 30% Total CMPS 314 Weight 100% Pg 4 of 5 Department of Information Technology Final grade letter is given according to the standard UB grading scale. A = 95-100% A- = 90-94% B+ = 85-89% B = 80-84% C+ = 75-79% C = 70-74% D+ = 65-69% D = 60-64% F = below 59% Class, Academic and Cheating Policies Students have been provided with the Student Handbook as well as IT Department-Specific Policies. All academic policies contained therein apply to this course. Kindly consult the handbook and the department policies. Program Standards Programs have to be submitted electronically. Every program must contain, in the first few lines, a comment indicating the name(s) of the student(s) working on it and which assignment it is. Programs not containing this information, clearly visible, will get a zero. Programs which don't compile will not be considered. Every program must be accompanied by test cases demonstrating how the program works. Programs with inadequate or poorly-chosen test cases will lose points. Classroom Rules of Conduct Once inside the computer lab, neither eating nor drinking are allowed under any circumstances. If, however, you must eat or drink, quietly excuse yourself from class and return when you have finished. Cell phones should be switched off or set to vibrate mode. Once a call comes in, you have the option of answering it, but must do so outside of the classroom and far enough to prevent distraction of other students. During tests all cell phones should be switch off. There is no penalty for coming to class late. However, you must not disturb or distract the class while entering. If you are late or absent, it is your responsibility to find out (from your class mates, not the lecturer) what information you have missed and what assignments are due. Once a test has been returned to you, you have exactly one week from the date received to make queries or raise any concerns regarding your grade etc. Any concerns voiced after the specified period will not be valid or taken into consideration. Each student must take all tests. A makeup for a missed test will only be given when the student has made arrangements for such prior to the time the test is given to the class. Final Note: The lecturer reserves the right to propose changes to this course outline as necessary to ensure that the objectives of the course are accomplished. Students will be made aware of any changes as soon as such changes are made. ***** CMPS 314 Pg 5 of 5 Department of Information Technology