datascience@berkeley seeks candidates who can perform at the highest level of academic excellence. Candidates in our Master of Information and Data Science (MIDS) must exhibit a strong knowledge and background in math and programming. Requirements for this program include:
A working knowledge of fundamental concepts including: data structures, algorithms and analysis of algorithms, and linear algebra
Programming proficiency as demonstrated by prior work experience or advanced coursework (For example: Python, Java, or R)
If you feel that you do not have the academic or professional background to qualify for the program, you may supplement your current experience by completing certain courses. Completion of coursework does not guarantee entry into the MIDS program, but successful performance in one or more of these classes may demonstrate your skills and knowledge when your application is reviewed.
We have included a partial list of on-line courses that may fit your needs. This is only a sampling of courses that are currently available and we encourage you to research courses through extension programs and your local college.
By the end of this class you will understand key concepts needed to devise new algorithms for graphs and other important data structures and to evaluate the efficiency of these algorithms.
Provider: Udacity Cost: Free Prerequisites: This class assumes an understanding of programming at the level of CS101, including the ability to read and write short programs in Python; it also assumes a comfort level with mathematical notation at the level of high school Algebra II or the SATs. Availability: Self-Paced More Information: Algorithms course information
In this course you will learn several fundamental principles of advanced algorithm design. You'll learn the greedy algorithm design paradigm, with applications to computing good network backbones (i.e., spanning trees) and good codes for data compression. You'll learn the tricky yet widely applicable dynamic programming algorithm design paradigm, with applications to routing in the Internet and sequencing genome fragments. You'll learn what NP-completeness and the famous ‘P vs. NP” problem mean for the algorithm designer. Finally, we'll study several strategies for dealing with hard (i.e., NP-complete problems), including the design and analysis of heuristics. Learn how shortest-path algorithms from the 1950s (i.e., pre-ARPANET!) govern the way that your Internet traffic gets routed today; why efficient algorithms are fundamental to modern genomics; and how to make a million bucks in prize money by ‘just” solving a math problem!
Provider: Coursera Cost: Free Prerequisites: 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. At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors. The course assumes familiarity with some of the topics from Algo 1 — especially asymptotic analysis, basic data structures, and basic graph algorithms. Availability: TBD More Information: Algorithms: Design and Analysis, Part 2 course information
Analysis of Algorithms aims to enable precise quantitative predictions of the properties of large combinatorial structures. The theory has emerged over recent decades as essential both for the scientific analysis of algorithms in computer science and for the study of scientific models in many other disciplines, including probability theory, statistical physics, computational biology and information theory. This course covers recurrence relations, generating functions, asymptotics, and fundamental structures such as trees, permutations, strings, tries, words, and mappings, in the context of applications to the analysis of algorithms. Provider: Coursera Cost: Free Prerequisites: Math through calculus and basic familiarity with programming in a modern language such as Java. Knowledge of basic algorithms and data structures from Algorithms, Part I is helpful but not required. The video From Analysis of Algorithms to Analytic Combinatorics: A Journey with Philippe Flajolet, is an optional (since it contains some advanced material that is beyond the scope of this course) overview that gives some historical perspective and introduces this course and Analytic Combinatorics. Availability: TBD More Information: Analysis of Algorithms course information
This is an intermediate algorithms course with an emphasis on teaching techniques for the design and analysis of efficient algorithms, emphasizing methods of application. Topics include divide-and-conquer, randomization, dynamic programming, greedy algorithms, incremental improvement, complexity, and cryptography.
At the end of this course, you will have a solid understanding of theoretical computer science. This will not only allow you to recognize some of the most challenging algorithmic problems out there, but also give you powerful tools to deal with them in practice. Provider: Udacity Cost: Free Prerequisites: You should have a basic understanding of algorithms and programming. No prior knowledge about theoretical computer science required! Availability: Self-Paced More Information: Introduction to Theoretical Computer Science course information
How do you find the area under a curve? What about the length of any curve? Is there a way to make sense out of the idea of adding infinitely many infinitely small things? Integral calculus gives us the tools to answer these questions and many more. Surprisingly, these questions are related to a derivative, and in some sense, the answer to each one is the opposite of the derivative. Learn differential calculus–limits, continuity, derivatives, and derivative applications.
This introductory calculus course covers differentiation and integration of functions of one variable, with applications. Topics include: Concepts of Function, Limits and Continuity Differentiation Rules, Application to Graphing, Rates, Approximations, and Extremum Problems Definite and Indefinite Integration, The Fundamental Theorem of Calculus, Applications to Geometry: Area, Volume, and Arc Length, Applications to Science: Average Values, Work, and Probability, Techniques of Integration, Approximation of Definite Integrals, Improper Integrals, and L'Hôspital's Rule Provider: MIT Open Courseware Cost: Free Prerequisites: None Availability: Self-paced More information:MIT Open Courseware
This is a basic subject on matrix theory and linear algebra. Emphasis is given to topics that will be useful in other disciplines, including systems of equations, vector spaces, determinants, eigenvalues, similarity, and positive definite matrices.
Here are key computations and some of the ideas behind them:
Solving Ax = b for square systems by elimination (pivots, multipliers, back substitution, invertibility of A, factorization into A = LU)
Complete solution to Ax = b (column space containing b, rank of A, nullspace of A and special solutions to Ax = 0 from row reduced R)
Basis and dimension (bases for the four fundamental subspaces)
Least squares solutions (closest line by understanding projections)
Orthogonalization by Gram-Schmidt (factorization into A = QR)
Properties of determinants (leading to the cofactor formula and the sum over all n! permutations, applications to inv(A) and volume)
Eigenvalues and eigenvectors (diagonalizing A, computing powers A^k and matrix exponentials to solve difference and differential equations)
Symmetric matrices and positive definite matrices (real eigenvalues and orthogonal eigenvectors, tests for x'Ax > 0, applications)
Linear transformations and change of basis (connected to the Singular Value Decomposition – orthonormal bases that diagonalize A)
Linear algebra in engineering (graphs and networks, Markov matrices, Fourier matrix, Fast Fourier Transform, linear programming)
Data structures play a central role in modern computer science. You interact with data structures even more often than with algorithms (think Google, your mail server, and even your network routers). In addition, data structures are essential building blocks in obtaining efficient algorithms. This course covers major results and current directions of research in data structure.
From creator: ‘Learn Python The Hard Way is a Python tutorial I wrote to teach programming to people who do not know how to code. It assumes you are probably a power user of your computer, and then takes you from nothing to programming simple games. After finishing this course you should be ready for many of the other programming books out there.”
Think Python is an introduction to Python programming for beginners. It starts with basic concepts of programming, and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression. Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps and introduced over the course of several chapters.
Provider: Green Tea Press Cost: PDF Free; Buy Paper Copy Prerequisites: None Availability: Self-Paced More Information: Think Python information