E.g., 2016-07-23
E.g., 2016-07-23
E.g., 2016-07-23
Aug 2016

You've learned the basic algorithms now and are ready to step into the area of more complex problems and algorithms to solve them. Advanced algorithms build upon basic ones and use new ideas. We will start with networks flows which are used in more obvious applications such as optimal matchings, finding disjoint paths and flight scheduling as well as more surprising ones like image segmentation in computer vision or finding dense clusters in the advertiser-search query graphs at search engines. We then proceed to linear programming with applications in optimizing budget allocation, portfolio optimization, finding the cheapest diet satisfying all requirements, call routing in telecommunications and many others. Next we discuss inherently hard problems for which no exact good solutions are known (and not likely to be found) and how to solve them approximately in a reasonable time. We finish with some applications to Big Data and Machine Learning which are heavy on algorithms right now.

Average: 5 (5 votes)
Jul 25th 2016

The course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, dynamic programming. We will learn a lot of theory: how to sort data and how it helps for searching; how to break a large problem into pieces and solve them recursively; when it makes sense to proceed greedily; how dynamic programming is used in genomic studies. You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second).

Average: 8.2 (5 votes)
Jul 25th 2016

Experienced Computer Scientists analyze and solve computational problems at a level of abstraction that is beyond that of any particular programming language. This two-part class is designed to train students in the mathematical concepts and process of "Algorithmic Thinking", allowing them to build simpler, more efficient solutions to computational problems.

Average: 7.3 (8 votes)
Jul 25th 2016

Experienced Computer Scientists analyze and solve computational problems at a level of abstraction that is beyond that of any particular programming language. This two-part class is designed to train students in the mathematical concepts and process of "Algorithmic Thinking", allowing them to build simpler, more efficient solutions to computational problems.

Average: 6 (6 votes)
Jul 25th 2016

This two-part course introduces the basic mathematical and programming principles that underlie much of Computer Science. Understanding these principles is crucial to the process of creating efficient and well-structured solutions for computational problems. To get hands-on experience working with these concepts, we will use the Python programming language.

Average: 6.1 (8 votes)
Jul 24th 2016

A blank canvas is full of possibility. If you have an idea for a user experience, how do you turn it into a beautiful and effective user interface? This covers covers principles of visual design so that you can effectively organize and present information with your interfaces. You'll learn concrete strategies to create user interfaces, including key lessons in typography, information architecture, layout, color, and more. You’ll learn particular issues that arise in new device contexts, such as mobile and responsive interfaces.

Average: 6 (27 votes)
Jul 19th 2016

Learn how to use SSIS to build high performance integration solutions and ETL packages for data warehousing.

Average: 5.5 (2 votes)
Jul 18th 2016

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.

Average: 4.5 (4 votes)
Jul 18th 2016

Imagina que pudieses pedirle a Google que buscase una hora con tu médico especialista. Imagina además que Google reservase automáticamente la hora que más te acomoda. Ese es el objetivo de la Web Semántica, el que tu computador sea capaz de entender lo que le estás pidiendo y ejecute las acciones necesarias (interactuando automáticamente con otros computadores) para conseguir lo que le pides.

No votes yet
Jul 18th 2016

This course begins a series of classes illustrating the power of computing in modern biology. Please join us on the frontier of bioinformatics to look for hidden messages in DNA without ever needing to put on a lab coat. After warming up our algorithmic muscles, we will learn how randomized algorithms can be used to solve problems in bioinformatics.

Average: 8 (8 votes)
Jul 18th 2016

In this class, we will compare DNA from an individual against a reference human genome to find potentially disease-causing mutations. We will also learn how to identify the function of a protein even if it has been bombarded by so many mutations compared to similar proteins with known functions that it has become barely recognizable.

Average: 6.8 (5 votes)
Jul 18th 2016

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.

Average: 8 (4 votes)
Jul 18th 2016

In this course you will learn a whole lot of modern physics (classical and quantum) from basic computer programs that you will download, generalize, or write from scratch, discuss, and then hand in. Join in if you are curious (but not necessarily knowledgeable) about algorithms, and about the deep insights into science that you can obtain by the algorithmic approach.

Average: 9.3 (4 votes)
Jul 18th 2016

Despite everyone's good intentions, hard work and solid ideas, too many projects end up creating unneeded, unusable, and unsellable products. But it doesn't have to be this way. Agile and design thinking offer a different--and effective--approach to product development, one that results in valuable solutions to meaningful problems. In this course, you’ll learn how to determine what's valuable to a user early in the process--to frontload value--by focusing your team on testable narratives about the user and creating a strong shared perspective.

Average: 6 (1 vote)
Jul 18th 2016

Learn how to model social and economic networks and their impact on human behavior. How do networks form, why do they exhibit certain patterns, and how does their structure impact diffusion, learning, and other behaviors? We will bring together models and techniques from economics, sociology, math, physics, statistics and computer science to answer these questions.

Average: 10 (1 vote)
Jul 18th 2016

After sequencing genomes, we would like to compare them. We will see that dynamic programming is a powerful algorithmic tool when we compare two genes (i.e., short sequences of DNA) or two proteins. When we "zoom out" to compare entire genomes, we will employ combinatorial algorithms.

Average: 5.3 (6 votes)
Jul 18th 2016

A good algorithm usually comes together with a good data structure that allows the algorithm to manipulate the data efficiently. In this course, we consider the common data structures that are used in various computational problems. We start from the most basic data structures such as arrays, queues, stacks, trees. We discuss typical situations where such data structures arise. We then consider two ways of implementing dictionaries — hash tables and binary search trees. These data structures are heavily used in programming languages and databases. In practice, any nontrivial program uses either a hash table or a binary search tree implicitly. Although those data structures are usually built-in or implemented in a library that you use, it is crucial to understand their advantages and shortcomings to efficiently apply one or another in your programs and sometimes even extend standard implementations. Finally, we discuss data structures that allow to perform queries like extracting the minimal value or checking whether two elements belong to the same set.

Average: 10 (2 votes)
Jul 18th 2016

Cloud computing systems today, whether open-source or used inside companies, are built using a common set of core techniques, algorithms, and design philosophies—all centered around distributed systems. Learn about such fundamental distributed computing "concepts" for cloud computing.

No votes yet
Jul 18th 2016

Biologists still cannot read the nucleotides of an entire genome as you would read a book from beginning to end. However, they can read short pieces of DNA. In this course, we will see how graph theory can be used to assemble genomes from these short pieces. We will further learn about brute force algorithms and apply them to sequencing mini-proteins called antibiotics. Finally, you will learn how to apply popular bioinformatics software tools to sequence the genome of a deadly Staphylococcus bacterium.

Average: 10 (1 vote)
Jul 18th 2016

Traditional development processes often lead to team frustration and poor results. Agile offers a different approach to managing the complexity of software development. This course focuses on the day-to-day jobs of running a software development program and how leading agile methodologies (Scrum, XP, kanban) can help you do them better.

No votes yet

Pages

 

Tell your friends: