The primary topics in this part of the specialization 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).

"Excel/VBA for Creative Problem Solving, Part 1" is aimed at learners who are seeking to augment, expand, optimize, and increase the efficiency of their Excel spreadsheet skills by tapping into the powerful programming, automation, and customization capabilities available with Visual Basic for Applications (VBA).
This course is the first part of a three-part series and Specialization that focuses on the application of computing techniques in Excel/VBA to solve problems. In this course (Part 1), you will: 1) create macros to automate procedures in Excel; 2) define your own user-defined functions; 3) create basic subroutines to interface with the user; 4) learn the basic programming structures in VBA; and 5) automate Excel’s Goal Seek and Solver tools and use numerical techniques to create “live solutions” to solve targeting and optimization problems.
New to computer programming? The extremely intuitive and visual nature of VBA lends itself nicely to teaching and learning - what a fun way to learn to code! No prior knowledge in programming nor advanced math skills are necessary yet seasoned programmers will pick up new and creative spreadsheet problem solving strategies.
After you have learned the basics of VBA, each module will introduce foundational and broad problems inspired by situations that you might encounter in the real world. To pass each module, you'll need to pass a mastery quiz and complete a problem solving assignment. This course is unique in that the weekly assignments are completed in-application (i.e., on your own computer in Excel), providing you with valuable hands-on training.

Learn how the blockchain authenticates transactions and distributes data to peers — nodes connected to the network. This course shows you how multiple versions of a blockchain are reconciled into one, discusses blockchain limitations, and delves into organizational applications of blockchain technology.
This course requires the purchase of two books for the completion of assignments:
Drescher, D. (2017). Blockchain Basics: A Non-Technical Introduction in 25 Steps. (ISBN-13: 978-1484226032)
Antonoupoulos, A. M. (2017). The Internet of Money, Volume Two. (ISBN-13: 978-1947910065)

What you’ll achieve:
In this project-centered course* you will build a modern computer system, from the ground up. We’ll divide this fascinating journey into six hands-on projects that will take you from constructing elementary logic gates all the way through creating a fully functioning general purpose computer. In the process, you will learn - in the most direct and constructive way - how computers work, and how they are designed.
What you’ll need:
This is a self-contained course: all the knowledge necessary to succeed in the course and build the computer system will be given as part of the learning experience. Therefore, we assume no previous computer science or engineering knowledge, and all learners are welcome aboard. You will need no physical materials, since you will build the computer on your own PC, using a software-based hardware simulator, just like real computers are designed by computer engineers in the field. The hardware simulator, as well as other software tools, will be supplied freely after you enroll in the course.
Course format:
The course consists of six modules, each comprising a series of video lectures, and a project. You will need about 2-3 hours to watch each module's lectures, and about 5-10 hours to complete each one of the six projects. The course can be completed in six weeks, but you are welcome to take it at your own pace. You can watch a TED talk about this course by Googling "nand2tetris TED talk".
*About Project-Centered Courses: Project-centered courses are designed to help you complete a personally meaningful real-world project, with your instructor and a community of learners with similar goals providing guidance and suggestions along the way. By actively applying new concepts as you learn, you’ll master the course content more efficiently; you’ll also get a head start on using the skills you gain to make positive changes in your life and career. When you complete the course, you’ll have a finished project that you’ll be proud to use and share.

Apply what you have learned about cryptography and hashing in previous blockchain to the Merkle Tree, which underlies the process of adding new blocks — representing new transactions — to the blockchain. This course also introduces the concepts of proof of work and proof of stake, which play an important part in ensuring the integrity of the blockchain.
This course requires the purchase of two books for the completion of assignments:
Drescher, D. (2017). Blockchain Basics: A Non-Technical Introduction in 25 Steps. (ISBN-13: 978-1484226032)
Antonoupoulos, A. M. (2017). The Internet of Money, Volume Two. (ISBN-13: 978-1947910065)

