Learn To Think Like A Computer Scientist. Master the fundamentals of the design and analysis of algorithms.
SKILLS YOU WILL GAIN: Algorithms, Dynamic Programming, Greedy Algorithm, Divide And Conquer Algorithms
Algorithms are the heart of computer science, and the subject has countless practical applications as well as intellectual depth. This study program is an introduction to algorithms for learners with at least a little programming experience. The specialization is rigorous
but emphasizes the big picture and conceptual understanding over low-level implementation and mathematical details. After completing this specialization, you will be well-positioned to ace your technical interviews and speak fluently about algorithms with other programmers and computer scientists.
About the instructor: Tim Roughgarden has been a professor in the Computer Science Department at Stanford University since 2004. He has taught and published extensively on the subject of algorithms and their applications.
COURSE 1 - Divide and Conquer, Sorting and Searching, and Randomized Algorithms
SKILLS YOU WILL GAIN: Algorithms, Randomized Algorithm, Sorting Algorithm, Divide And Conquer Algorithms
The primary topics in this part of the study program are: asymptotic (“Big-oh”) notation, sorting and searching, divide and conquer (master method, integer and matrix multiplication, closest pair), and randomized algorithms (QuickSort, contraction algorithm for min cuts).
COURSE 2 - Graph Search, Shortest Paths, and Data Structures
SKILLS YOU WILL GAIN: Graphs, Data Structure, Algorithms, Hash Table
The primary topics in this part of the specialization are: data structures (heaps, balanced search trees, hash tables, bloom filters), graph primitives (applications of breadth-first and depth-first search, connectivity, shortest paths), and their applications (ranging from deduplication to social network analysis).
COURSE 3 - Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
SKILLS YOU WILL GAIN: Spanning Tree, Algorithms, Dynamic Programming, Greedy Algorithm
The primary topics in this part of the study program are: greedy algorithms (scheduling, minimum spanning trees, clustering, Huffman codes) and dynamic programming (knapsack, sequence alignment, optimal search trees).
COURSE 4 - Shortest Paths Revisited, NP-Complete Problems and What To Do About Them
SKILLS YOU WILL GAIN: Data Structure, Algorithms. Np-Completeness, Dynamic Programming
The primary topics in this part of the study program are: shortest paths (Bellman-Ford, Floyd-Warshall, Johnson), NP-completeness and what it means for the algorithm designer, and strategies for coping with computationally intractable problems (analysis of heuristics, local search).
Algorithms for Battery Management Systems
Get Started in Algorithms for Battery Management. Learn how to model lithium-ion battery cells, and how to use those models to manage battery packs.
COURSE 1 - Introduction to battery-management systems
This course will provide you with a firm foundation in lithium-ion cell terminology and function and in battery-management-system requirements as needed by the remainder of the specialization. After completing this course, you will be able to:
– List the major functions provided by a battery-management system and state their purpose
– Match battery terminology to a list of definitions
– Identify the major components of a lithium-ion cell and their purpose
– Understand how a battery-management system “measures” current, temperature, and isolation, and how it controls contactors
– Identify electronic components that can provide protection and specify a minimum set of protections needed
– Compute stored energy in a battery pack
– List the manufacturing steps of different types of lithium-ion cells and possible failure modes
This topic, you will learn some important terminology used to describe battery cells, and will learn the principles of operation of standard electrochemical battery cells.
This topic, you will learn some of the principal advantages of lithium-ion cells versus standard electrochemical battery cells, what are their primary components, and how they work.
This topic, you will begin to learn about BMS requirements, and will study the requirements for sensing and high-voltage control in detail.
COURSE 2 - Equivalent Circuit Cell Model Simulation
In this course, you will learn the purpose of each component in an equivalent-circuit model of a lithium-ion battery cell, how to determine their parameter values from lab-test data, and how to use them to simulate cell behaviors under different load profiles. By the end of the course, you will be able to:
COURSE 3 - Battery State-of-Charge (SOC) Estimation
In this course, you will learn how to implement different state-of-charge estimation methods and to evaluate their relative merits. By the end of the course, you will be able to:
COURSE 4 - Battery State-of-Health (SOH) Estimation
In this course, you will learn how to implement different state-of-health estimation methods and to evaluate their relative merits. By the end of the course, you will be able to:
COURSE 5 - Battery Pack Balancing and Power Estimation
In this course, you will learn how to design balancing systems and to compute remaining energy and available power for a battery pack. By the end of the course, you will be able to:
– Evaluate different design choices for cell balancing and articulate their relative merits
– Design component values for a simple passive balancing circuit
– Use provided Octave/MATLAB simulation tools to evaluate how quickly a battery pack must be balanced
– Compute remaining energy and available power using a simple cell model
– Use provided Octave/MATLAB script to compute available power using a comprehensive equivalent-circuit cell model
This capstone project explores the design of resistor value for a switched-resistor passive balancing system as well as enhancing a power-limits method based on the HPPC approach.