**Preview this course in the non-credit experience today! **

Start working toward program admission and requirements right away. Work you complete in the non-credit experience will transfer to the for-credit experience when you upgrade and pay tuition. See How It Works for details.

Cross-listed with DTSA 5503

**Course Type:**Pathway | Breadth**Specialization:**Foundations of Data Structures and Algorithms**Instructor:**Dr. Sriram Sankaranarayanan, Professor of Computer Science**Prior knowledge needed:**You must understand all concepts covered in Dr. Sankaranarayanan's*non-credit*Algorithms for Searching, Sorting, and Indexing and Trees and Graphs: Basics courses to succeed in this course. We highly recommend successfully completing those two courses in the non-credit experience before starting this course; they are a great option to refresh your skills and ensure you're ready. Note that you*cannot*apply credit from either of these courses toward MS-CS graduation requirements. Calculus, probability theory: distributions, expectations and moments. Some programming experience with Python.

**Mathematical Background **

Calculus, Introduction to Complex Algebra, Probability Theory: distributions and expectations.

**Programming Background**

The course involves solving programming assignments in Python. Beginner to intermediate programming experience with Python.

## Course Description

This course is part three of a specialization on algorithms and data structures. It covers basic algorithm design techniques such as divide and conquer, dynamic programming, and greedy algorithms. It concludes with a brief introduction to intractability (NP-completeness) .

## Learning Outcomes

## Course Grading Policy:

Assignment |
Percentage of Grade |
---|---|

Quizzes (Multiple Choice) |
2% each (28% total) |

Programming Assignments 1-3 |
15% each (45% total) |

Programming Assignment 4 |
17% |

Final Exam |
10% |

Total |
100% |