Data Structures and Algorithms Syllabus
Data Structures and Algorithms Syllabus
Data Structures
& Algorithms
Nanodegree Program Syllabus
Overview
The Data Structures and Algorithms Nanodegree program will help learners excel at solving everything from well-defined
problems, like how to calculate the efficiency of a specific algorithm, to more open-ended problems, like building one’s own
private blockchain or writing a web crawler. In this program, students will learn data structures and algorithms by solving
over 80 practice problems. Learners will begin each course by learning to solve defined problems related to a particular data
structure and algorithm. By the end of each course, learners will would be able to evaluate and assess different data structures
and algorithms for any open-ended problem and implement a solution based on the design choices.
Program information
Prerequisites
A well-prepared learner should have intermediate Python programming knowledge and basic algebra skills.
Required Hardware/Software
Learners need access to the internet and a 64-bit computer and the following software:
• A code/text editor, such as vim, Sublime Text, Atom, or VSCode • A command line interface, such as Terminal (on
Mac) or Git Bash (on Windows)
*The length of this program is an estimation of total hours the average student may take to complete all required
coursework, including lecture and project time. If you spend about 5-10 hours per week working through the program, you
should finish within the time provided. Actual hours may vary.
Introduction
Get an overview of your program. Meet the instructors, and refresh one’s Python skills. Learn the framework to deconstruct
any open-ended problem and then understand the concepts of time and space complexity, essential tools for evaluating
different data structures and algorithms.
Course Project
Lesson 1
Introduction
Lesson 2
Python Refresher
Lesson 3
Lesson 4
Big Notation
Data Structures
Learn different data structures that can be used to store data. Implement different methods used to manipulate these data
structures and examine the efficiency. Understand the advantages and applications of different data structures. Learn how to
approach open-ended problems (either in interviews or in real-world scenarios) and select appropriate data structures based
on requirements.
Course Project
Lesson 1
• Hamming Distance
Lesson 4
Basic Algorithms
Learn and implement basic algorithms such as searching and sorting on different data structures and examine the efficiency
of these algorithms. Use recursion to implement these algorithms and then learn how some of these algorithms can be
implemented without recursion. Practice selecting and modifying these algorithms for a variety of interview problems.
Course Project
Lesson 1
Binary Search
• Randomized Binary Search
Lesson 3
Advanced Algorithms
Build on one’s algorithm skills by learning more advanced algorithms such as brute-force and greedy algorithms, graph
algorithms, and dynamic programming, which optimizes recursion by storing results to sub problems.
Course Project
Route Planner
In this project, learners will build a route-planning algorithm like the one used in Google Maps to calculate
the shortest path between two points on a map. Learners will first select and implement the appropriate
data structure to represent points on a map and then implement the A* algorithm to find shortest path.
Lesson 1
Greedy Algorithms
• Dijkstra’s Algorithm
Graph Algorithms
• Shortest Hops
• A* Search
Lesson 3
• Longest Palindromic subsequence
Lesson 4
Linnear Programming
Brynn Claypoole
Instructor
Brynn is a former Udacity employee who worked as lead data analyst at Udacity before joining
Facebook as a data engineer. Currently, she is working as a software engineer with 10x Genomics.
Abe Feinberg
Content Developer
Abe is a content developer at Udacity and previously taught university courses in psychology
and computer science. He loves both learning and teaching, and has a particular passion for
breaking down difficult concepts and making them easier to master.
Kyle Stewart-Franz
Content Developer
Kyle has developed projects for a variety of Udacity’s Nanodegree programs, such as
Self-Driving Car Engineer, Robotics, and Blockchain. Kyle, a self-taught developer, is always
striving towards creating great learning experience for students.
• Project review cycle creates a feedback loop with multiple opportunities for
improvement—until the concept is mastered.
• Project reviewers leverage industry best practices and provide pro tips.
• Unlimited access to mentors means help arrives when it’s needed most.
• 2 hr or less average question response time assures that skills development stays on track.
Empower job-readiness.
• Access to a Github portfolio review that can give you an edge by highlighting your
strengths, and demonstrating your value to employers.*
• Get help optimizing your LinkedIn and establishing your personal brand so your profile
ranks higher in searches by recruiters and hiring managers.
Mentor Network
• Mentors work across more than 30 different industries and often complete a Nanodegree
program themselves.
12.02.22 | V1.0