starstarstarstarstar_half
How does Google Maps plan the best route for getting around town given current traffic conditions? How does an internet router forward packets of network traffic to minimize delay? How does an aid group allocate resources to its affiliated local partners? To solve such problems, we first represent the key pieces of data in a complex data structure. In this course, you’ll learn about data structures, like graphs, that are fundamental for working with structured real world data. You will develop, implement, and analyze algorithms for working with this data to solve real world problems. In addition, as the programs you develop in this course become more complex, we’ll examine what makes for good code and class hierarchy design so that you can not only write correct code, but also share it with other people and maintain it in the future. The backbone project in this course will be a route planning application. You will apply the concepts from each Module directly to building an application that allows an autonomous agent (or a human driver!) to navigate its environment. And as usual we have our different video series to help tie the content back to its importance in the real world and to provide tiered levels of support to meet your personal needs.
    starstarstarstarstar_border
    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.
      starstarstarstarstar_half
      Many real-world algorithmic problems cannot be solved efficiently using traditional algorithmic tools, for example because the problems are NP-hard. The goal of this course is to become familiar with important algorithmic concepts and techniques needed to effectively deal with such problems. These techniques apply when we don't require the optimal solution to certain problems, but an approximation that is close to the optimal solution. We will see how to efficiently find such approximations. Prerequisites: In order to successfully take this course, you should already have a basic knowledge of algorithms and mathematics. Here's a short list of what you are supposed to know: - O-notation, Ω-notation, Θ-notation; how to analyze algorithms - Basic calculus: manipulating summations, solving recurrences, working with logarithms, etc. - Basic probability theory: events, probability distributions, random variables, expected values etc. - Basic data structures: linked lists, stacks, queues, heaps - (Balanced) binary search trees - Basic sorting algorithms, for example MergeSort, InsertionSort, QuickSort - Graph terminology, representations of graphs (adjacency lists and adjacency matrix), basic graph algorithms (BFS, DFS, topological sort, shortest paths) The material for this course is based on the course notes that can be found under the resources tab. We will not cover everything from the course notes. The course notes are there both for students who did not fully understand the lectures as well as for students who would like to dive deeper into the topics. The video lectures contain a few very minor mistakes. A list of these mistakes can be found under resources (in the document called "Errata"). If you think you found an error, report a problem by clicking the square flag at the bottom of the lecture or quiz where you found the error.
        starstarstarstarstar_half
        We invite you to a fascinating journey into Graph Theory — an area which connects the elegance of painting and the rigor of mathematics; is simple, but not unsophisticated. Graph Theory gives us, both an easy way to pictorially represent many major mathematical results, and insights into the deep theories behind them. In this course, among other intriguing applications, we will see how GPS systems find shortest routes, how engineers design integrated circuits, how biologists assemble genomes, why a political map can always be colored using a few colors. We will study Ramsey Theory which proves that in a large system, complete disorder is impossible! By the end of the course, we will implement an algorithm which finds an optimal assignment of students to schools. This algorithm, developed by David Gale and Lloyd S. Shapley, was later recognized by the conferral of Nobel Prize in Economics. As prerequisites we assume only basic math (e.g., we expect you to know what is a square or how to add fractions), basic programming in python (functions, loops, recursion), common sense and curiosity. Our intended audience are all people that work or plan to work in IT, starting from motivated high school students.
          starstarstarstarstar_half
          Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming. Optimization technology is ubiquitous in our society. It schedules planes and their crews, coordinates the production of steel, and organizes the transportation of iron ore from the mines to the ports. Optimization clears the day-ahead and real-time markets to deliver electricity to millions of people. It organizes kidney exchanges and cancer treatments and helps scientists understand the fundamental fabric of life, control complex chemical reactions, and design drugs that may benefit billions of individuals. This class is an introduction to discrete optimization and exposes students to some of the most fundamental concepts and algorithms in the field. It covers constraint programming, local search, and mixed-integer programming from their foundations to their applications for complex practical problems in areas such as scheduling, vehicle routing, supply-chain optimization, and resource allocation.
            starstarstarstarstar_half
            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!
              starstarstarstarstar_border
              "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
                starstarstarstarstar_half
                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.
                  starstarstarstarstar_half
                  Programming is an increasingly important skill, whether you aspire to a career in software development, or in other fields. This course is the first in the specialization Introduction to Programming in C, but its lessons extend to any language you might want to learn. This is because programming is fundamentally about figuring out how to solve a class of problems and writing the algorithm, a clear set of steps to solve any problem in its class. This course will introduce you to a powerful problem-solving process—the Seven Steps—which you can use to solve any programming problem. In this course, you will learn how to develop an algorithm, then progress to reading code and understanding how programming concepts relate to algorithms.
                    starstarstarstarstar_half
                    Counting is one of the basic mathematically related tasks we encounter on a day to day basis. The main question here is the following. If we need to count something, can we do anything better than just counting all objects one by one? Do we need to create a list of all phone numbers to ensure that there are enough phone numbers for everyone? Is there a way to tell that our algorithm will run in a reasonable time before implementing and actually running it? All these questions are addressed by a mathematical field called Combinatorics. In this course we discuss most standard combinatorial settings that can help to answer questions of this type. We will especially concentrate on developing the ability to distinguish these settings in real life and algorithmic problems. This will help the learner to actually implement new knowledge. Apart from that we will discuss recursive technique for counting that is important for algorithmic implementations. One of the main `consumers’ of Combinatorics is Probability Theory. This area is connected with numerous sides of life, on one hand being an important concept in everyday life and on the other hand being an indispensable tool in such modern and important fields as Statistics and Machine Learning. In this course we will concentrate on providing the working knowledge of basics of probability and a good intuition in this area. The practice shows that such an intuition is not easy to develop. In the end of the course we will create a program that successfully plays a tricky and very counterintuitive dice game. As prerequisites we assume only basic math (e.g., we expect you to know what is a square or how to add fractions), basic programming in python (functions, loops, recursion), common sense and curiosity. Our intended audience are all people that work or plan to work in IT, starting from motivated high school students.