UMBC Training Centers logo

Design and Analysis of Algorithms


Course Description | Course Outline | Software Development | IT Training



This course stresses the quantitative methods used in the design and analysis of algorithms. The main emphasis of this course is to help you develop the skills needed to analyze the running times of algorithms and to prove the correctness of algorithms. A secondary goal of this course is to familiarize you with a broad range of fundamental algorithms. The material covered in this course will include algorithms for sorting, order statistics, hashing, balanced binary trees, dynamic programming and graphs. If time permits, a selection of advanced topics (such as cryptographic algorithms, NP-completeness, Strassen's algorithm or parallel algorithms) may also be included.

Topics covered include:

  • to design new algorithms based on standard algorithm-design strategies (scanning, divide-and-conquer, dynamic programming, greedy, precomputation, time-space tradeoff, transformation, randomization, branch-and-bound, exhaustive search, approximation
  • to analyze the time and space usage and correctness of new algorithms based on standard algorithm-analysis techniques (set up and solve summation, set up and solve recurrence, count by object vs. count by lines of code, proofs by induction, asymptotic notations)
  • to apply and adapt fundamental algorithms (sorting, searching, order statistics, graph algorithms, integer arithmetic, and selected combinatorial tasks) to new situations
  • to solve problems and to express your solutions using the language and concepts of algorithms and its mathematical tools.

  • Target Student

    Senior computer science students


    You should have mastered the material covered in the following courses: Discrete Math, Data Structures and Calculus and Analytic Geometry II. The material in Appendix B, Chapter 10 and Chapter 12 of the textbook (covering sets, elementary data structures and binary search trees) should be familiar. Some knowledge of probability and counting (Appendix C of the textbook) is also expected. In addition, proficiency in the implementation of the elementary data structures (e.g. stacks, queues, linked lists, binary trees and graphs) in C/C++ or Java is assumed.


    10 Days

    Contact Information

    E-mail or call (443) 692-6599:

    • if you have any questions about this course,
    • to be notified when this course and any closely related courses are scheduled for open enrollment,
    • to request a quote for group training at your location or ours.