An
algorithmic paradigm
or
algorithm design paradigm
is a generic model or framework which underlies the design of a class of algorithms. An algorithmic paradigm is an abstraction higher than the notion of an algorithm, just as an algorithm is an abstraction higher than a computer program.
How does one calculate the running time of an algorithm?
How can we compare two different algorithms?
How do we know if an algorithm is `optimal'?

This is an introductory course to multi-objective optimization using
Artificial Intelligence search algorithms
. We start with the details and mathematical models of problems with multiple objectives. Then, we focus on understanding the most fundamental concepts in the field of multi-objective optimization including but not limited to: search space, objective space, Pareto optimality, Pareto optimal solution set, Pareto optimal front, Pareto dominance, constraints, objective function, local fronts, local solutions, true Pareto optimal solutions, true Pareto optimal front, etc.
In the second part of this course, several optimization methods will be given to solve multi-objective optimization problems as follows:
No preference methods
A priori methods
A posteriori methods
Progressive methods
The course also includes a large number of coding videos to give you enough opportunity to practice the theory covered in the lecture. There are also several case studies including real-world problems that allow you to learn the process of solving challenging multi-objective optimization problems using multi-objective optimization algorithms.
For the search methods, we will be using stochastic optimization algorithms including
Particle Swarm Optimization
and
Genetic Algorithms
. This means that we develop Multi-Objective Particle Swarm Optimization (MOPSO) and multi-Objective Genetic Algorithms (MOGA).
Some of the reviews for this course are as follows:
Femi said: "As always, the instructor is expert in the course and explained in details with real-life examples, and
I love his teaching style
, even though the course is a bit tough, he made it fun!"
Pankaj said: "Dr Mirjalili teaches with
a very good pace
and
conveys the concept clearly
. The examples he uses are very relatable and he
makes learning tricky concepts really fun
."
Oyakhilome said: "Another great course by Dr. Seyedali.
All components of the course were well structured
and tailored to meet the educational needs of the students. I strongly recommend this course to everyone new to the field of optimization."
Join 1000+ students and start your optimization journey with us. If you are in any way not satisfied, for any reason, you can
get a full refund from Udemy
within 30 days. No questions asked. But I am confident you won't need to. I stand behind this course 100% and am committed to help you along the way.

Updated in November 2018 with brand new section on Dynamic Programming!
This course crams months of
computer science
and
interview prep
material into 20 hours of video. The content is based directly on last semester of my in-person
coding bootcamps
, where my students go on to land
6-figure developer jobs
. I cover the exact same computer science content that has helped my students ace interviews at huge companies like
Google, Tesla, Amazon
, and
Facebook
. Nothing is watered down for an online audience; this is the real deal :) We start with the basics and then eventually cover “advanced topics” that similar courses shy away from like
Heaps, Graphs
, and
Dijkstra’s Shortest Path Algorithm
.
I start by teaching you how to analyze your code’s time and space complexity using
Big O notation
. We cover the ins and outs of
Recursion
. We learn a 5-step approach to solving any difficult coding problem. We cover common programming patterns. We implement popular
searching algorithms
. We write 6 different
sorting algorithms
: Bubble, Selection, Insertion, Quick, Merge, and Radix Sort. Then, we switch gears and implement our own
data structures
from scratch, including
linked lists, trees, heaps, hash tables
, and
graphs
. We learn to traverse trees and graphs, and cover
Dijkstra's Shortest Path Algorithm
. The course also includes an entire section devoted to
Dynamic Programming
.
Here's why this course is worth your time:
It's interactive - I give you a chance to try every problem before I show you my solution.
Every single problem has a complete solution walkthrough video as well as accompanying solution file.
I cover helpful "tips and tricks" to solve common problems, but we also focus on building an approach to ANY problem.
It's full of animations and beautiful diagrams!
Are you looking to level-up your developer skills? Sign up today!

"Excellent! Thank you for all your hard work." - Mammoth Interactive student Inderpal
"Great! Well explained and the instructor provides clear examples" - Mark T.
Dive into a world of data science and analysis with a wide range of examples including the CIFAR 100 image dataset, Xcode development for Apple, Swift coding, CoreML, image recognition, and structuring data with pandas.
This Mammoth Interactive course was funded by a #1 project on Kickstarter
Learn Android Studio, Java, app development, Pycharm, Python coding, Tensforflow and more with Mammoth Interactive.
Build advanced projects using machine learning including advanced the MNIST database with neuron functions. Build a text summarizer and learn object localization, object recognition and Tensorboard.
Machine learning is a machine’s ability to make decisions or predictions based on previous exposure to data and extensive training. In other words, if a machine (program, app, etc.) improves its prediction accuracy through training then it has “learned”.
Learn How Models Work
Computational graphs consist of a network of connected nodes (often called neurons). Each of these nodes typically has a weight and a bias that helps determine, given an input, which path is the most likely.
There are 4 main components to building a machine learning program: data gathering and formatting, model building, training, and testing and evaluating
Data Gathering and Formatting
You will learn to gather plenty of data for the model to learn from.
All data should be formatted pretty much the same (images same size, same color scheme, etc.) and should be labelled. Also divide data into mutually exclusive training and testing sets.
Model Building
You will learn to figure out which kind of model scheme works best and what kinds of algorithms work best for the problem you’re trying to solve.
Training, Testing and Evaluating
The model can choose paths through the neural network or computational graph based upon the inputs for a particular run, as well as the weights and biases of neurons in the network.
In supervised learning, we show the model what the correct outputs are for a given set of inputs and the model alters the weights and biases of neurons to minimize the difference between its output and the correct answer.
Enroll Now to Learn with Mammoth Interactive

Computational thinking is the process of approaching a problem in a systematic manner and creating and expressing a solution such that it can be carried out by a computer. But you don't need to be a computer scientist to think like a computer scientist! In fact, we encourage students from any field of study to take this course. Many quantitative and data-centric problems can be solved using computational thinking and an understanding of computational thinking will give you a foundation for solving problems that have real-world, social impact.
In this course, you will learn about the pillars of computational thinking, how computer scientists develop and analyze algorithms, and how solutions can be realized on a computer using the Python programming language. By the end of the course, you will be able to develop an algorithm and express it to the computer by writing a simple Python program.
This course will introduce you to people from diverse professions who use computational thinking to solve problems. You will engage with a unique community of analytical thinkers and be encouraged to consider how you can make a positive social impact through computational thinking.