background preloader

Design and Analysis of Algorithms I

Design and Analysis of Algorithms I
About the Course In this course you will learn several fundamental principles of algorithm design. You'll learn the divide-and-conquer design paradigm, with applications to fast sorting, searching, and multiplication. You'll learn several blazingly fast primitives for computing on graphs, such as how to compute connectivity information and shortest paths. Course Syllabus Week 1: Introduction. Week 2: Running time analysis of divide-and-conquer algorithms. Week 3: More on randomized algorithms and probability. Week 4: Graph primitives. Week 5: Dijkstra's shortest-path algorithm. Week 6: Further data structures. Recommended Background How to program in at least one programming language (like C, Java, or Python); and familiarity with proofs, including proofs by induction and by contradiction. Suggested Readings No specific textbook is required for the course. Course Format The class will consist of lecture videos, generally between 10 and 15 minutes in length.

Probabilistic Graphical Models About the Course What are Probabilistic Graphical Models? Uncertainty is unavoidable in real-world applications: we can almost never predict with certainty what will happen in the future, and even in the present and the past, many important aspects of the world are not observed with certainty. In this class, you will learn the basics of the PGM representation and how to construct them, using both human knowledge and machine learning techniques; you will also learn algorithms for using a PGM to reach conclusions about the world from limited and noisy evidence, and for making good decisions under uncertainty. Course Syllabus Topics covered include: There will be short weekly review quizzes and programming assignments (Octave/Matlab) focusing on case studies and applications of PGMs to real-world problems: To prepare for the class in advance, you may consider reading through the following sections of the textbook (discount code DKPGM12) by Daphne and Nir Friedman: Introduction and Overview.

Natural Language Processing Algorithmic Thinking (Part 1) - Rice University About the Course When presented with a problem from a scientific domain, a Computer Scientist goes through a set of steps in order to provide a solution for the problem. These steps include: (1) understanding the problem; (2) formulating the problem mathematically; (3) designing an algorithm; (4) implementing the algorithm; and (5) solving the original scientific problem. This course will train students in how to employ algorithmic thinking by following these five steps to solve real-world problems. Understanding the problem entails holding conversations with domain experts to understand the parameters of the problem, what data they can provide to the computer program, what answers they expect, etc. While the course emphasizes implementing the algorithms and solving the original problems that gave rise to the need for these algorithms in the first place, much of this two-part course (part 2 is available here) will be devoted to the third step, namely, algorithm design. Course Format

The Best Way to Learn Rails I come from a PHP background, but these days, I'm a full-time Rails developer. The difficulty for most people who make the switch lies in the learning curve that’s involved. Once you've become proficient in a language or framework, switching to a new one feels like an unnecessary (and time-consuming) challenge. However, learning Ruby and Rails is actually pretty easy! This article details a full lesson plan that will get you up and running in no time! You might think learning Ruby is the most important step, and this is probably the part where everyone stops learning and just sticks with their current framework. Work through the Try Ruby exercises. The most recommended tool for dipping into Ruby's syntax is the Try Ruby website. Once you’ve worked through these exercises a couple of times, you'll have a solid base. Run gem install rails to install Rails. If you want to learn Rails, you’ll of course need to install it on your machine. Next, you need to install Rails. Great!

Machine Learning Video Listing Having trouble viewing lectures? Try changing players. Your current player format is html5. Change to flash. I. (expanded, click to collapse) II. III. IV. V. VI. VII. VIII. IX. X. XI. XII. XIII. XIV. XV. XV. Tutorials Video Tutorials Links to videos that cover the Processing basics. Hello Processingby Daniel Shiffman et al.Short video lessons introduce coding exercises that lead to designing an interactive drawing program. Welcome to Processing 3by Daniel ShiffmanWhat's new in Processing 3? Dan walks through the new features and changes. Plethora Projectby Jose SanchezThese video tutorials cover issues of programming and computational design issues in Processing. Text Tutorials A collection of step-by-step lessons covering beginner, intermediate, and advanced topics.

Information Theory Python for the Web The theme music for this blog post is: Air - Playground Love. Python is the best language in the world for interacting with the web, and I'm going to show you why. This article will give an extremely high level overview of how to use python for the web. Interacting with Websites and APIs Using Python The single best package for interacting with the web using Python is 'Requests' by Kenneth Reitz. First, you'll need to install it. Once you have pip installed, run: pip install requests And now you have Requests installed! The two methods you'll need the most are GET and POST. First let's take a look at GET. That's it! Now let's look at a slightly more complicated example. Here, YOURUSERNAME and YOURPASSWORD will be send as login credentials to the server. Now, let's try a POST request to send some data TO the server. This code will send the values "RoboCop" and "The best movie ever." for the fields "title" and "description", respectively. Processing JSON in Python pip install simplejson Hooray!

Computer Science 101 UPDATE: we're doing a live, updated MOOC of this course at stanford-online July-2014 (not this Coursera version). See here: CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. In CS101, students play and experiment with short bits of "computer code" to bring to life to the power and limitations of computers. Here is another video Nick created for this class.

Related: