DirDev.com

Awesome CS Courses Awesome

Introduction

There is a lot of ~~hidden~~ treasure lying within university pages scattered across the internet. This list is an attempt to bring to light those awesome CS courses which make their high-quality material i.e. assignments, lectures, notes, readings & examinations available online for free.

Table of Contents

Legend

  • Lecture Videos - Lecture Videos
  • Lecture Notes - Lecture Notes
  • Assignments - Assignments / Labs
  • Readings - Readings

Courses

Systems

  • CS 61C Great Ideas in Computer Architecture (Machine Structures) UC Berkeley Lecture VideosLecture Notes Assignments Readings
    • The subjects covered in this course include: C and assembly language programming, translation of high-level programs into machine language, computer organization, caches, performance measurement, parallelism, CPU design, warehouse-scale computing, and related topics.
    • Lecture Videos
    • Lecture Notes
    • Resources
    • Old Exams
  • CS 107 Computer Organization & Systems Stanford University Lecture Videos Assignments
    • CS107 is the third course in Stanford's introductory programming sequence. The course will work from the C programming language down to the microprocessor to de-mystify the machine. With a complete understanding of how computer systems execute programs and manipulate data, you will become a more effective programmer, especially in dealing with issues of debugging, performance, portability, and robustness.
    • Lecture Videos
    • Assignments
  • CS 140 Operating Systems Stanford University Assignments Lecture Notes
    • This class introduces the basic facilities provided in modern operating systems. The course divides into three major sections. The first part of the course discusses concurrency. The second part of the course addresses the problem of memory management. The third major part of the course concerns file systems.
    • Lecture Notes
    • Assignments
  • 6.004 Computation Structures MIT Assignments Lecture Notes Lecture Videos
    • Introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies. Multilevel implementation strategies; definition of new primitives (e.g., gates, instructions, procedures, processes) and their mechanization using lower-level elements. Analysis of potential concurrency; precedence constraints and performance measures; pipelined and multidimensional systems. Instruction set design issues; architectural support for contemporary software structures. 4 Engineering Design Points. 6.004 offers an introduction to the engineering of digital systems. Starting with MOS transistors, the course develops of series of building blocks logic gates, combinational and sequential circuits, finite-state machines, computers and finally complete systems. Both hardware and software mechanisms are explored through a series of design examples.
    • Youtube Playlist
    • Lecture Notes
    • Labs-Assignments
  • CS 162 Operating Systems and Systems Programming UC Berkeley Lecture Videos Lecture Notes Assignments Readings
    • The purpose of this course is to teach the design of operating systems and operating systems concepts that appear in other advanced systems. Topics we will cover include concepts of operating systems, systems programming, networked and distributed systems, and storage systems, including multiple-program systems (processes, interprocess communication, and synchronization), memory allocation (segmentation, paging), resource allocation and scheduling, file systems, basic networking (sockets, layering, APIs, reliability), transactions, security, and privacy.
  • CS 168 Introduction to the Internet: Architecture and Protocols UC Berkeley Lecture Notes Assignments
    • This course is an introduction to the Internet architecture. We will focus on the concepts and fundamental design principles that have contributed to the Internet's scalability and robustness and survey the various protocols and algorithms used within this architecture. Topics include layering, addressing, intradomain routing, interdomain routing, reliable delivery, congestion control, and the core protocols (e.g., TCP, UDP, IP, DNS, and HTTP) and network technologies (e.g., Ethernet, wireless).
    • Lecture Notes & Assignments
    • Discussion Notes
  • CS 179 GPU Programming Caltech Assignments Lecture Notes
    • This course will cover programming techniques for the GPU. The course will introduce NVIDIA's parallel computing language, CUDA. Beyond covering the CUDA programming model and syntax, the course will also discuss GPU architecture, high performance computing on GPUs, parallel algorithms, CUDA libraries, and applications of GPU computing.
    • Assignments
    • Lecture Notes
  • CS 186 Introduction to Database Systems UC Berkeley Lecture Videos Assignments Readings Lecture Notes
    • In the project assignments in CS186, you will write a basic database management system called SimpleDB. For this project, you will focus on implementing the core modules required to access stored data on disk; in future projects, you will add support for various query processing operators, as well as transactions, locking, and concurrent queries.
    • Lecture Videos
    • Lecture Notes
    • Projects
  • CS 241 Systems Programming (Spring 2016) Univ of Illinois, Urbana-Champaign Assignments Lecture Notes
    • System programming refers to writing code that tasks advantage of operating system support for programmers. This course is designed to introduce you to system programming. By the end of this course, you should be proficient at writing programs that take full advantage of operating system support. To be concrete, we need to fix an operating system and we need to choose a programming language for writing programs. We chose the C language running on a Linux/UNIX operating system (which implements the POSIX standard interface between the programmer and the OS).
    • Assignments
    • Labs
    • Github Page
    • Crowd Sourced Book
  • CS 425 Distributed Systems Univ of Illinois, Urbana-Champaign Assignments Readings
    • Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2016 version by Prof Indranil Gupta.
    • Lectures
    • Assignments
  • CS 452 Real-Time Programming University of Waterloo Assignments Lecture Notes
    • Write a real-time OS microkernel in C, and application code to operate a model train set in response to real-time sensor information. The communication with the train set runs at 2400 baud so it takes about 61 milliseconds to ask all of the sensors for data about the train's possible location. This makes it particularly challenging because a train can move about 3 centimeters in that time. One of the most challenging and time-consuming courses at the University of Waterloo.
    • Assignments
    • Lecture notes
  • CS 2043 Unix Tools & Scripting Cornell University Assignments Lecture NotesReadings
    • UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course provides an intensive training to develop skills in Unix command line tools and scripting that enable the accomplishment and automation of large and challenging computing tasks. The syllabus takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python.
    • Syllabus
    • Lectures
    • Assignments
  • CS 3410 Computer System Organization and Programming Cornell University Assignments Lecture NotesReadings
    • CS3410 provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor.
    • Lectures
    • Assignments
  • CS 4410 Operating Systems Cornell University Lecture NotesReadings
    • CS 4410 covers systems programming and introductory operating system design and implementation. We will cover the basics of operating systems, namely structure, concurrency, scheduling, synchronization, memory management, filesystems, security and networking. The course is open to any undergraduate who has mastered the material in CS3410/ECE3140.
    • Syllabus
    • Lectures
  • CS 4414 Operating Systems University of Virginia Lecture Videos Assignments
    • A course (that) covers topics including: Analysis process communication and synchronization; resource management; virtual memory management algorithms; file systems; and networking and distributed systems. The primary goal of this course is to improve your ability to build scalable, robust and secure computing systems. It focuses on doing that by understanding what underlies the core abstractions of modern computer systems.
    • Syllabus
    • Lectures
  • CS 5412 Cloud Computing Cornell University Lecture Notes Readings
    • Taught by one of the stalwarts of this field, Prof Ken Birman, this course has a fantastic set of slides that one can go through. The Prof's book is also a gem and recommended as a must read in Google's tutorial on Distributed System Design
    • Slides
  • CSCE 3613 Operating Systems University of Arkansas (Fayetteville) Assignments Lecture NotesReadings - An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies.
  • CSCI-UA.0202: Operating Systems (Undergrad) Operating Systems NYU Assignments Lecture Notes Readings
    • NYU's operating system course. It's a fundamental course focusing basic ideas of operating systems, including memory management, process shceduling, file system, ect. It also includes some recommended reading materials. What's more, there are a series of hands-on lab materials, helping you easily understand OS.
    • Assignments
    • Lectures
    • Old Exams
  • CSCI 360 Computer Architecture 3 CUNY Hunter College Assignments Lecture Notes
    • A course that covers cache design, buses, memory hierarchies, processor-peripheral interfaces, and multiprocessors, including GPUs.
  • CSCI 493.66 UNIX System Programming (formerly UNIX Tools) CUNY Hunter College Assignments Lecture Notes
    • A course that is mostly about writing programs against the UNIX API, covering all of the basic parts of the kernel interface and libraries, including files, processes, terminal control, signals, and threading.
  • CSCI 493.75 Parallel Computing CUNY Hunter College Assignments Lecture Notes
    • The course is an introduction to parallel algorithms and parallel programming in C and C++, using the Message Passing Interface (MPI) and the OpenMP application programming interface. It also includes a brief introduction to parallel architectures and interconnection networks. It is both theoretical and practical, including material on design methodology, performance analysis, and mathematical concepts, as well as details on programming using MPI and OpenMP.
  • Hack the Kernel Introduction to Operating Systems SUNY University at Buffalo, NY Lecture Videos Assignments Lecture Notes
    • This course is an introduction to operating system design and implementation. We study operating systems because they are examples of mature and elegant solutions to a difficult design problem: how to safely and efficiently share system resources and provide abstractions useful to applications.
    • For the processor, memory, and disks, we discuss how the operating system allocates each resource and explore the design and implementation of related abstractions. We also establish techniques for testing and improving system performance and introduce the idea of hardware virtualization. Programming assignments provide hands-on experience with implementing core operating system components in a realistic development environment. Course by Dr.Geoffrey Challen
    • Syllabus
    • Slides
    • Video lectures
    • Assignments
    • Old Exams
  • ECE 459 Programming for Performance University of Waterloo Lecture Notes Assignments
    • Learn techniques for profiling, rearchitecting, and implementing software systems that can handle industrial-sized inputs, and to design and build critical software infrastructure. Learn performance optimization through parallelization, multithreading, async I/O, vectorization and GPU programming, and distributed computing.
    • Lecture slides
  • ECGR4101/5101 Embedded Systems using the Renesas RX63N Processor University of North Carolina at Charlotte Lecture Videos Readings
    • Introduction to designing microcontroller-based embedded computer systems using assembly and C programs. Examination of Real-time Operating Systems and their impact on performance. Computer engineering applications will be emphasized.
    • The goal of this course is to solidify and build upon a student’s knowledge of computer organization by presenting hands-on experience with microcontrollers. Students will also examine a few sensors that are used in commercial and medical products and learn how to interface them in a microcontroller system.
    • Lecture Videos
    • Lecture Notes
  • PODC Principles of Distributed Computing ETH-Zurich Assignments Readings Lecture Notes
    • Explore essential algorithmic ideas and lower bound techniques, basically the "pearls" of distributed computing in an easy-to-read set of lecture notes, combined with complete exercises and solutions.
    • Book
    • Assignments and Solutions
  • SPAC Parallelism and Concurrency Univ of Washington Readings
    • Technically not a course nevertheless an awesome collection of materials used by Prof Dan Grossman to teach parallelism and concurrency concepts to sophomores at UWash
  • 6.824 Distributed Systems MIT Assignments Lecture Notes
    • MIT's graduate-level DS course with a focus on fault tolerance, replication, and consistency, all taught via awesome lab assignments in Golang!
    • Assignments - Just do git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824
    • Readings
  • 6.828 Operating Systems MIT Assignments Lecture Notes
    • MIT's operating systems course focusing on the fundamentals of OS design including booting, memory management, environments, file systems, multitasking, and more. In a series of lab assignments, you will build JOS, an OS exokernel written in C.
    • Assignments
    • Lectures
    • Videos Note: These are student recorded cam videos of the 2011 course. The videos explain a lot of concepts required for the labs and assignments.
  • CSEP 552 Distributed Systems University of Washington Lecture Videos Assignments Lecture Notes
    • CSEP552 is a graduate course on distributed systems. Distributed systems have become central to many aspects of how computers are used, from web applications to e-commerce to content distribution. This course will cover abstractions and implementation techniques for the construction of distributed systems, including client server computing, the web, cloud computing, peer-to-peer systems, and distributed storage systems. Topics will include remote procedure call, maintaining consistency of distributed state, fault tolerance, high availability, and other topics. As we believe the best way to learn the material is to build it, there will be a series of hands-on programming projects.
    • Lectures of a previous session are available to watch.
  • 15-213 Introduction to Computer Systems (ICS) Carnegie-Mellon University Lecture Videos Assignments Lecture Notes
    • The ICS course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation.
    • This is the must-have course for everyone in CMU who wants to learn some computer science no matter what major are you in. Because it's CMU (The course number is as same as the zip code of CMU)!
    • Lecture Notes
    • Videos
    • Assignments
  • 15-319/619 Cloud Computing (ICS) Carnegie-Mellon University Lecture Videos Assignments
    • This project-based on-line course focuses on skill building across various aspects of cloud computing. We cover conceptual topics and provide hands-on experience through projects utilizing public cloud infrastructures (Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP)). The adoption of cloud computing services continues to grow across a variety of organizations and in many domains. Simply, cloud computing is the delivery of computing as a service over a network, whereby distributed resources and services are rented, rather than owned, by an end user as a utility.
    • For the projects, students will work with Amazon Web Services, Microsoft Azure and Google Cloud Platform, use them to rent and provision compute resources and then program and deploy applications that run on these resources. Students will develop and evaluate virtual machine (VM) and container scaling, elasticity and load balancing solutions. In addition, students will work with cloud storage systems and learn to develop different applications using batch, iterative and stream processing frameworks. 15-619 students will have to complete an extra project which entails designing and implementing a complete web-service solution for querying big data. For the extra project, the student teams are evaluated based on the cost and performance of their web service.
    • Lecture Notes
    • Videos
  • 15-418 Parallel Computer Architecture and Programming Carnegie-Mellon University Lecture Videos Assignments Lecture Notes Readings
    • The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems as well as to teach parallel programming techniques necessary to effectively utilize these machines. Because writing good parallel programs requires an understanding of key machine performance characteristics, this course will cover both parallel hardware and software design.
    • Assignments
    • Lecture Notes
    • Lecture Videos
    • Readings
  • 15-440 Distributed Systems Carnegie-Mellon University Assignments Lecture Notes
    • Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language.
    • Assignments
  • 15-721 Database Systems Carnegie-Mellon University Lecture Videos Assignments Readings
    • This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in both high-performance transaction processing systems (OLTP) and large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas. All class projects will be in the context of a real in-memory, multi-core database system. The course is appropriate for graduate students in software systems and for advanced undergraduates with strong systems programming skills.
    • Assignments
    • Lecture Videos
    • Readings
  • 15-445/645 Database Systems Carnegie-Mellon University Lecture Videos Assignments Readings
  • 15-749 Engineering Distributed Systems Carnegie-Mellon University Readings
    • A project focused course on Distributed Systems with an awesome list of readings
    • Readings
  • 18-447 Introduction to Computer Architecture CMU Lecture Videos Assignments Readings
    • Very comprehensive material on Computer Architecture - definitely more than just "introduction". Online material is very user-friendly, even the recitation videos available online. This is the Spring'15 version by Prof. Onur Mutlu
    • Lectures and Recitation
    • Homeworks 7 HWs with answer set as well
    • Readings

Programming Languages / Compilers

  • CS 75 Principles of Compiler Design Swathmore College Lecture Videos Assignments Lecture Notes
  • CS 91 Introduction to Programming Languages Swathmore College Lecture Notes Assignments
    • Uses the Pyret programming language & PAPL book to understand the fundamentals of programming languages.
    • Labs
  • CIS 194 Introduction to Haskell Penn Engineering Assignments Lecture Notes
    • Explore the joys of functional programming, using Haskell as a vehicle. The aim of the course will be to allow you to use Haskell to easily and conveniently write practical programs.
    • Previous semester also available, with more exercises
  • CIS 198 Rust Programming UPenn Lecture Notes Assignments
    • This course covers what makes Rust so unique and applies it to practical systems programming problems. Topics covered include traits and generics; memory safety (move semantics, borrowing, and lifetimes); Rust’s rich macro system; closures; and concurrency.
    • Assignments
  • Clojure Functional Programming with Clojure University of Helsinki Assignments
    • The course is an introduction to functional programming with a dynamically typed language Clojure. We start with an introduction to Clojure; its syntax and development environment. Clojure has a good selection of data structures and we cover most of them. We also go through the basics of recursion and higher-order functions. The course material is in English.
    • Github Page
  • CMSC 430 Introduction to Compilers Univ of Maryland Assignments Lecture Notes
    • The goal of CMSC 430 is to arm students with the ability to design, implement, and extend a programming language. Throughout the course, students will design and implement several related languages, and will explore parsing, syntax querying, dataflow analysis, compilation to bytecode, type systems, and language interoperation.
    • Lecture Notes
    • Assignments
  • COS 326 Functional Programming Princeton University Assignments Lecture Notes
    • Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language
    • Lectures
    • Assignments
  • CS 143 Compiler construction Stanford University Lecture NotesAssignments
  • CS 164 Hack your language! UC Berkeley Lecture Videos Assignments Lecture Notes
  • CS 173 Programming Languages Brown University Lecture Videos Assignments
    • Course by Prof. Krishnamurthi (author of HtDP) and numerous other awesome books on programming languages. Uses a custom designed Pyret programming language to teach the concepts. There was an online class hosted in 2012, which includes all lecture videos for you to enjoy.
    • Videos
    • Assignments
  • CS 223 Purely Functional Data Structures In Elm University of Chicago Assignments Lecture Notes
    • This course teaches functional reactive programming and purely functional data structures based on Chris Okazaki's book and using the Elm programming language.
    • Lectures
    • Assignments
  • CS 240h Functional Systems in Haskell Stanford University Assignments Lecture Notes
  • CS 421 Programming Languages and Compilers Univ of Illinois, Urbana-Champaign Lecture Videos Assignments Lecture Notes Course that uses OCaml to teach functional programming and programming language design.
  • CS 3110 Data Structures and Functional Programming Cornell University Assignments Lecture Notes
    • Another course that uses OCaml to teach alternative programming paradigms, especially functional and concurrent programming.
    • Lecture Slides
    • Assignments
  • CS 4120 Introduction to Compilers Cornell University Assignments Lecture NotesReadings
    • An introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to optimization, and compile-time and run-time support for modern programming languages. As part of the course, students build a working compiler for an object-oriented language.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4400 Programming Languages Northeastern University Assignments Lecture Notes Readings
    • This is a course on the study, design, and implementation of programming languages.
    • The course works at two simultaneous levels: first, we will use a programming language that can demonstrate a wide variety of programming paradigms. Second, using this language, we will learn about the mechanics behind programming languages by implementing our own language(s). The two level approach usually means that we will often see how to use a certain feature, and continue by implementing it.
    • Syllabus
    • Lecture Notes/Resources
  • CS 4610 Programming Languages and Compilers University of Virginia Assignments Lecture Notes
    • Course that uses OCaml to teach functional programming and programming language design. Each assignment is a part of an interpreter and compiler for an object-oriented language similar to Java, and you are required to use a different language for each assignment (i.e., choose 4 from Python, JS, OCaml, Haskell, Ruby).
    • Lecture Notes
    • Assignments
  • CS 5114 Network Programming Languages Cornell University Lecture NotesReadings
    • This course provides an introduction to the languages used to program computer networks. It will examine recent proposals based on logic, functional, and distributed languages, as well as tools for establishing correctness using automatic solvers, model checkers, and proof assistants.
    • Syllabus
    • Lectures
  • CS 5142 Scripting Languages Cornell University Lecture NotesAssignments
    • Perl, PHP, JavaScript, VisualBasic -- they are often-requested skills for employment, but most of us do not have the time to find out what they are all about. In this course, you learn how to use scripting languages for rapid prototyping, web programming, data processing, and application extension. Besides covering traditional programming languages concepts as they apply to scripting (e.g., dynamic typing and scoping), this course looks at new concepts rarely found in traditional languages (e.g., string interpolation, hashes, and polylingual code). Through a series of small projects, you use different languages to achieve programming tasks that highlight the strengths and weaknesses of scripting. As a side effect, you practice teaching yourself new languages.
    • Syllabus
    • Lectures
    • Assignments
  • CS 5470 Compilers University of Utah Assignments Lecture Notes Readings
    • If you're a fan of Prof Matt's writing on his fantastic blog you ought to give this a shot. The course covers the design and implementation of compilers, and it explores related topics such as interpreters, virtual machines and runtime systems. Aside from the Prof's witty take on cheating the page has tons of interesting links on programming languages, parsing and compilers.
    • Lecture Notes
    • Projects
  • CS 6118 Types and Semantics Cornell University Lecture NotesReadings
    • Types and Semantics is about designing and understand programming languages, whether they be domain specific or general purpose. The goal of this class is to provide a variety of tools for designing custom (programming) languages for whatever task is at hand. Part of that will be a variety of insights on how languages work along with experiences from working with academics and industry on creating new languages such as Ceylon and Kotlin. The class focuses on types and semantics and the interplay between them. This means category theory and constructive type theory (e.g. Coq and richer variations) are ancillary topics of the class. The class also covers unconventional semantic domains such as classical linear type theory in order to both break students from conventional thinking and to provide powerful targets capable of formalizing thinks like networking protocols, resource-sensitive computation, and concurrency constructs. The class project is to design and formalize a (programming) language for a purpose of the student's choosing, and assignments are designed to ensure students have had a chance to practice applying the techniques learned in class before culminating these skills in the class project.
    • Syllabus
    • Lectures
  • CSC 253 CPython internals: A ten-hour codewalk through the Python interpreter source code University of Rochester Lecture VideosReadings
  • Nine lectures walking through the internals of CPython, the canonical Python interpreter implemented in C. They were from the Dynamic Languages and Software Development course taught in Fall 2014 at the University of Rochester.
  • CSE 341 Programming Languages University of Washington Lecture Videos Assignments Lecture Notes
  • CSE P 501 Compiler Construction University of Washington Lecture Videos Assignments
    • Teaches understanding of how a modern compiler is structured and the major algorithms that are used to translate code from high-level to machine language. The best way to do this is to actually build a working compiler, so there will be a significant project to implement one that translates programs written in a core subset of Java into executable x86 assembly language. The compilers themselves will use scanner and parser generator tools and the default implementation language is Java.
    • Lectures
    • Assignments, Tests, and Solutions
  • DMFP Discrete Mathematics and Functional Programming Wheaton College Lecture Videos Assignments
  • A course that teaches discrete maths concepts with functional programming
  • Lecture Videos
  • Assignments
  • PCPP Practical Concurrent and Parallel Programming IT University of Copenhagen Lecture NotesAssignmentsReadings
  • In this MSc course you learn how to write correct and efficient concurrent and parallel software, primarily using Java, on standard shared-memory multicore hardware.
  • The course covers basic mechanisms such as threads, locks and shared memory as well as more advanced mechanisms such as parallel streams for bulk data, transactional memory, message passing, and lock-free data structures with compare-and-swap.
  • It covers concepts such as atomicity, safety, liveness and deadlock.
  • It covers how to measure and understand performance and scalability of parallel programs.
  • It covers tools and methods to find bugs in concurrent programs.
  • 6.945 Adventures in Advanced Symbolic Programming MIT Lecture NotesAssignmentsReadings
    • Taught by Gerald Sussman of SICP fame, this class deals with concepts and techniques for the design an implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications.
    • Assignments: Extensive programming assignments, using MIT/GNU Scheme. Students should have significant programming experience in Scheme, Common Lisp, Haskell, CAML or other "functional" language.
    • Readings
  • CS 696 Functional Design and Programming San Diego State University Lecture NotesAssignmentsReadings
    • Covers functional programming basis using Clojure.
    • Topics include testing, functional programming, immutable collections and concurrency.
    • Also includes assignments covering Clojurescript, Reagent etc.
  • L28 Advanced Functional Programming University of Cambridge Lecture NotesAssignmentsReadings
    • This module aims to teach students how to use the features of modern typed functional programming languages (e.g. OCaml, Haskell) to design and implement libraries and DSLs. It aims to demonstrate how such techniques can improve both correctness and efficiency. Students wishing to take the module should have some experience of a typed functional programming language and an understanding of type inference.
    • This particular session was taught by a prominent OCaml programmer, open Source contributor & author of real world OCaml - Dr Anil Madhavapeddy.

Algorithms

  • CS 61B Data Structures UC Berkeley Lecture Videos Assignments Lecture Notes Readings
    • In this course, you will study advanced programming techniques including data structures, encapsulation, abstract data types, interfaces, and algorithms for sorting and searching, and you will get a taste of “software engineering”—the design and implementation of large programs.
    • Full Lecture Materials Lecture of Spring 2016. This website contains full matrials including video links, labs, homeworks, projects. Very good for self-learner. Also a good start for Java. And it includes some other useful resources for Java Documentation, Data Structure Resources, Git/GitHub and Java Development Resources. Resources
    • Labs The link to labs and projects is included in the website.
    • Lecture Videos
  • CS 97SI Introduction to Competitive Programming Stanford University Assignments Lecture Notes
    • Fantastic repository of theory and practice problems across various topics for students who are interested to participate in ACM-ICPC.
    • Lectures and Assignments
  • CS 224 Advanced Algorithms Harvard University Lecture Videos Assignments Lecture Notes
    • CS 224 is an advanced course in algorithm design, and topics we will cover include the word RAM model, data structures, amortization, online algorithms, linear programming, semidefinite programming, approximation algorithms, hashing, randomized algorithms, fast exponential time algorithms, graph algorithms, and computational geometry.
    • Lecture Videos (Youtube)
    • Assignments
  • CS 261 A Second Course in Algorithms Stanford University Lecture Videos Assignments Lecture Notes
    • Algorithms for network optimization: max-flow, min-cost flow, matching, assignment, and min-cut problems. Introduction to linear programming. Use of LP duality for design and analysis of algorithms. Approximation algorithms for NP-complete problems such as Steiner Trees, Traveling Salesman, and scheduling problems. Randomized algorithms. Introduction to online algorithms.
    • Lecture Notes, Videos & Assignments (Youtube)
  • CS 473/573 Fundamental Algorithms Univ of Illinois, Urbana-Champaign Assignments Lecture Notes
    • Algorithms class covering recursion, randomization, amortization, graph algorithms, network flows and hardness. The lecture notes by Prof. Erikson are comprehensive enough to be a book by themselves. Highly recommended!
    • Lecture Notes
    • Labs and Exams
  • CS 2150 Program & Data Representation University of Virginia Assignments Lecture Notes
    • This data structures course introduces C++, linked-lists, stacks, queues, trees, numerical representation, hash tables, priority queues, heaps, huffman coding, graphs, and x86 assembly.
    • Lectures
    • Assignments
  • CS 4820 Introduction to Analysis of Algorithms Cornell University Assignments Lecture Notes Readings
    • This course develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide and conquer, dynamic programming, and network flow), computability theory focusing on undecidability, computational complexity focusing on NP-completeness, and algorithmic techniques for intractable problems, including identification of structured special cases, approximation algorithms, and local search heuristics.
    • Lectures
    • Syllabus
  • CSCI 104 Data Structures and Object Oriented Design Assignments Lecture Notes University of Southern California (USC)
  • CSCI 135 Software Design and Analysis I Assignments Lecture Notes CUNY Hunter College
    • It is currently an intensive introduction to program development and problem solving. Its emphasis is on the process of designing, implementing, and evaluating small-scale programs. It is not supposed to be a C++ programming course, although much of the course is spent on the details of C++. C++ is an extremely large and complex programming language with many features that interact in unexpected ways. One does not need to know even half of the language to use it well.
    • Lectures and Assignments
  • CSCI 235 Software Design and Analysis II CUNY Hunter College Assignments Lecture Notes
    • Introduces algorithms for a few common problems such as sorting. Practically speaking, it furthers the students' programming skills with topics such as recursion, pointers, and exception handling, and provides a chance to improve software engineering skills and to give the students practical experience for more productive programming.
    • Lectures and Assignments
  • CSCI 335 Software Design and Analysis III Assignments Lecture Notes CUNY Hunter College
    • This includes the introduction of hashes, heaps, various forms of trees, and graphs. It also revisits recursion and the sorting problem from a higher perspective than was presented in the prequels. On top of this, it is intended to introduce methods of algorithmic analysis.
    • Lectures and Assignments
  • CSE 331 Software Design and Implementation University of Washington Assignments Lecture Notes
    • Explores concepts and techniques for design and construction of reliable and maintainable software systems in modern high-level languages; program structure and design; program-correctness approaches, including testing.
    • Lectures, Assignments, and Exams
  • CSE 373 Analysis of Algorithms Stony Brook University Lecture Videos Assignments Lecture Notes Readings
    • Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal book has been touted by many to be best for getting that job in Google. In addition, he's also well-known for tutoring students in competitive programming competitions. If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course.
    • Lecture Videos
  • ECS 122A Algorithm Design and Analysis UC Davis Lecture Videos Assignments Lecture Notes
    • Taught by Dan Gusfield in 2010, this course is an undergraduate introduction to algorithm design and analysis. It features traditional topics, such as Big Oh notation, as well as an importance on implementing specific algorithms. Also featured are sorting (in linear time), graph algorithms, depth-first search, string matching, dynamic programming, NP-completeness, approximation, and randomization.
    • Syllabus
    • Lecture Videos
    • Assignments
  • ECS 222A Graduate Level Algorithm Design and Analysis UC Davis Lecture Videos Assignments Lecture Notes
    • This is the graduate level complement to the ECS 122A undergraduate algorithms course by Dan Gusfield in 2011. It assumes an undergrad course has already been taken in algorithms, and, while going over some undergraduate algorithms topics, focuses more on increasingly complex and advanced algorithms.
    • Lecture Videos
    • Syllabus
    • Assignments
  • 6.INT Hacking a Google Interview MIT Readings
    • This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interview questions for software engineer interviews at highly selective companies like Apple, Google, and Facebook. They cover time complexity, hash tables, binary search trees, and other common algorithm topics you should have already covered in a different course, but goes more in depth on things you wouldn't otherwise learn in class- like bitwise logic and problem solving tricks.
    • Handouts
    • Topics Covered
  • 6.006 Introduction to Algorithms MIT Lecture VideosAssignments Readings
    • This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
    • Lecture Videos
    • Assignments
    • Readings
    • Resources
    • Old Exams
  • 6.046J/18.410J Design and Analysis of Algorithms MIT Lecture VideosLecture Notes Assignments Readings
    • 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. This course assumes that students know how to analyze simple algorithms and data structures from having taken 6.006. It introduces students to the design of computer algorithms, as well as analysis of sophisticated algorithms.
    • Lecture Videos
    • Lecture Notes
    • Assignments
    • Resources
    • Old Exams
  • 6.851 Advanced Data Structures MIT Lecture Videos Assignments Lecture Notes
    • This is an advanced DS course, you must be done with the Advanced Algorithms course before attempting this one.
    • Lectures Contains videos from sp2012 version, but there isn't much difference.
    • Assignments contains the calendar as well.
  • 6.854/18.415J Advanced Algorithms MIT Lecture Videos Assignments Lecture Notes
    • Advanced course in algorithms by Dr. David Karger covering topics such as amortization, randomization, fingerprinting, word-level parallelism, bit scaling, dynamic programming, network flow, linear programming, fixed-parameter algorithms, and approximation algorithms.
    • Register on NB to access the problem set and lectures.
  • 6.854J/18.415J Advanced Algorithms MIT Lecture NotesAssignments Readings
    • This course is a first-year graduate course in algorithms. Emphasis is placed on fundamental algorithms and advanced methods of algorithmic design, analysis, and implementation. Techniques to be covered include amortization, randomization, fingerprinting, word-level parallelism, bit scaling, dynamic programming, network flow, linear programming, fixed-parameter algorithms, and approximation algorithms. Domains include string algorithms, network optimization, parallel algorithms, computational geometry, online algorithms, external memory, cache, and streaming algorithms, and data structures. The need for efficient algorithms arises in nearly every area of computer science. But the type of problem to be solved, the notion of what algorithms are "efficient,'' and even the model of computation can vary widely from area to area. In this second class in algorithms, we will survey many of the techniques that apply broadly in the design of efficient algorithms, and study their application in a wide range of application domains and computational models. The goal is for the class to be broad rather than deep. Our plan is to touch upon the following areas. This is a tentative list of topics that might be covered in the class; we will select material adaptively based on the background, interests, and rate of progress of the students.
    • Lecture Videos - Spring 2016
    • Lecture Notes
    • Assignments
    • Readings
    • Resources
  • 15-451/651 Algorithms Carnegie Mellon University Lecture Notes
    • The required algorithms class that go in depth into all basic algorithms and the proofs behind them. This is one of the heavier algorithms curriculums on this page. Taught by Avrim Blum and Manuel Blum who has a Turing Award due to his contributions to algorithms. Course link includes a very comprehensive set of reference notes by Avrim Blum.
  • 16s-4102 Algorithms University of Virginia Lecture Videos Assignments

CS Theory

  • CIS 500 Software Foundations University of Pennsylvania Assignments Lecture Notes
    • An introduction to formal verification of software using the Coq proof assistant. Topics include basic concepts of logic, computer-assisted theorem proving, functional programming, operational semantics, Hoare logic, and static type systems.
    • Lectures and Assignments
    • Textbook
  • CS 103 Mathematical Foundations of Computing Stanford University Assignments Lecture Notes
    • CS103 is a first course in discrete math, computability theory, and complexity theory. In this course, we'll probe the limits of computer power, explore why some problems are harder to solve than others, and see how to reason with mathematical certainty.
    • Links to all lectures notes and assignments are directly on the course page
  • CS 173 Discrete Structures Univ of Illinois Urbana-Champaign Assignments Lecture Notes Readings
    • This course is an introduction to the theoretical side of computer science. In it, you will learn how to construct proofs, read and write literate formal mathematics, get a quick introduction to key theory topics and become familiar with a range of standard mathematics concepts commonly used in computer science.
    • Textbook Written by the professor. Includes Instructor's Guide.
    • Assignments
    • Exams
  • CS 276 Foundations of Cryptography UC Berkeley Lecture Notes
    • This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphic Encryption, Indistinguishability Obfuscation, MPC and so on.
  • CS 278 Complexity Theory UC Berkeley Lecture Notes
    • A graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on.
  • CS 374 Algorithms & Models of Computation (Fall 2014) University of Illinois Urbana-Champaign Lecture Videos Assignments Lecture Notes
    • CS 498 section 374 (unofficially "CS 374") covers fundamental tools and techniques from theoretical computer science, including design and analysis of algorithms, formal languages and automata, computability, and complexity. Specific topics include regular and context-free languages, finite-state automata, recursive algorithms (including divide and conquer, backtracking, dynamic programming, and greedy algorithms), fundamental graph algorithms (including depth- and breadth-first search, topological sorting, minimum spanning trees, and shortest paths), undecidability, and NP-completeness. The course also has a strong focus on clear technical communication.
    • Assignments/Exams
    • Lecture Notes/Labs
    • Lecture videos
  • CS 3110 Data Structures and Functional Programming Cornell University Assignments Lecture NotesReadings
    • CS 3110 (formerly CS 312) is the third programming course in the Computer Science curriculum, following CS 1110/1112 and CS 2110. The goal of the course is to help students become excellent programmers and software designers who can design and implement software that is elegant, efficient, and correct, and whose code can be maintained and reused.
    • Syllabus
    • Lectures
    • Assignments
  • CS 3220 Introduction to Scientific Computing Cornell University Assignments Lecture NotesReadings
    • In this one-semester survey course, we introduce numerical methods for solving linear and nonlinear equations, interpolating data, computing integrals, and solving differential equations, and we describe how to use these tools wisely (we hope!) when solving scientific problems.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4300 Information Retrieval Cornell University Assignments Lecture NotesReadings
    • Studies the methods used to search for and discover information in large-scale systems. The emphasis is on information retrieval applied to textual materials, but there is some discussion of other formats.The course includes techniques for searching, browsing, and filtering information and the use of classification systems and thesauruses. The techniques are illustrated with examples from web searching and digital libraries.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4810 Introduction to Theory of Computing Cornell University Assignments Lecture Notes Readings
    • This undergraduate course provides a broad introduction to the mathematical foundations of computer science. We will examine basic computational models, especially Turing machines. The goal is to understand what problems can or cannot be solved in these models.
    • Syllabus
    • Lectures
    • Assignments
  • CS 6810 Theory of Computing Cornell University Assignments Lecture Notes Readings
    • This graduate course gives a broad introduction to complexity theory, including classical results and recent developments. Complexity theory aims to understand the power of efficient computation (when computational resources like time and space are limited). Many compelling conceptual questions arise in this context. Most of these questions are (surprisingly?) difficult and far from being resolved. Nevertheless, a lot of progress has been made toward understanding them (and also why they are difficult). We will learn about these advances in this course. A theme will be combinatorial constructions with random-like properties, e.g., expander graphs and error-correcting codes. Some examples:
      • Is finding a solution inherently more difficult than verifying it?
      • Do more computational resources mean more computing power?
      • Is it easier to find approximate solutions than exact ones?
      • Are randomized algorithms more powerful than deterministic ones?
      • Is it easier to solve problems in the average case than in the worst case?
      • Are quantum computers more powerful than classical ones?
    • Syllabus
    • Lectures
    • Assignments
  • CSCE 3193 Programming Paradigms University of Arkansas (Fayetteville) Assignments Lecture Notes
    • Programming in different paradigms with emphasis on object oriented programming, network programming and functional programming. Survey of programming languages, event driven programming, concurrency, software validation.
    • Syllabus
    • Notes
    • Assignments
    • Practice Exams
  • 6.045 Great Ideas in Theoretical Computer Science MIT Lecture Notes Lecture Videos Readings
    • This course provides a challenging introduction to some of the central ideas of theoretical computer science. Beginning in antiquity, the course will progress through finite automata, circuits and decision trees, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, the power of randomness, cryptography and one-way functions, computational learning theory, and quantum computing. It examines the classes of problems that can and cannot be solved by various kinds of machines. It tries to explain the key differences between computational models that affect their power.
    • Syllabus
    • Lecture Notes
    • Lecture Videos

Introduction to CS

  • CS 10 The Beauty and Joy of Computing UC Berkeley Lecture Videos Assignments Lecture Notes
    • CS10 is UCB's introductory computer science class, taught using the beginners' drag-and-drop language. Students learn about history, social implications, great principles, and future of computing. They also learn the joy of programming a computer using a friendly, graphical language, and will complete a substantial team programming project related to their interests.
    • Snap! (based on Scratch by MIT).
    • Curriculum
  • CS 50 Introduction to Computer Science Harvard University Lecture Videos Assignments Lecture Notes
    • CS50x is Harvard College's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan.
    • Lectures
    • Problem Sets
    • The course can also be taken from edX.
    • The course's OpenCourseware resides here
  • CS 61A Structure and Interpretation of Computer Programs [Python] UC Berkeley Lecture Videos Assignments Lecture Notes
    • In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work.
    • Lecture Resources by Type
    • Lecture Resources by Topic
    • Additional Resources
    • Practice Problems
    • Extra Lectures
  • CS 61AS Structure & Interpretation of Computer Programs [Racket] UC Berkeley Lecture Videos Assignments Lecture Notes
    • A self-paced version of the CS61 Course but in Racket / Scheme. 61AS is a great introductory course that will ease you into all the amazing concepts that future CS courses will cover, so remember to keep an open mind, have fun, and always respect the data abstraction
    • Lecture Videos
    • Assignments and Notes
  • CS 101 Computer Science 101 Stanford University Lecture Videos Assignments Lecture Notes
    • CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. Participants play and experiment with short bits of "computer code" to bring to life to the power and limitations of computers.
    • Lectures videos will available for free after registration.
  • CS 106A Programming Methodology Stanford University Lecture Videos Assignments Lecture Notes
    • This course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles.
    • Lecture Videos
    • Assignments
    • All materials in a zip file
  • CS 106B Programming Abstractions Stanford University Lecture Videos Assignments Lecture Notes
    • This course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.
    • Lectures
    • Assignments
    • All materials in a zip file
  • CS 107 Programming Paradigms Stanford University Lecture Videos Assignments Lecture Notes
    • Topics: Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++)
    • Lectures
    • Assignments
  • CS 109 Programming Practice Using Scala KAIST Assignments Lecture Notes
    • This course introduces basic concepts of programming and computer science, such as dynamic and static typing, dynamic memory allocation, objects and methods, binary representation of numbers, using an editor and compiler from the command line, running programs with arguments from the command line, using libraries, and the use of basic data structures such as arrays, lists, sets, and maps. We will use Scala for this course.
    • [Lectures] (http://otfried.org/courses/cs109/index.html)
    • [Assignments] (http://otfried.org/courses/cs109/index.html)
  • CS 1109 Fundamental Programming Concepts Cornell University Assignments Lecture Notes
    • This course provides an introduction to programming and problem solving using a high-level programming language. It is designed to increase your knowledge level to comfortably continue to courses CS111x. Our focus will be on generic programming concepts: variables, expressions, control structures, loops, arrays, functions, pseudocode and algorithms. You will learn how to analyze problems and convert your ideas into solutions interpretable by computers. We will use MATLAB; because it provides a productive environment, and it is widely used by all engineering communities.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1110 Introduction to Computing Using Python Cornell University Assignments Lecture NotesReadings
    • Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming, and GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1112 Introduction to Computing Using Matlab Cornell University Assignments Lecture NotesReadings
    • Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
    • Syllabus
    • Lectures
    • Assignments
    • Projects
  • CS 1115 Introduction to Computational Science and Engineering Using Matlab Graphical User Interfaces Cornell University Assignments Lecture NotesReadings
    • Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
    • Syllabus
    • Lectures
    • Projects
  • CS 1130 Transition to OO Programming Cornell University Assignments Lecture NotesReadings
    • Introduction to object-oriented concepts using Java. Assumes programming knowledge in a language like MATLAB, C, C++, or Fortran. Students who have learned Java but were not exposed heavily to OO programming are welcome.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1133 Transition to Python Cornell University Assignments Lecture NotesReadings
    • Introduction to the Python programming language. Covers the basic programming constructs of Python, including assignment, conditionals, iteration, functions, object-oriented design, arrays, and vectorized computation. Assumes programming knowledge in a language like Java, Matlab, C, C++, or Fortran.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1410-2 and CS2420-20 Computer Science I and II for Hackers University of Utah Assignments Lecture Notes Readings
  • CS 2110 Object-Oriented Programming and Data Structures Cornell University Assignments Lecture NotesReadings
    • CS 2110 is an intermediate-level programming course and an introduction to computer science. Topics include program design and development, debugging and testing, object-oriented programming, proofs of correctness, complexity analysis, recursion, commonly used data structures, graph algorithms, and abstract data types. Java is the principal programming language. The course syllabus can easily be extracted by looking at the link to lectures.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4302 Web Information Systems Cornell University Assignments Lecture NotesReadings
    • This course will introduce you to technologies for building data-centric information systems on the World Wide Web, show the practical applications of such systems, and discuss their design and their social and policy context by examining cross-cutting issues such as citizen science, data journalism and open government. Course work involves lectures and readings as well as weekly homework assignments, and a semester-long project in which the students demonstrate their expertise in building data-centric Web information systems.
    • Syllabus
    • Lectures
    • Assignments
  • CSCE 2004 Programming Foundations I University of Arkansas (Fayetteville) Assignments Lecture NotesReadings
    • Introductory course for students majoring in computer science or computer engineering. Software development process: problem specification, program design, implementation, testing and documentation. Programming topics: data representation, conditional and iterative statements, functions, arrays, strings, file I/O, and classes. Using C++ in a UNIX environment.
    • Syllabus
    • Notes
    • Assignments
    • Practice Exams
  • CSCI E-1 Understanding Computers and the Internet Harvard University Extension College Lecture VideosAssignments Lecture Notes
    • This course is all about understanding: understanding what's going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by others, and how your computer can become infected with a worm just by being turned on. Designed for students who use computers and the Internet every day but don't fully understand how it all works, this course fills in the gaps. Through lectures on hardware, software, the Internet, multimedia, security, privacy, website development, programming, and more, this course "takes the hood off" of computers and the Internet so that students understand how it all works and why. Through discussions of current events, students are exposed also to the latest technologies.
    • Lecture Videos
    • Syllabus
    • Notes / Recaps
    • Assignments
  • CS-for-all CS for All Harvey Mudd College Assignments Lecture Notes Readings
    • This book (and course) takes a unique approach to “Intro CS.” In a nutshell, our objective is to provide an introduction to computer science as an intellectually rich and vibrant field rather than focusing exclusively on computer programming. While programming is certainly an important and pervasive element of our approach, we emphasize concepts and problem-solving over syntax and programming language features.
    • Lectures and Other resources
  • 6.001 Structure and Interpretation of Computer Programs MIT Lecture Videos Assignments Lecture Notes
    • Teaches big-picture computing concepts using the Scheme programming language. Students will implement programs in a variety of different programming paradigms (functional, object-oriented, logical). Heavy emphasis on function composition, code-as-data, control abstraction with continuations, and syntactic abstraction through macros. An excellent course if you are looking to build a mental framework on which to hang your programming knowledge.
    • Lectures
    • Textbook (epub, pdf)
    • IDE
  • 6.005 Software Construction, Fall 2016 MIT Assignments Lecture Notes
    • This course introduces fundamental principles and techniques of software development. Students learn how to write software that is safe from bugs, easy to understand, and ready for change. Topics include specifications and invariants; testing, test-case generation, and coverage; state machines; abstract data types and representation independence; design patterns for object-oriented programming; concurrent programming, including message passing and shared concurrency, and defending against races and deadlock; and functional programming with immutable data and higher-order functions.
    • Lectures Notes/Assignments

Machine Learning

  • DEEPNLP Deep Learning for Natural Language Processing University of Oxford Assignments Lecture Notes
    • This is an applied course focussing on recent advances in analysing and generating speech and text using recurrent neural networks. We introduce the mathematical definitions of the relevant machine learning models and derive their associated optimisation algorithms. The course covers a range of applications of neural networks in NLP including analysing latent dimensions in text, transcribing speech to text, translating between languages, and answering questions. This course is organised by Phil Blunsom and delivered in partnership with the DeepMind Natural Language Research Group.
    • Lectures
    • Assignments are available on the organisation page titled as "practicals"
  • CS20si Tensorflow for Deep Learning Research Stanford University Assignments Lecture Notes
    • This course will cover the fundamentals and contemporary usage of the Tensorflow library for deep learning research. We aim to help students understand the graphical computational model of Tensorflow, explore the functions it has to offer, and learn how to build and structure models best suited for a deep learning project. Through the course, students will use Tensorflow to build models of different complexity, from simple linear/logistic regression to convolutional neural network and recurrent neural networks with LSTM to solve tasks such as word embeddings, translation, optical character recognition. Students will also learn best practices to structure a model and manage research experiments.
    • Assignments available on Github.
  • COMS 4771 Machine Learning Columbia University Assignments Lecture Notes
    • Course taught by Tony Jebara introduces topics in Machine Learning for both generative and discriminative estimation. Material will include least squares methods, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models, hidden Markov models, support vector machines, and kernel methods.
    • Lectures and Assignments
  • CS 109 Data Science Harvard University Assignments Lecture Notes Readings
    • Learning from data in order to gain useful predictions and insights. This course introduces methods for five key facets of an investigation: data wrangling, cleaning, and sampling to get a suitable data set; data management to be able to access big data quickly and reliably; exploratory data analysis to generate hypotheses and intuition; prediction based on statistical methods such as regression and classification; and communication of results through visualization, stories, and interpretable summaries.
    • Lectures
    • Slides
    • Labs and Assignments
    • 2014 Lectures
    • 2013 Lectures (slightly better)
  • CS 156 Learning from Data Caltech Lecture Videos Assignments Lecture NotesReadings
    • This is an introductory course in machine learning (ML) that covers the basic theory, algorithms, and applications. ML is a key technology in Big Data, and in many financial, medical, commercial, and scientific applications. It enables computational systems to adaptively improve their performance with experience accumulated from the observed data. ML has become one of the hottest fields of study today, taken up by undergraduate and graduate students from 15 different majors at Caltech. This course balances theory and practice, and covers the mathematical as well as the heuristic aspects.
    • Lectures
    • Homework
    • Textbook
  • CS 189 Introduction To Machine Learning UC Berkeley Assignments Lecture Notes
    • Introductory ML course covering a wide range of topics: ranging from least squares to convolutional neural networks
    • Notes
    • Homework
  • CS 224d Deep Learning for Natural Language Processing Stanford University Lecture Videos Assignments Lecture Notes
    • Natural language processing (NLP) is one of the most important technologies of the information age. Understanding complex language utterances is also a crucial part of artificial intelligence. Applications of NLP are everywhere because people communicate most everything in language: web search, advertisement, emails, customer service, language translation, radiology reports, etc. There are a large variety of underlying tasks and machine learning models powering NLP applications. Recently, deep learning approaches have obtained very high performance across many different NLP tasks. These models can often be trained with a single end-to-end model and do not require traditional, task-specific feature engineering. In this spring quarter course students will learn to implement, train, debug, visualize and invent their own neural network models. The course provides a deep excursion into cutting-edge research in deep learning applied to NLP.
    • Syllabus
    • Lectures and Assignments
  • CS 229r Algorithms for Big Data Harvard University Lecture Videos Assignments Lecture Notes
    • Big data is data so large that it does not fit in the main memory of a single machine, and the need to process big data by efficient algorithms arises in Internet search, network traffic monitoring, machine learning, scientific computing, signal processing, and several other areas. This course will cover mathematically rigorous models for developing such algorithms, as well as some provable limitations of algorithms operating in those models.
    • Lectures (Youtube)
    • Assignments
  • CS 231n Convolutional Neural Networks for Visual Recognition Stanford University Assignments Lecture Notes Lecture Videos
    • Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision.
    • Lecture Notes
    • Lecture Videos
    • Github Page
  • CS 287 Advanced Robotics UC Berkeley Assignments Lecture Notes
    • The course introduces the math and algorithms underneath state-of-the-art robotic systems. The majority of these techniques are heavily based on probabilistic reasoning and optimization---two areas with wide applicability in modern Artificial Intelligence. An intended side-effect of the course is to generally strengthen your expertise in these two areas.
    • Lectures Notes
    • Assignments
  • CS 395T Statistical and Discrete Methods for Scientific Computing University of Texas Lecture Videos Lecture Notes Assignments
    • Practical course in applying modern statistical techniques to real data, particularly bioinformatic data and large data sets. The emphasis is on efficient computation and concise coding, mostly in MATLAB and C++. Topics covered include probability theory and Bayesian inference; univariate distributions; Central Limit Theorem; generation of random deviates; tail (p-value) tests; multiple hypothesis correction; empirical distributions; model fitting; error estimation; contingency tables; multivariate normal distributions; phylogenetic clustering; Gaussian mixture models; EM methods; maximum likelihood estimation; Markov Chain Monte Carlo; principal component analysis; dynamic programming; hidden Markov models; performance measures for classifiers; support vector machines; Wiener filtering; wavelets; multidimensional interpolation; information theory.
    • Lectures and Assignments
  • CS 4780 Machine Learning Cornell University Lecture NotesReadings
    • This course will introduce you to technologies for building data-centric information systems on the World Wide Web, show the practical applications of such systems, and discuss their design and their social and policy context by examining cross-cutting issues such as citizen science, data journalism and open government. Course work involves lectures and readings as well as weekly homework assignments, and a semester-long project in which the students demonstrate their expertise in building data-centric Web information systems.
    • Syllabus
    • Lectures
  • CS 4786 Machine Learning for Data Science Cornell University Assignments Lecture Notes Readings
    • An introductory course in machine learning, with a focus on data modeling and related methods and learning algorithms for data sciences. Tentative topic list:
      • Dimensionality reduction, such as principal component analysis (PCA) and the singular value decomposition (SVD), canonical correlation analysis (CCA), independent component analysis (ICA), compressed sensing, random projection, the information bottleneck. (We expect to cover some, but probably not all, of these topics).
      • Clustering, such as k-means, Gaussian mixture models, the expectation-maximization (EM) algorithm, link-based clustering. (We do not expect to cover hierarchical or spectral clustering.).
      • Probabilistic-modeling topics such as graphical models, latent-variable models, inference (e.g., belief propagation), parameter learning.
      • Regression will be covered if time permits.
    • Assignments
    • Lectures
  • CVX 101 Convex Optimization Stanford University Assignments Lecture Notes Readings
    • The course concentrates on recognizing and solving convex optimization problems that arise in applications. Topics addressed include the following. Convex sets, functions, and optimization problems. Basics of convex analysis. Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems. Optimality conditions, duality theory, theorems of alternative, and applications. Interior-point methods. Applications to signal processing, statistics and machine learning, control and mechanical engineering, digital and analog circuit design, and finance.
    • Textbook
    • Lectures and Assignments
  • DS-GA 1008 Deep Learning New York University Lecture Videos Lecture Notes Assignments
    • This increasingly popular course is taught through the Data Science Center at NYU. Originally introduced by Yann Lecun, it is now led by Zaid Harchaoui, although Prof. Lecun is rumored to still stop by from time to time. It covers the theory, technique, and tricks that are used to achieve very high accuracy for machine learning tasks in computer vision and natural language processing. The assignments are in Lua and hosted on Kaggle.
    • Course Page
    • Recorded Lectures
  • EECS E6893 & EECS E6895 Big Data Analytics & Advanced Big Data Analytics Columbia University Assignments Readings Lecture Notes
    • Students will gain knowledge on analyzing Big Data. It serves as an introductory course for graduate students who are expecting to face Big Data storage, processing, analysis, visualization, and application issues on both workplaces and research environments.
    • Taught by Dr. Ching-Yung Lin
    • Course Site
    • Assignments - Assignments are present in the Course Slides
  • EECS E6894 Deep Learning for Computer Vision and Natural Language Processing Columbia University Lecture Notes Assignments Readings
  • This graduate level research class focuses on deep learning techniques for vision and natural language processing problems. It gives an overview of the various deep learning models and techniques, and surveys recent advances in the related fields. This course uses Theano as the main programming tool. GPU programming experiences are preferred although not required. Frequent paper presentations and a heavy programming workload are expected.
  • Readings
  • Assignments
  • Lecture Notes
  • EE103 Introduction to Matrix Methods Stanford University Assignments Lecture Notes Readings
    • The course covers the basics of matrices and vectors, solving linear equations, least-squares methods, and many applications. It'll cover the mathematics, but the focus will be on using matrix methods in applications such as tomography, image processing, data fitting, time series prediction, finance, and many others. EE103 is based on a book that Stephen Boyd and Lieven Vandenberghe are currently writing. Students will use a new language called Julia to do computations with matrices and vectors.
    • Lectures
    • Book
    • Assignments
    • Code
  • Fast.ai Introduction to Machine Learning for Coders Fast.ai / University of San Francisco Lecture Videos Lecture Notes Assignments Readings
    • There are around 24 hours of lessons, and you should plan to spend around 8 hours a week for 12 weeks to complete the material. The course is based on lessons recorded at the University of San Francisco for the Masters of Science in Data Science program. We assume that you have at least one year of coding experience, and either remember what you learned in high school math, or are prepared to do some independent study to refresh your knowledge.
    • Lecture Videos
    • Lecture Notes
    • Jupyter Notebooks
  • Info 290 Analyzing Big Data with Twitter UC Berkeley school of information Lecture Videos
    • In this course, UC Berkeley professors and Twitter engineers provide lectures on the most cutting-edge algorithms and software tools for data analytics as applied to Twitter's data. Topics include applied natural language processing algorithms such as sentiment analysis, large scale anomaly detection, real-time search, information diffusion and outbreak detection, trend detection in social streams, recommendation algorithms, and advanced frameworks for distributed computing.
    • Lecture Videos
    • Previous Years coursepage
  • Machine Learning: 2014-2015 University of Oxford Lecture Videos Lecture Notes Assignments
    • The course focusses on neural networks and uses the Torch deep learning library (implemented in Lua) for exercises and assignments. Topics include: logistic regression, back-propagation, convolutional neural networks, max-margin learning, siamese networks, recurrent neural networks, LSTMs, hand-writing with recurrent neural networks, variational autoencoders and image generation and reinforcement learning
    • Lectures and Assignments
    • Source code
  • StatLearning Intro to Statistical Learning Stanford University Assignments Lecture Notes Readings Lecture Videos
    • This is an introductory-level course in supervised learning, with a focus on regression and classification methods. The syllabus includes: linear and polynomial regression, logistic regression and linear discriminant analysis; cross-validation and the bootstrap, model selection and regularization methods (ridge and lasso); nonlinear models, splines and generalized additive models; tree-based methods, random forests and boosting; support-vector machines.
    • The lectures cover all the material in An Introduction to Statistical Learning, with Applications in R which is a more approachable version of the Elements of Statistical Learning (or ESL) book.
  • 10-601 Machine Learning Carnegie Mellon University Assignments Lecture Notes Readings Lecture Videos
    • This course covers the theory and practical algorithms for machine learning from a variety of perspectives. It covers topics such as Bayesian networks, decision tree learning, Support Vector Machines, statistical learning methods, unsupervised learning and reinforcement learning. The course covers theoretical concepts such as inductive bias, the PAC learning framework, Bayesian learning methods, margin-based learning, and Occam's Razor. Short programming assignments include hands-on experiments with various learning algorithms. This course is designed to give a graduate-level student a thorough grounding in the methodologies, technologies, mathematics and algorithms currently needed by people who do research in machine learning.
    • Taught by one of the leading experts on Machine Learning - Tom Mitchell
    • Lectures
    • Project Ideas and Datasets
  • 10-708 Probabilistic Graphical Models Carnegie Mellon University Lecture Videos Lecture Notes Assignments Readings
    • Many of the problems in artificial intelligence, statistics, computer systems, computer vision, natural language processing, and computational biology, among many other fields, can be viewed as the search for a coherent global conclusion from local information. The probabilistic graphical models framework provides a unified view for this wide range of problems, enabling efficient inference, decision-making and learning in problems with a very large number of attributes and huge datasets. This graduate-level course will provide you with a strong foundation for both applying graphical models to complex problems and for addressing core research topics in graphical models.
    • Lecture Videos
    • Assignments
    • Lecture notes
    • Readings
  • 11-785 Deep Learning Carnegie Mellon University Assignments Readings
    • The course presents the subject through a series of seminars and labs, which will explore it from its early beginnings, and work themselves to some of the state of the art. The seminars will cover the basics of deep learning and the underlying theory, as well as the breadth of application areas to which it has been applied, as well as the latest issues on learning from very large amounts of data. We will concentrate largely, although not entirely, on the connectionist architectures that are most commonly associated with it. Lectures and Reading Notes are available on the page.
  • CS246 Mining Massive Data Sets Stanford University Lecture Videos Lecture Notes Assignments Readings
    • The course will discuss data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis will be on Map Reduce as a tool for creating parallel algorithms that can process very large amounts of data.
    • Lecture Videos
    • Assignments
    • Lecture notes
    • Readings
  • CS276 Information Retrieval and Web Search Stanford University Lecture Notes Readings
    • Basic and advanced techniques for text-based information systems: efficient text indexing; Boolean and vector space retrieval models; evaluation and interface issues; Web search including crawling, link-based algorithms, and Web metadata; text/Web clustering, classification; text mining.
    • Lecture notes
    • Readings
  • Practical_RL Reinforcement Learning in the Wild Yandex SDA Lecture Videos Lecture Notes Assignments Readings
    • A course on reinforcement learning in the wild. Taught on-campus in HSE and Yandex SDA (russian) and maintained to be friendly to online students (both english and russian).
    • Syllabus
  • UvA DEEP LEARNING UvA Deep Learning Course University of Amsterdam Lecture Videos Lecture Notes Assignments Readings
    • This course is taught in the MSc program in Artificial Intelligence of the University of Amsterdam. In this course we study the theory of deep learning, namely of modern, multi-layered neural networks trained on big data. The course focuses particularly on computer vision and language modelling, which are perhaps two of the most recognizable and impressive applications of the deep learning theory.
    • Lecture Videos & Notes
    • Practicals
    • Readings

Security

  • CIS 4930 / CIS 5930 Offensive Computer Security Florida State University Lecture Videos Assignments Lecture Notes
    • Course taught by W. Owen Redwood and Xiuwen Liu. It covers a wide range of computer security topics, starting from Secure C Coding and Reverse Engineering to Penetration Testing, Exploitation and Web Application Hacking, both from the defensive and the offensive point of view.
    • Lectures and Videos
    • Assignments
  • CS 155 Computer and Network Security Stanford Lecture Notes Readings
    • Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system holes, application security (web, email, databases), viruses, social engineering attacks, privacy, and digital rights management. Course projects focus on building reliable code. Recommended: Basic Unix. Primarily intended for seniors and first-year graduate students.
  • CS 161 Computer Security UC Berkeley Lecture Notes
    • Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems.
  • CS 259 Security Modeling and Analysis Stanford Lecture Notes Assignments Readings
    • The course will cover a variety of contemporary network protocols and other systems with security properties. The course goal is to give students hands-on experience in using automated tools and related techniques to analyze and evaluate security mechanisms. To understand security properties and requirements, we will look at several network protocols and their properties, including secrecy, authentication, key establishment, and fairness. In parallel, the course will look at several models and tools used in security analysis and examine their advantages and limitations. In addition to fully automated finite-state model checking techniques, we will also study other approaches, such as constraint solving, process algebras, protocol logics, probabilistic model checking, game theory, and executable models based on logic programming.
  • CS 261 Internet/Network Security UC Berkeley Lecture Notes Readings
    • This class aims to provide a thorough grounding in network security suitable for those interested in conducting research in the area, as well as students more generally interested in either security or networking. We will also look at broader issues relating to Internet security for which networking plays a role. Topics include: denial-of-service; capabilities; network intrusion detection; worms; forensics; scanning; traffic analysis / inferring activity; architecture; protocol issues; legality and ethics; web attacks; anonymity; honeypots; botnets; spam; the underground economy; research pitfalls. The course is taught with an emphasis on seminal papers rather than bleeding-edge for a given topic.
  • CS 5430 System Security Cornell University Assignments Lecture Notes Readings
    • This course discusses security for computers and networked information systems. We focus on abstractions, principles, and defenses for implementing military as well as commercial-grade secure systems.
    • Syllabus
    • Lectures
    • Assignments
  • CSCI 4968 Modern Binary Exploitation Rensselaer Polytechnic Institute Lecture NotesAssignments
    • This repository contains the materials as developed and used by RPISEC to teach Modern Binary Exploitation at Rensselaer Polytechnic Institute in Spring 2015. This was a university course developed and run solely by students to teach skills in vulnerability research, reverse engineering, and binary exploitation.
    • Lectures Notes
    • Labs
    • Projects
  • CSCI 4976 Malware Analysis Rensselaer Polytechnic Institute Lecture NotesAssignments
    • This repository contains the materials as developed and used by RPISEC to teach Malware Analysis at Rensselaer Polytechnic Institute in Fall 2015. This was a university course developed and run solely by students, primarily using the
  • EECS 588 Computer & Network Security University of Michigan Lecture Notes Readings
  • 6.857 Computer and Network Security MIT Lecture Notes
    • Emphasis on applied cryptography and may include: basic notion of systems security, cryptographic hash functions, symmetric cryptography (one-time pad, stream ciphers, block ciphers), cryptanalysis, secret-sharing, authentication codes, public-key cryptography (encryption, digital signatures), public-key attacks, web browser security, biometrics, electronic cash, viruses, electronic voting, Assignments include a group final project. Topics may vary year to year. Lecture Notes References
  • 6.858 Computer Systems Security MIT Lecture Videos Lecture Notes Assignments Readings
    • Design and implementation of secure computer systems. Lectures cover threat models, attacks that compromise security, and techniques for achieving security, based on recent research papers. Topics include operating system (OS) security, capabilities, information flow control, language security, network protocols, hardware security, and security in web applications.
    • Taught by James Mickens and Nickolai Zeldovich
    • Video Lectures and Labs
    • Quizzes
    • Readings
    • Final Projects
  • 18-636 Browser Security Stanford Lecture Videos Lecture Notes
    • The Web continues to grow in popularity as platform for retail transactions, financial services, and rapidly evolving forms of communication. It is becoming an increasingly attractive target for attackers who wish to compromise users' systems or steal data from other sites. Browser vendors must stay ahead of these attacks by providing features that support secure web applications. This course will study vulnerabilities in existing web browsers and the applications they render, as well as new technologies that enable web applications that were never before possible. The material will be largely based on current research problems, and students will be expected to criticize and improve existing defenses. Topics of study include (but are not limited to) browser encryption, JavaScript security, plug-in security, sandboxing, web mashups, and authentication.

Artificial Intelligence

  • CS 188 Introduction to Artificial Intelligence UC Berkeley Lecture Videos Assignments Lecture Notes
    • This course will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision-theoretic modeling paradigm. By the end of this course, you will have built autonomous agents that efficiently make decisions in fully informed, partially observable and adversarial settings. Your agents will draw inferences in uncertain environments and optimize actions for arbitrary reward structures. Your machine learning algorithms will classify handwritten digits and photographs. The techniques you learn in this course apply to a wide variety of artificial intelligence problems and will serve as the foundation for further study in any application area you choose to pursue.
    • Lectures
    • Projects
    • Exams
  • CS 4700 Foundations of Artificial Intelligence Cornell University Assignments Lecture Notes
    • This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
    • Assignments
    • Lectures
  • CS 6700 Advanced Artificial Intelligence Cornell University Lecture Notes Readings
    • The design of systems that are among top 10 performers in the world (human, computer, or hybrid human-computer).
    • Syllabus
    • Lectures
    • Readings
  • 6.868J The Society of Mind MIT Lecture Notes Assignments Readings
  • This course is an introduction, by Prof. Marvin Minsky, to the theory that tries to explain how minds are made from collections of simpler processes. It treats such aspects of thinking as vision, language, learning, reasoning, memory, consciousness, ideals, emotions, and personality. It incorporates ideas from psychology, artificial intelligence, and computer science to resolve theoretical issues such as wholes vs. parts, structural vs. functional descriptions, declarative vs. procedural representations, symbolic vs. connectionist models, and logical vs. common-sense theories of learning.
  • Lectures
  • Assignments
  • Readings

Computer Graphics

  • CAP 5415 Computer Vision University of Central Florida Lecture Videos Lecture Notes Assignments
    • An introductory level course covering the basic topics of computer vision, and introducing some fundamental approaches for computer vision research.
    • Lectures and Videos
    • Assignments
  • CIS 581 Computer Vision and Computational Photography University of Pennsylvania Assignments Lecture Notes
    • An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search.
    • Lectures
    • Assignments
  • CMU 462 Computer Graphics Carnegie Mellon University Lecture Notes Assignments Readings
    • This course provides a comprehensive introduction to computer graphics. Focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging). Topics include: sampling, aliasing, interpolation, rasterization, geometric transformations, parameterization, visibility, compositing, filtering, convolution, curves & surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, ray tracing, radiometry, reflectance, light fields, geometric optics, Monte Carlo rendering, importance sampling, camera models, high-performance ray tracing, differential equations, time integration, numerical differentiation, physically-based animation, optimization, numerical linear algebra, inverse kinematics, Fourier methods, data fitting, example-based synthesis.
    • Lectures and Readings
    • Assignments and Quizes
  • CS 378 3D Reconstruction with Computer Vision UTexas Assignments Lecture Notes
    • In this lab-based class, we'll dive into practical applications of 3D reconstruction, combining hardware and software to build our own 3D environments from scratch. We'll use open-source frameworks like OpenCV to do the heavy lifting, with the focus on understanding and applying state-of-the art approaches to geometric computer vision
    • Lectures
  • CS 4620 Introduction to Computer Graphics Cornell University Assignments Lecture Notes Readings
    • The study of creating, manipulating, and using visual images in the computer.
    • Assignments
    • Exams
  • CS 4670 Introduction to Computer Vision Cornell University Assignments Lecture Notes Readings
    • This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
    • Assignments
    • Lectures
  • CS 6670 Computer Vision Cornell University Assignments Lecture Notes
    • Introduction to computer vision. Topics include edge detection, image segmentation, stereopsis, motion and optical flow, image mosaics, 3D shape reconstruction, and object recognition. Students are required to implement several of the algorithms covered in the course and complete a final project.
    • Syllabus
    • Lectures
    • Assignments
  • CSCI 1230 Introduction to Computer Graphics Brown University Assignments Lecture Notes
    • This course offers an in-depth exploration of fundamental concepts in 2D and 3D computer graphics. It introduces 2D raster graphics techniques, including scan conversion, simple image processing, interaction techniques and user interface design. The bulk of the course is devoted to 3D modeling, geometric transformations, and 3D viewing and rendering.
    • Lectures
    • Labs
    • Demos
  • CSCI-GA.2270-001 Graduate Computer Graphics New York University Assignments Lecture Notes Readings
    • Step-by-step study computer graphics, with reading and homework at each lecture (Fall2015)
    • Lectures

Misc

  • AM 207 Monte Carlo Methods and Stochastic Optimization Harvard University Lecture Videos Lecture Notes Assignments
  • This course introduces important principles of Monte Carlo techniques and demonstrates the power of these techniques with simple (but very useful) applications. All of this in Python!
  • Lecture Videos
  • Assignments
  • Lecture Notes
  • CS 75 Introduction to Game Development Tufts University Assignments Lecture Notes
    • The course taught by Ming Y. Chow teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game physics, sprites, animation, game development methodology, sound, testing, MMORPGs and online games, and addressing mobile development in Android, HTML5, and iOS. Most to all of the development is focused on PyGame for learning principles
    • Text Lectures
    • Assignments
    • Labs
  • CS 50 Intro to Game Developement Harvard University Lecture VideosAssignments Lecture Notes
    • This course picks up where Harvard College’s CS50 leaves off, focusing on the development of 2D and 3D interactive games. Students explore the design of such childhood games as Super Mario Bros., Legend of Zelda, and Portal in a quest to understand how video games themselves are implemented. Via lectures and hands-on projects, the course explores principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks like Unity and LÖVE 2D, as well as languages like Lua and C#. By class’s end, students will have programmed several of their own games and gained a thorough understanding of the basics of game design and development.
    • Assignments
    • Lecture Videos
  • CS 100 Open Source Software Construction UC Riverside Assignments Lecture Notes
    • This is a course on how to be a hacker. Your first four homework assignments walk you through the process of building your own unix shell. You'll be developing it as an open source project, and you will collaborate with each other at various points.
    • Github Page
    • Assignments
  • CS 108 Object Oriented System Design Stanford Assignments Lecture Notes
    • Software design and construction in the context of large OOP libraries. Taught in Java. Topics: OOP design, design patterns, testing, graphical user interface (GUI) OOP libraries, software engineering strategies, approaches to programming in teams.
  • CS 168 Computer Networks UC BerkeleyAssignments Readings Lecture Notes
    • This is an undergraduate level course covering the fundamental concepts of networking as embodied in the Internet. The course will cover a wide range of topics; see the lecture schedule for more details. While the class has a textbook, we will not follow its order of presentation but will instead use the text as a reference when covering each individual topic. The course will also have several projects that involve programming (in Python).
    • You should know programming, data structures, and software engineering. In terms of mathematics, your algebra should be very solid, you need to know basic probability, and you should be comfortable with thinking abstractly. The TAs will spend very little time reviewing material that is not specific to networking. We assume that you either know the material covered in those courses, or are willing to learn the material as necessary. We won't cover any of this material in lecture.
  • CS 193a Android App Development, Spring 2016 Stanford University Lecture VideosAssignments Lecture Notes
    • Course Description: This course provides an introduction to developing applications for the Android mobile platform.
    • Prerequisite: CS 106B or equivalent. Java experience highly recommended. OOP highly recommmended.
    • Devices: Access to an Android phone and/or tablet recommended but not required.
    • Videos: Videos list can be found here
    • Other materials: Some codes, handsout, homework ..... and lecture notes are not downloadable on the site due to login requirement. Please head to my Github repo here to download them.
  • CS 193p Developing Applications for iOS Stanford University Lecture VideosAssignments Lecture Notes
    • Updated for iOS 7. Tools and APIs required to build applications for the iPhone and iPad platform using the iOS SDK. User interface designs for mobile devices and unique user interactions using multi-touch technologies. Object-oriented design using model-view-controller paradigm, memory management, Objective-C programming language. Other topics include: object-oriented database API, animation, multi-threading and performance considerations.
    • Prerequisites: C language and object-oriented programming experience
    • Recommended: Programming Abstractions
    • Updated courses for iOS8 - Swift
    • Updated courses for iOS9 - Swift
  • CS 223A Introduction to Robotics Stanford University Lecture Videos Assignments Lecture Notes
    • The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems. In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control.
  • CS 262a Advanced Topics in Computer Systems UC Berkeley Readings Lecture Notes
    • CS262a is the first semester of a year-long sequence on computer systems research, including operating systems, database systems, and Internet infrastructure systems. The goal of the course is to cover a broad array of research topics in computer systems, and to engage you in top-flight systems research. The first semester is devoted to basic thematic issues and underlying techniques in computer systems, while the second semester goes deeper into topics related to scalable, parallel and distributed systems. The class is based on a discussion of important research papers and a research project.
    • Parts: Some Classics, Persistent Storage, Concurrency, Higher-Level Models, Virtual Machines, Cloud Computing, Parallel and Distributed Computing, Potpourri.
    • Prerequisites: The historical prerequisite was to pass an entrance exam in class, which covered undergraduate operating systems material (similar to UCB's CS162). There is no longer an exam. However, if you have not already taken a decent undergrad OS class, you should talk with me before taking this class. The exam had the benefit of "paging in" the undergrad material, which may have been its primary value (since the pass rate was high).
    • Readings & Lectures
  • CS 294 Cutting-edge Web Technologies Berkeley Assignments Readings Lecture Notes
    • Want to learn what makes future web technologies tick? Join us for the class where we will dive into the internals of many of the newest web technologies, analyze and dissect them. We will conduct survey lectures to provide the background and overview of the area as well as invite guest lecturers from various leading projects to present their technologies.
  • CS 411 Software Architecture Design Bilkent University Lecture Videos
    • This course teaches the basic concepts, methods and techniques for designing software architectures. The topics include: rationale for software architecture design, modeling software architecture design, architectural styles/patterns, architectural requirements analysis, comparison and evaluation of architecture design methods, synthesis-based software architecture design, software product-line architectures, domain modeling, domain engineering and application engineering, software architecture implementation, evaluating software architecture designs.
  • CS 3152 Introduction to Computer Game Development Cornell University Assignments Lecture NotesReadings
    • A project-based course in which programmers and designers collaborate to make a computer game. This course investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives. Technical aspects of game architecture include software engineering, artificial intelligence, game physics, computer graphics, and networking. Aesthetic and cultural include art and modeling, sound and music, game balance, and player experience.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4152 Advanced Topics in Computer Game Development Cornell University Assignments Lecture NotesReadings
    • Project-based follow-up course to CS/INFO 3152. Students work in a multidisciplinary team to develop a game that incorporates innovative game technology. Advanced topics include 3D game development, mobile platforms, multiplayer gaming, and nontraditional input devices. There is a special emphasis on developing games that can be submitted to festivals and competitions, or that can be commercialized.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4154 Analytics-driven Game Design Cornell University Assignments Lecture NotesReadings
    • A project-based course in which programmers and designers collaborate to design, implement, and release a video game online through popular game portals. In this course, students will use the internet to gather data anonymously from players. Students will analyze this data in order to improve their game over multiple iterations. Technical aspects of this course include programming, database architecture, and statistical analysis.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4812 Quantum Information Processing Cornell University Lecture Notes Readings
    • Hardware that exploits quantum phenomena can dramatically alter the nature of computation. Though constructing a working quantum computer is a formidable technological challenge, there has been much recent experimental progress. In addition, the theory of quantum computation is of interest in itself, offering strikingly different perspectives on the nature of computation and information, as well as providing novel insights into the conceptual puzzles posed by the quantum theory. The course is intended both for physicists, unfamiliar with computational complexity theory or cryptography, and also for computer scientists and mathematicians, unfamiliar with quantum mechanics. The prerequisites are familiarity (and comfort) with finite dimensional vector spaces over the complex numbers, some standard group theory, and ability to count in binary.
    • Syllabus
    • Lectures
  • CS 4860 Applied Logic Cornell University Assignments Lecture Notes
    • In addition to basic first-order logic, when taught by Computer Science this course involves elements of Formal Methods and Automated Reasoning. Formal Methods is concerned with proving properties of algorithms, specifying programming tasks and synthesizing programs from proofs. We will use formal methods tools such as interactive proof assistants (see www.nuprl.org). We will also spend two weeks on constructive type theory, the language used by the Coq and Nuprl proof assistants.
    • Syllabus
    • Lectures
    • Assignments
  • CS 5150 Software Engineering Cornell University Assignments Lecture Notes Readings
    • Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems
    • Lectures
    • Assignments
  • CS 5220 Applications of Parallel Computers Cornell University Assignments Lecture Notes Readings
    • How do we solve the large-scale problems of science quickly on modern computers? How do we measure the performance of new or existing simulation codes, and what things can we do to make them run faster? How can we best take advantage of features like multicore processors, vector units, and graphics co-processors? These are the types of questions we will address in CS 5220, Applications of Parallel Computers. Topics include:
      • Single-processor architecture, caches, and serial performance tuning
      • Basics of parallel machine organization
      • Distributed memory programming with MPI
      • Shared memory programming with OpenMP
      • Parallel patterns: data partitioning, synchronization, and load balancing
      • Examples of parallel numerical algorithms
      • Applications from science and engineering
    • Lectures
    • Assignments
  • CS 5540 Computational Techniques for Analyzing Clinical Data Cornell University Assignments Lecture NotesReadings
    • CS5540 is a masters-level course that covers a wide range of clinical problems and their associated computational challenges. The practice of medicine is filled with digitally accessible information about patients, ranging from EKG readings to MRI images to electronic health records. This poses a huge opportunity for computer tools that make sense out of this data. Computation tools can be used to answer seemingly straightforward questions about a single patient's test results (“Does this patient have a normal heart rhythm?”), or to address vital questions about large populations (“Is there any clinical condition that affects the risks of Alzheimer”). In CS5540 we will look at many of the most important sources of clinical data and discuss the basic computational techniques used for their analysis, ranging in sophistication from current clinical practice to state-of-the-art research projects.
    • Syllabus
    • Lectures
    • Assignments
  • CS 5724 Evolutionary Computation Cornell University Assignments Lecture Notes
    • This course will cover advanced topics in evolutionary algorithms and their application to open-ended computational design. The field of evolutionary computation tries to address large-scale optimization and planning problems through stochastic population-based methods. It draws inspiration from evolutionary processes in nature and in engineering, and also serves as abstract models for these phenomena. Evolutionary processes are generally weak methods that require little information about the problem domain and hence can be applied across a wide variety of applications. They are especially useful for open-ended problem domains for which little formal knowledge exists and the number of parameters is undefined, such as for the general engineering design process. This course will provide insight to a variety of evolutionary computation paradigms, such as genetic algorithms, genetic programming, and evolutionary strategies, as well as governing dynamics of co-evolution, arms races and mediocre stable states. New methods involving symbiosis models and pattern recognition will also be presented. The material will be intertwined with discussions of representations and results for design problems in a variety of problem domains including software, electronics, and mechanics.
    • Syllabus
    • Lectures
    • Assignments
  • CS 6452 Datacenter Networks and Services Cornell University Lecture Notes
    • CS6452 focuses on datacenter networks and services. The emerging demand for web services and cloud computing have created need for large scale data centers. The hardware and software infrastructure for datacenters critically determines the functionality, performance, cost and failure tolerance of applications running on that datacenter. This course will examine design alternatives for both the hardware (networking) infrastructure, and the software infrastructure for datacenters.
    • Syllabus
    • Lectures
  • CS 6630 Realistic Image Synthesis Cornell University Assignments Lecture Notes Readings
    • CS6630 is an introduction to physics-based rendering at the graduate level. Starting from the fundamentals of light transport we will look at formulations of the Rendering Equation, and a series of Monte Carlo methods, from sequential sampling to multiple importance sampling to Markov Chains, for solving the equation to make pictures. We'll look at light reflection from surfaces and scattering in volumes, illumination from luminaries and environments, and diffusion models for translucent materials. We will build working implementations of many of the algorithms we study, and learn how to make sure they are actually working correctly. It's fun to watch integrals and probability distributions transform into photographs of a slightly too perfect synthetic world.
    • Syllabus
    • Lectures
    • Assignments
    • Readings
  • CS 6640 Computational Photography Cornell University Assignments Lecture Notes
    • A course on the emerging applications of computation in photography. Likely topics include digital photography, unconventional cameras and optics, light field cameras, image processing for photography, techniques for combining multiple images, advanced image editing algorithms, and projector-camera systems.cornell.edu/courses/CS6630/2012sp/about.stm)
    • Lectures
    • Assignments
  • CS 6650 Computational Motion Cornell University Readings
    • Covers computational aspects of motion, broadly construed. Topics include the computer representation, modeling, analysis, and simulation of motion, and its relationship to various areas, including computational geometry, mesh generation, physical simulation, computer animation, robotics, biology, computer vision, acoustics, and spatio-temporal databases. Students implement several of the algorithms covered in the course and complete a final project. This offering will also explore the special role of motion processing in physically based sound rendering.
  • CS 6840 Algorithmic Game Theory Cornell University Assignments Lecture Notes Readings
    • Algorithmic Game Theory combines algorithmic thinking with game-theoretic, or, more generally, economic concepts. The course will study a range of topics at this interface
    • Syllabus
    • Lectures
    • Assignments
    • Readings
  • CSE 154 Web Programming University of Washington Assignments Lecture Notes
    • This course is an introduction to programming for the World Wide Web. Covers use of HTML, CSS, PHP, JavaScript, AJAX, and SQL.
    • Lectures
    • Assignments
  • ESM 296-4F GIS & Spatial Analysis UC Santa Barbara Assignments Lecture Notes
    • Taught by James Frew, Ben Best, and Lisa Wedding
    • Focuses on specific computational languages (e.g., Python, R, shell) and tools (e.g., GDAL/OGR, InVEST, MGET, ModelBuilder) applied to the spatial analysis of environmental problems
    • GitHub (includes lecture materials and labs)
  • ICS 314 Software Engineering University of Hawaii Assignments Lecture Notes Readings
  • IGME 582 Humanitarian Free & Open Source Software Development Rochester Institute of Technology Assignments Lecture Notes
    • This course provides students with exposure to the design, creation and production of Open Source Software projects. Students will be introduced to the historic intersections of technology and intellectual property rights and will become familiar with Open Source development processes, tools and practices.
  • I485 / H400 Biologically Inspired Computation Indiana University Assignments Lecture Notes
    • Course taught by Luis Rocha about the multi-disciplinary field algorithms inspired by naturally occurring phenomenon. This course provides introduces the following areas: L-systems, Cellular Automata, Emergence, Genetic Algorithms, Swarm Intelligence and Artificial Immune Systems. It's aim is to cover the fundamentals and enable readers to build up a proficiency in applying various algorithms to real-world problems.
    • Lectures
    • Assignments
  • Open Sourced Elective: Database and Rails Intro to Ruby on Rails University of Texas Lecture VideosAssignments Lecture Notes
    • An introductory course in Ruby on Rails open sourced by University of Texas' CS Adjunct Professor, Richard Schneeman.
    • Lectures
    • Assignments
    • Videos
  • SCICOMP An Introduction to Efficient Scientific Computation Universität Bremen Lecture Videos
    • This is a graduate course in scientific computing created and taught by Oliver Serang in 2014, which covers topics in computer science and statistics with applications from biology. The course is designed top-down, starting with a problem and then deriving a variety of solutions from scratch.
    • Topics include memoization, recurrence closed forms, string matching (sorting, hash tables, radix tries, and suffix tries), dynamic programming (e.g. Smith-Waterman and Needleman-Wunsch), Bayesian statistics (e.g. the envelope paradox), graphical models (HMMs, Viterbi, junction tree, belief propagation), FFT, and the probabilistic convolution tree.
    • Lecture videos on Youtube and for direct download
  • 14-740 Fundamentals of Computer Networks CMU Lecture Videos Assignments Readings Lecture Notes
    • This is an introductory course on Networking for graduate students. It follows a top-down approach to teaching Computer Networks, so it starts with the Application layer which most of the students are familiar with and as the course unravels we learn more about transport, network and link layers of the protocol stack.
    • As far as prerequisites are concerned - basic computer, programming and probability theory background is required.
    • The course site contains links to the lecture videos, reading material and assignments.

AWESOME DATA SCIENCE

An open source Data Science repository to learn and apply towards solving real world problems.

This is a shortcut path to start studying Data Science. Just follow the steps to answer the questions, "What is Data Science and what should I study to learn Data Science?"


What is Data Science?

Data Science is one of the hottest topics on the Computer and Internet farmland nowadays. People have gathered data from applications and systems until today and now is the time to analyze them. The next steps are producing suggestions from the data and creating predictions about the future. Here you can find the biggest question for Data Science and hundreds of answers from experts.

| Link | Preview | | --- | --- | | What is Data Science @ O'reilly | Data scientists combine entrepreneurship with patience, the willingness to build data products incrementally, the ability to explore, and the ability to iterate over a solution. They are inherently interdisciplinary. They can tackle all aspects of a problem, from initial data collection and data conditioning to drawing conclusions. They can think outside the box to come up with new ways to view the problem, or to work with very broadly defined problems: “here’s a lot of data, what can you make from it?” | | What is Data Science @ Quora | Data Science is a combination of a number of aspects of Data such as Technology, Algorithm development, and data interference to study the data, analyse it, and find innovative solutions to difficult problems. Basically Data Science is all about Analysing data and driving for business growth by finding creative ways. | | The sexiest job of 21st century | Data scientists today are akin to Wall Street “quants” of the 1980s and 1990s. In those days people with backgrounds in physics and math streamed to investment banks and hedge funds, where they could devise entirely new algorithms and data strategies. Then a variety of universities developed master’s programs in financial engineering, which churned out a second generation of talent that was more accessible to mainstream firms. The pattern was repeated later in the 1990s with search engineers, whose rarefied skills soon came to be taught in computer science programs. | | Wikipedia | Data science is an inter-disciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from many structural and unstructured data. Data science is related to data mining, machine learning and big data. | | How to Become a Data Scientist | Data scientists are big data wranglers, gathering and analyzing large sets of structured and unstructured data. A data scientist’s role combines computer science, statistics, and mathematics. They analyze, process, and model data then interpret the results to create actionable plans for companies and other organizations. | | a very short history of #datascience | The story of how data scientists became sexy is mostly the story of the coupling of the mature discipline of statistics with a very young one--computer science. The term “Data Science” has emerged only recently to specifically designate a new profession that is expected to make sense of the vast stores of big data. But making sense of data has a long history and has been discussed by scientists, statisticians, librarians, computer scientists and others for years. The following timeline traces the evolution of the term “Data Science” and its use, attempts to define it, and related terms. |

Learn Data Science

Our favorite programming language is Python nowadays for #DataScience. Python's - Pandas library has full functionalities for collecting and analyzing data. We use Anaconda to play with data and to create applications.

Algorithms

top

These are some Machine Learning and Data Mining algorithms and models help you to understand your data and derive meaning from it.

Supervised Learning

  • Regression
  • Linear Regression
  • Ordinary Least Squares
  • Logistic Regression
  • Stepwise Regression
  • Multivariate Adaptive Regression Splines
  • Locally Estimated Scatterplot Smoothing
  • Classification
  • k-nearest neighbor
  • Support Vector Machines
  • Decision Trees
  • ID3 algorithm
  • C4.5 algorithm
  • Ensemble Learning
  • Boosting
  • Bagging
  • Random Forest
  • AdaBoost

Unsupervised Learning

  • Clustering
  • Hierchical clustering
  • k-means
  • Fuzzy clustering
  • Mixture models
  • Dimension Reduction
  • Principal Component Analysis (PCA)
  • t-SNE
  • Neural Networks
  • Self-organizing map
  • Adaptive resonance theory
  • Hidden Markov Models (HMM)

Semi-Supervised Learning

  • S3VM
  • Clustering
  • Generative models
  • Low-density separation
  • Laplacian regularization
  • Heuristic approaches

Reinforcement Learning

  • Q Learning
  • SARSA (State-Action-Reward-State-Action) algorithm
  • Temporal difference learning

Data Mining Algorithms

  • C4.5
  • k-Means
  • SVM
  • Apriori
  • EM
  • PageRank
  • AdaBoost
  • kNN
  • Naive Bayes
  • CART

Deep Learning architectures

  • Multilayer Perceptron
  • Convolutional Neural Network (CNN)
  • Recurrent Neural Network (RNN)
  • Boltzmann Machines
  • Autoencoder
  • Generative Adversarial Network (GAN)
  • Self-Organized Maps

COLLEGES

top

Intensive Programs

MOOC's

top

Tutorials

top

Free Courses

Toolboxes - Environment

top

| Link | Description | | --- | --- | | The Data Science Lifecycle Process | The Data Science Lifecycle Process is a process for taking data science teams from Idea to Value repeatedly and sustainably. The process is documented in this repo | | Data Science Lifecycle Template Repo | Template repository for data science lifecycle project | | RexMex | A general purpose recommender metrics library for fair evaluation. | | ChemicalX | A PyTorch based deep learning library for drug pair scoring. | | PyTorch Geometric Temporal | Representation learning on dynamic graphs. | | Little Ball of Fur | A graph sampling library for NetworkX with a Scikit-Learn like API. | | Karate Club | An unsupervised machine learning extension library for NetworkX with a Scikit-Learn like API. | | ML Workspace | All-in-one web-based IDE for machine learning and data science. The workspace is deployed as a Docker container and is preloaded with a variety of popular data science libraries (e.g., Tensorflow, PyTorch) and dev tools (e.g., Jupyter, VS Code) | | Neptune.ai | Community-friendly platform supporting data scientists in creating and sharing machine learning models. Neptune facilitates teamwork, infrastructure management, models comparison and reproducibility. | | steppy | Lightweight, Python library for fast and reproducible machine learning experimentation. Introduces very simple interface that enables clean machine learning pipeline design. | | steppy-toolkit | Curated collection of the neural networks, transformers and models that make your machine learning work faster and more effective. | | Datalab from Google | easily explore, visualize, analyze, and transform data using familiar languages, such as Python and SQL, interactively. | | Hortonworks Sandbox | is a personal, portable Hadoop environment that comes with a dozen interactive Hadoop tutorials. | | R | is a free software environment for statistical computing and graphics. | | RStudio | IDE – powerful user interface for R. It’s free and open source, works on Windows, Mac, and Linux. | | Python - Pandas - Anaconda | Completely free enterprise-ready Python distribution for large-scale data processing, predictive analytics, and scientific computing | | Pandas GUI | Pandas GUI | | Scikit-Learn | Machine Learning in Python | | NumPy | NumPy is fundamental for scientific computing with Python. It supports large, multi-dimensional arrays and matrices and includes an assortment of high-level mathematical functions to operate on these arrays. | | Vaex | Vaex is a Python library that allows you to visualize large datasets and calculate statistics at high speeds. | | SciPy | SciPy works with NumPy arrays and provides efficient routines for numerical integration and optimization. | Data Science Toolbox | Coursera Course | | Data Science Toolbox | Blog | | Wolfram Data Science Platform | Take numerical, textual, image, GIS or other data and give it the Wolfram treatment, carrying out a full spectrum of data science analysis and visualization and automatically generating rich interactive reports—all powered by the revolutionary knowledge-based Wolfram Language. | | Datadog | Solutions, code, and devops for high-scale data science. | | Variance | Build powerful data visualizations for the web without writing JavaScript | | Kite Development Kit | The Kite Software Development Kit (Apache License, Version 2.0) , or Kite for short, is a set of libraries, tools, examples, and documentation focused on making it easier to build systems on top of the Hadoop ecosystem. | | Domino Data Labs | Run, scale, share, and deploy your models — without any infrastructure or setup. | | Apache Flink | A platform for efficient, distributed, general-purpose data processing. | | Apache Hama | Apache Hama is an Apache Top-Level open source project, allowing you to do advanced analytics beyond MapReduce. | | Weka | Weka is a collection of machine learning algorithms for data mining tasks. | | Octave | GNU Octave is a high-level interpreted language, primarily intended for numerical computations.(Free Matlab) | | Apache Spark | Lightning-fast cluster computing | | Hydrosphere Mist | a service for exposing Apache Spark analytics jobs and machine learning models as realtime, batch or reactive web services. | | Data Mechanics | A data science and engineering platform making Apache Spark more developer-friendly and cost-effective. | | Caffe | Deep Learning Framework | | Torch | A SCIENTIFIC COMPUTING FRAMEWORK FOR LUAJIT | | Nervana's python based Deep Learning Framework | . | | Skale | High performance distributed data processing in NodeJS | | Aerosolve | A machine learning package built for humans. | | Intel framework | Intel® Deep Learning Framework | | Datawrapper | An open source data visualization platform helping everyone to create simple, correct and embeddable charts. Also at github.com | | Tensor Flow | TensorFlow is an Open Source Software Library for Machine Intelligence | | Natural Language Toolkit | An introductory yet powerful toolkit for natural language processing and classification | | nlp-toolkit for node.js | . | | Julia | high-level, high-performance dynamic programming language for technical computing | | IJulia | a Julia-language backend combined with the Jupyter interactive environment | | Apache Zeppelin | Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala and more | | Featuretools | An open source framework for automated feature engineering written in python | | Optimus | Cleansing, pre-processing, feature engineering, exploratory data analysis and easy ML with PySpark backend. | | Albumentations | А fast and framework agnostic image augmentation library that implements a diverse set of augmentation techniques. Supports classification, segmentation, detection out of the box. Was used to win a number of Deep Learning competitions at Kaggle, Topcoder and those that were a part of the CVPR workshops. | | DVC | An open-source data science version control system. It helps track, organize and make data science projects reproducible. In its very basic scenario it helps version control and share large data and model files. | | Lambdo | is a workflow engine which significantly simplifies data analysis by combining in one analysis pipeline (i) feature engineering and machine learning (ii) model training and prediction (iii) table population and column evaluation. | | Feast | A feature store for the management, discovery, and access of machine learning features. Feast provides a consistent view of feature data for both model training and model serving. | | Polyaxon | A platform for reproducible and scalable machine learning and deep learning. | | LightTag | Text Annotation Tool for teams | | UBIAI | Easy-to-use text annotation tool for teams with most comprehensive auto-annotation features. Supports NER, relations and document classification as well as OCR annotation for invoice labeling | | Trains | Auto-Magical Experiment Manager, Version Control & DevOps for AI | | Hopsworks | Open-source data-intensive machine learning platform with a feature store. Ingest and manage features for both online (MySQL Cluster) and offline (Apache Hive) access, train and serve models at scale. | | MindsDB | MindsDB is an Explainable AutoML framework for developers. With MindsDB you can build, train and use state of the art ML models in as simple as one line of code. | | Lightwood | A Pytorch based framework that breaks down machine learning problems into smaller blocks that can be glued together seamlessly with an objective to build predictive models with one line of code. | | AWS Data Wrangler | An open-source Python package that extends the power of Pandas library to AWS connecting DataFrames and AWS data related services (Amazon Redshift, AWS Glue, Amazon Athena, Amazon EMR, etc). | | Amazon Rekognition | AWS Rekognition is a service that lets developers working with Amazon Web Services add image analysis to their applications. Catalog assets, automate workflows, and extract meaning from your media and applications.| | Amazon Textract | Automatically extract printed text, handwriting, and data from any document. | | Amazon Lookout for Vision | Spot product defects using computer vision to automate quality inspection.Identify missing product components, vehicle and structure damage, and irregularities for comprehensive quality control.| | Amazon CodeGuru | Automate code reviews and optimize application performance with ML-powered recommendations.| | CML | An open source toolkit for using continuous integration in data science projects. Automatically train and test models in production-like environments with GitHub Actions & GitLab CI, and autogenerate visual reports on pull/merge requests. | | Dask | An open source Python library to painlessly transition your analytics code to distributed computing systems (Big Data) | | Statsmodels | A Python-based inferential statistics, hypothesis testing and regression framework | | Gensim | An open-source library for topic modeling of natural language text | | spaCy | A performant natural language processing toolkit | | Grid Studio | Grid studio is a web-based spreadsheet application with full integration of the Python programming language. | |Python Data Science Handbook|Python Data Science Handbook: full text in Jupyter Notebooks| | Shapley | A data-driven framework to quantify the value of classifiers in a machine learning ensemble. | | DAGsHub | A platform built on open source tools for data, model and pipeline management. | | Deepnote | A new kind of data science notebook. Jupyter-compatible, with real-time collaboration and running in the cloud. | | Valohai | An MLOps platform that handles machine orchestration, automatic reproducibility and deployment. | | PyMC3 | A Python Library for Probabalistic Programming (Bayesian Inference and Machine Learning) | | PyStan | Python interface to Stan (Bayesian inference and modeling) | | hmmlearn | Unsupervised learning and inference of Hidden Markov Models | | Chaos Genius | ML powered analytics engine for outlier/anomaly detection and root cause analysis |

Machine Learning in General Purpose

Deep Learning

pytorch

tensorflow

keras

Visualization Tools - Environments

Journals, Publications and Magazines

top

Presentations

top

Podcasts

top

Books

top

Socialize

top

Bloggers

top

Facebook Accounts

top

Twitter Accounts

top

| Twitter | Description | | --- | --- | | Big Data Combine | Rapid-fire, live tryouts for data scientists seeking to monetize their models as trading strategies | | Big Data Mania | Data Viz Wiz , Data Journalist , Growth Hacker , Author of Data Science for Dummies (2015) | | Big Data Science | Big Data, Data Science, Predictive Modeling, Business Analytics, Hadoop, Decision and Operations Research. | | Charlie Greenbacker | Director of Data Science at @ExploreAltamira | | Chris Said | Data scientist at Twitter | | Clare Corthell | Dev, Design, Data Science @mattermark #hackerei | | DADI Charles-Abner | #datascientist @Ekimetrics. , #machinelearning #dataviz #DynamicCharts #Hadoop #R #Python #NLP #Bitcoin #dataenthousiast | | Data Science Central | Data Science Central is the industry's single resource for Big Data practitioners. | | Data Science London | Data Science. Big Data. Data Hacks. Data Junkies. Data Startups. Open Data | | Data Science Renee | Documenting my path from SQL Data Analyst pursuing an Engineering Master's Degree to Data Scientist | | Data Science Report | Mission is to help guide & advance careers in Data Science & Analytics | | Data Science Tips | Tips and Tricks for Data Scientists around the world! #datascience #bigdata | | Data Vizzard | DataViz, Security, Military | | DataScienceX | | | deeplearning4j | | | DJ Patil | White House Data Chief, VP @ RelateIQ. | | Domino Data Lab | | | Drew Conway | Data nerd, hacker, student of conflict. | | Emilio Ferrara | #Networks, #MachineLearning and #DataScience. I work on #Social Media. Postdoc at @IndianaUniv | | Erin Bartolo | Running with #BigData--enjoying a love/hate relationship with its hype. @iSchoolSU #DataScience Program Mgr. | | Greg Reda | Working @ GrubHub about data and pandas | | Gregory Piatetsky | KDnuggets President, Analytics/Big Data/Data Mining/Data Science expert, KDD & SIGKDD co-founder, was Chief Scientist at 2 startups, part-time philosopher. | | Hadley Wickham | Chief Scientist at RStudio, and an Adjunct Professor of Statistics at the University of Auckland, Stanford University, and Rice University. | | Hakan Kardas | Data Scientist | | Hilary Mason | Data Scientist in Residence at @accel. | | Jeff Hammerbacher | ReTweeting about data science | | John Myles White | Scientist at Facebook and Julia developer. Author of Machine Learning for Hackers and Bandit Algorithms for Website Optimization. Tweets reflect my views only. | | Juan Miguel Lavista | Principal Data Scientist @ Microsoft Data Science Team | | Julia Evans | Hacker - Pandas - Data Analyze | | Kenneth Cukier | The Economist's Data Editor and co-author of Big Data (http://www.big-data-book.com/). | | Kevin Davenport | Organizer of https://www.meetup.com/San-Diego-Data-Science-R-Users-Group/ | | Kevin Markham | Data science instructor, and founder of Data School | | Kim Rees | Interactive data visualization and tools. Data flaneur. | | Kirk Borne | DataScientist, PhD Astrophysicist, Top #BigData Influencer. | | Linda Regber | Data story teller, visualizations. | | Luis Rei | PhD Student. Programming, Mobile, Web. Artificial Intelligence, Intelligent Robotics Machine Learning, Data Mining, Natural Language Processing, Data Science. | | Mark Stevenson | Data Analytics Recruitment Specialist at Salt (@SaltJobs) Analytics - Insight - Big Data - Datascience | | Matt Harrison | Opinions of full-stack Python guy, author, instructor, currently playing Data Scientist. Occasional fathering, husbanding, organic gardening. | | Matthew Russell | Mining the Social Web. | | Mert Nuhoğlu | Data Scientist at BizQualify, Developer | | Monica Rogati | Data @ Jawbone. Turned data into stories & products at LinkedIn. Text mining, applied machine learning, recommender systems. Ex-gamer, ex-machine coder; namer. | | Noah Iliinsky | Visualization & interaction designer. Practical cyclist. Author of vis books: https://www.oreilly.com/pub/au/4419 | | Paul Miller | Cloud Computing/ Big Data/ Open Data Analyst & Consultant. Writer, Speaker & Moderator. Gigaom Research Analyst. | | Peter Skomoroch | Creating intelligent systems to automate tasks & improve decisions. Entrepreneur, ex Principal Data Scientist @LinkedIn. Machine Learning, ProductRei, Networks | | Prash Chan | Solution Architect @ IBM, Master Data Management, Data Quality & Data Governance Blogger. Data Science, Hadoop, Big Data & Cloud. | | Quora Data Science | Quora's data science topic | | R-Bloggers | Tweet blog posts from the R blogosphere, data science conferences and (!) open jobs for data scientists. | | Rand Hindi | | | Randy Olson | Computer scientist researching artificial intelligence. Data tinkerer. Community leader for @DataIsBeautiful. #OpenScience advocate. | | Recep Erol | Data Science geek @ UALR | | Ryan Orban | Data scientist, genetic origamist, hardware aficionado | | Sean J. Taylor | Social Scientist. Hacker. Facebook Data Science Team. Keywords: Experiments, Causal Inference, Statistics, Machine Learning, Economics. | | Silvia K. Spiva | #DataScience at Cisco | | Harsh B. Gupta | Data Scientist at BBVA Compass | | Spencer Nelson | Data nerd | | Talha Oz | Enjoys ABM, SNA, DM, ML, NLP, HI, Python, Java. Top percentile kaggler/data scientist | | Tasos Skarlatidis | Complex Event Processing, Big Data, Artificial Intelligence and Machine Learning. Passionate about programming and open-source. | | Terry Timko | InfoGov; Bigdata; Data as a Service; Data Science; Open, Social & Business Data Convergence | | Tony Baer | IT analyst with Ovum covering Big Data & data management with some systems engineering thrown in. | | Tony Ojeda | Data Scientist , Author , Entrepreneur. Co-founder @DataCommunityDC. Founder @DistrictDataLab. #DataScience #BigData #DataDC | | Vamshi Ambati | Data Science @ PayPal. #NLP, #machinelearning; PhD, Carnegie Mellon alumni (Blog: https://allthingsds.wordpress.com ) | | Wes McKinney | Pandas (Python Data Analysis library). | | WileyEd | Senior Manager - @Seagate Big Data Analytics @McKinsey Alum #BigData + #Analytics Evangelist #Hadoop, #Cloud, #Digital, & #R Enthusiast | | WNYC Data News Team | The data news crew at @WNYC. Practicing data-driven journalism, making it visual and showing our work. | | Alexey Grigorev | Data science author |

Newsletters

top

Youtube Videos & Channels

top

Telegram Channels

top

  • Open Data Science – First Telegram Data Science channel. Covering all technical and popular staff about anything related to Data Science: AI, Big Data, Machine Learning, Statistics, general Math and the applications of former.
  • Loss function porn — Beautiful posts on DS/ML theme with video or graphic vizualization.
  • Machinelearning – Daily ML news.

Slack Communities

top

Github Groups

Competitions

Some data mining competition platforms

Fun

Infographic

| Preview | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | | Key differences of a data scientist vs. data engineer | | | A visual guide to Becoming a Data Scientist in 8 Steps by DataCamp (img) | | | Mindmap on required skills (img) | | | Swami Chandrasekaran made a Curriculum via Metro map. | | | by @kzawadz via twitter | | | By Data Science Central | | | Data Science Wars: R vs Python | | | How to select statistical or machine learning techniques | | | Choosing the Right Estimator | | | The Data Science Industry: Who Does What | | | Data Science ~~Venn~~ Euler Diagram | | | Different Data Science Skills and Roles from this article by Springboard | | Data Fallacies To Avoid | A simple and friendly way of teaching your non-data scientist/non-statistician colleagues how to avoid mistakes with data. From Geckoboard's Data Literacy Lessons. |

Data Sets

Comics

Awesome Data Science

Awesome Subscribe to new links

Hobby

Other Lists

Data Science Tutorials & Resources for Beginners Awesome

If you want to know more about Data Science but don't know where to start this list is for you! :chart_with_upwards_trend:

No previous knowledge required but Python and statistics basics will definitely come in handy. These ressources have been used successfully for many beginners at my local Data Science student group ML-KA.

What is Data Science?

Common Algorithms and Procedures

Data Science using Python

This list covers only Python, as many are already familiar with this language. Data Science tutorials using R.

General

Learning Python

numpy

numpy is a Python library which provides large multidimensional arrays and fast mathematical operations on them.

pandas

pandas provides efficient data structures and analysis tools for Python. It is build on top of numpy.

scikit-learn

scikit-learn is the most common library for Machine Learning and Data Science in Python.

Jupyter Notebook

Jupyter Notebook is a web application for easy data visualisation and code presentation.

Various other helpful tools and resources

Data Science Challenges for Beginners

Sorted by increasing complexity.

More advanced resources and lists

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0

To the extent possible under law, Simon Böhm has waived all copyright and related or neighboring rights to this work. Disclaimer: Some of the links are affiliate links.

Awesome Machine Learning Awesome Track Awesome List

A curated list of awesome machine learning frameworks, libraries and software (by language). Inspired by awesome-php.

If you want to contribute to this list (please do), send me a pull request or contact me @josephmisiti. Also, a listed repository should be deprecated if:

  • Repository's owner explicitly says that "this library is not maintained".
  • Not committed for a long time (2~3 years).

Further resources:

  • For a list of free machine learning books available for download, go here.

  • For a list of professional machine learning events, go here.

  • For a list of (mostly) free machine learning courses available online, go here.

  • For a list of blogs and newsletters on data science and machine learning, go here.

  • For a list of free-to-attend meetups and local events, go here.

Table of Contents

Frameworks and Libraries

Tools

Credits

APL

General-Purpose Machine Learning

  • naive-apl - Naive Bayesian Classifier implementation in APL. [Deprecated]

C

General-Purpose Machine Learning

  • Darknet - Darknet is an open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation.
  • Recommender - A C library for product recommendations/suggestions using collaborative filtering (CF).
  • Hybrid Recommender System - A hybrid recommender system based upon scikit-learn algorithms. [Deprecated]
  • neonrvm - neonrvm is an open source machine learning library based on RVM technique. It's written in C programming language and comes with Python programming language bindings.
  • cONNXr - An ONNX runtime written in pure C (99) with zero dependencies focused on small embedded devices. Run inference on your machine learning models no matter which framework you train it with. Easy to install and compiles everywhere, even in very old devices.
  • libonnx - A lightweight, portable pure C99 onnx inference engine for embedded devices with hardware acceleration support.

Computer Vision

  • CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library.
  • VLFeat - VLFeat is an open and portable library of computer vision algorithms, which has a Matlab toolbox.

C++

Computer Vision

  • DLib - DLib has C++ and Python interfaces for face detection and training general object detectors.
  • EBLearn - Eblearn is an object-oriented C++ library that implements various machine learning models [Deprecated]
  • OpenCV - OpenCV has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS.
  • VIGRA - VIGRA is a genertic cross-platform C++ computer vision and machine learning library for volumes of arbitrary dimensionality with Python bindings.
  • Openpose - A real-time multi-person keypoint detection library for body, face, hands, and foot estimation

General-Purpose Machine Learning

  • BanditLib - A simple Multi-armed Bandit library. [Deprecated]
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind. [DEEP LEARNING]
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, contains fast inference implementation and supports CPU and GPU (even multi-GPU) computation.
  • CNTK - The Computational Network Toolkit (CNTK) by Microsoft Research, is a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph.
  • CUDA - This is a fast C++/CUDA implementation of convolutional [DEEP LEARNING]
  • DeepDetect - A machine learning API and server written in C++11. It makes state of the art machine learning easy to work with and integrate into existing applications.
  • Distributed Machine learning Tool Kit (DMTK) - A distributed machine learning (parameter server) framework by Microsoft. Enables training models on large data sets across multiple machines. Current tools bundled with it include: LightLDA and Distributed (Multisense) Word Embedding.
  • DLib - A suite of ML tools designed to be easy to imbed in other applications.
  • DSSTNE - A software library created by Amazon for training and deploying deep neural networks using GPUs which emphasizes speed and scale over experimental flexibility.
  • DyNet - A dynamic neural network library working well with networks that have dynamic structures that change for every training instance. Written in C++ with bindings in Python.
  • Fido - A highly-modular C++ machine learning library for embedded electronics and robotics.
  • igraph - General purpose graph library.
  • Intel® oneAPI Data Analytics Library - A high performance software library developed by Intel and optimized for Intel's architectures. Library provides algorithmic building blocks for all stages of data analytics and allows to process data in batch, online and distributed modes.
  • LightGBM - Microsoft's fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
  • libfm - A generic approach that allows to mimic most factorization models by feature engineering.
  • MLDB - The Machine Learning Database is a database designed for machine learning. Send it commands over a RESTful API to store data, explore it using SQL, then train machine learning models and expose them as APIs.
  • mlpack - A scalable C++ machine learning library.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • ParaMonte - A general-purpose library with C/C++ interface for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
  • proNet-core - A general-purpose network embedding framework: pair-wise representations optimization Network Edit.
  • PyCaret - An open-source, low-code machine learning library in Python that automates machine learning workflows.
  • PyCUDA - Python interface to CUDA
  • ROOT - A modular scientific software framework. It provides all the functionalities needed to deal with big data processing, statistical analysis, visualization and storage.
  • shark - A fast, modular, feature-rich open-source C++ machine learning library.
  • Shogun - The Shogun Machine Learning Toolbox.
  • sofia-ml - Suite of fast incremental algorithms.
  • Stan - A probabilistic programming language implementing full Bayesian statistical inference with Hamiltonian Monte Carlo sampling.
  • Timbl - A software package/C++ library implementing several memory-based learning algorithms, among which IB1-IG, an implementation of k-nearest neighbor classification, and IGTree, a decision-tree approximation of IB1-IG. Commonly used for NLP.
  • Vowpal Wabbit (VW) - A fast out-of-core learning system.
  • Warp-CTC - A fast parallel implementation of Connectionist Temporal Classification (CTC), on both CPU and GPU.
  • XGBoost - A parallelized optimized general purpose gradient boosting library.
  • ThunderGBM - A fast library for GBDTs and Random Forests on GPUs.
  • ThunderSVM - A fast SVM library on GPUs and CPUs.
  • LKYDeepNN - A header-only C++11 Neural Network library. Low dependency, native traditional chinese document.
  • xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertising and recommender systems.
  • Featuretools - A library for automated feature engineering. It excels at transforming transactional and relational datasets into feature matrices for machine learning using reusable feature engineering "primitives".
  • skynet - A library for learning neural networks, has C-interface, net set in JSON. Written in C++ with bindings in Python, C++ and C#.
  • Feast - A feature store for the management, discovery, and access of machine learning features. Feast provides a consistent view of feature data for both model training and model serving.
  • Hopsworks - A data-intensive platform for AI with the industry's first open-source feature store. The Hopsworks Feature Store provides both a feature warehouse for training and batch based on Apache Hive and a feature serving database, based on MySQL Cluster, for online applications.
  • Polyaxon - A platform for reproducible and scalable machine learning and deep learning.
  • QuestDB A relational column-oriented database designed for real-time analytics on time series and event data.

Natural Language Processing

  • BLLIP Parser - BLLIP Natural Language Parser (also known as the Charniak-Johnson parser).
  • colibri-core - C++ library, command line tools, and Python binding for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • CRF++ - Open source implementation of Conditional Random Fields (CRFs) for segmenting/labeling sequential data & other Natural Language Processing tasks. [Deprecated]
  • CRFsuite - CRFsuite is an implementation of Conditional Random Fields (CRFs) for labeling sequential data. [Deprecated]
  • frog - Memory-based NLP suite developed for Dutch: PoS tagger, lemmatiser, dependency parser, NER, shallow parser, morphological analyzer.
  • libfolia - C++ library for the FoLiA format
  • MeTA - MeTA : ModErn Text Analysis is a C++ Data Sciences Toolkit that facilitates mining big text data.
  • MIT Information Extraction Toolkit - C, C++, and Python tools for named entity recognition and relation extraction
  • ucto - Unicode-aware regular-expression based tokenizer for various languages. Tool and C++ library. Supports FoLiA format.

Speech Recognition

  • Kaldi - Kaldi is a toolkit for speech recognition written in C++ and licensed under the Apache License v2.0. Kaldi is intended for use by speech recognition researchers.

Sequence Analysis

  • ToPS - This is an object-oriented framework that facilitates the integration of probabilistic models for sequences over a user defined alphabet. [Deprecated]

Gesture Detection

  • grt - The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for real-time gesture recognition.

Common Lisp

General-Purpose Machine Learning

  • mgl - Neural networks (boltzmann machines, feed-forward and recurrent nets), Gaussian Processes.
  • mgl-gpr - Evolutionary algorithms. [Deprecated]
  • cl-libsvm - Wrapper for the libsvm support vector machine library. [Deprecated]
  • cl-online-learning - Online learning algorithms (Perceptron, AROW, SCW, Logistic Regression).
  • cl-random-forest - Implementation of Random Forest in Common Lisp.

Clojure

Natural Language Processing

  • Clojure-openNLP - Natural Language Processing in Clojure (opennlp).
  • Infections-clj - Rails-like inflection library for Clojure and ClojureScript.

General-Purpose Machine Learning

  • tech.ml - A machine learning platform based on tech.ml.dataset, supporting not just ml algorithms, but also relevant ETL processing; wraps multiple machine learning libraries
  • clj-ml - A machine learning library for Clojure built on top of Weka and friends.
  • clj-boost - Wrapper for XGBoost
  • Touchstone - Clojure A/B testing library.
  • Clojush - The Push programming language and the PushGP genetic programming system implemented in Clojure.
  • lambda-ml - Simple, concise implementations of machine learning techniques and utilities in Clojure.
  • Infer - Inference and machine learning in Clojure. [Deprecated]
  • Encog - Clojure wrapper for Encog (v3) (Machine-Learning framework that specializes in neural-nets). [Deprecated]
  • Fungp - A genetic programming library for Clojure. [Deprecated]
  • Statistiker - Basic Machine Learning algorithms in Clojure. [Deprecated]
  • clortex - General Machine Learning library using Numenta’s Cortical Learning Algorithm. [Deprecated]
  • comportex - Functionally composable Machine Learning library using Numenta’s Cortical Learning Algorithm. [Deprecated]

Deep Learning

  • MXNet - Bindings to Apache MXNet - part of the MXNet project
  • Deep Diamond - A fast Clojure Tensor & Deep Learning library
  • jutsu.ai - Clojure wrapper for deeplearning4j with some added syntactic sugar.
  • cortex - Neural networks, regression and feature learning in Clojure.
  • Flare - Dynamic Tensor Graph library in Clojure (think PyTorch, DynNet, etc.)
  • dl4clj - Clojure wrapper for Deeplearning4j.

Data Analysis

  • tech.ml.dataset - Clojure dataframe library and pipeline for data processing and machine learning
  • Tablecloth - A dataframe grammar wrapping tech.ml.dataset, inspired by several R libraries
  • Panthera - Clojure API wrapping Python's Pandas library
  • Incanter - Incanter is a Clojure-based, R-like platform for statistical computing and graphics.
  • PigPen - Map-Reduce for Clojure.
  • Geni - a Clojure dataframe library that runs on Apache Spark

Data Visualization

  • Hanami : Clojure(Script) library and framework for creating interactive visualization applications based in Vega-Lite (VGL) and/or Vega (VG) specifications. Automatic framing and layouts along with a powerful templating system for abstracting visualization specs
  • Saite - Clojure(Script) client/server application for dynamic interactive explorations and the creation of live shareable documents capturing them using Vega/Vega-Lite, CodeMirror, markdown, and LaTeX
  • Oz - Data visualisation using Vega/Vega-Lite and Hiccup, and a live-reload platform for literate-programming
  • Envision - Clojure Data Visualisation library, based on Statistiker and D3.
  • Pink Gorilla Notebook - A Clojure/Clojurescript notebook application/-library based on Gorilla-REPL
  • clojupyter - A Jupyter kernel for Clojure - run Clojure code in Jupyter Lab, Notebook and Console.
  • notespace - Notebook experience in your Clojure namespace
  • Delight - A listener that streams your spark events logs to delight, a free and improved spark UI

Interop

  • Java Interop - Clojure has Native Java Interop from which Java's ML ecosystem can be accessed
  • JavaScript Interop - ClojureScript has Native JavaScript Interop from which JavaScript's ML ecosystem can be accessed
  • Libpython-clj - Interop with Python
  • ClojisR - Interop with R and Renjin (R on the JVM)

Misc

  • Neanderthal - Fast Clojure Matrix Library (native CPU, GPU, OpenCL, CUDA)
  • kixistats - A library of statistical distribution sampling and transducing functions
  • fastmath - A collection of functions for mathematical and statistical computing, macine learning, etc., wrapping several JVM libraries
  • matlib - a Clojure library of optimisation and control theory tools and convenience functions based on Neanderthal.

Extra

  • Scicloj - Curated list of ML related resources for Clojure.

Crystal

General-Purpose Machine Learning

  • machine - Simple machine learning algorithm.
  • crystal-fann - FANN (Fast Artificial Neural Network) binding.

Elixir

General-Purpose Machine Learning

  • Simple Bayes - A Simple Bayes / Naive Bayes implementation in Elixir.
  • emel - A simple and functional machine learning library written in Elixir.
  • Tensorflex - Tensorflow bindings for the Elixir programming language.

Natural Language Processing

  • Stemmer - An English (Porter2) stemming implementation in Elixir.

Erlang

General-Purpose Machine Learning

  • Disco - Map Reduce in Erlang. [Deprecated]

Fortran

General-Purpose Machine Learning

Data Analysis / Data Visualization

  • ParaMonte - A general-purpose Fortran library for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.

Go

Natural Language Processing

  • snowball - Snowball Stemmer for Go.
  • word-embedding - Word Embeddings: the full implementation of word2vec, GloVe in Go.
  • sentences - Golang implementation of Punkt sentence tokenizer.
  • go-ngram - In-memory n-gram index with compression. [Deprecated]
  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm. [Deprecated]
  • go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm. [Deprecated]

General-Purpose Machine Learning

  • birdland - A recommendation library in Go.
  • eaopt - An evolutionary optimization library.
  • leaves - A pure Go implementation of the prediction part of GBRTs, including XGBoost and LightGBM.
  • gobrain - Neural Networks written in Go.
  • go-featureprocessing - Fast and convenient feature processing for low latency machine learning in Go.
  • go-mxnet-predictor - Go binding for MXNet c_predict_api to do inference with a pre-trained model.
  • go-ml-benchmarks — benchmarks of machine learning inference for Go
  • go-ml-transpiler - An open source Go transpiler for machine learning models.
  • golearn - Machine learning for Go.
  • goml - Machine learning library written in pure Go.
  • gorgonia - Deep learning in Go.
  • goro - A high-level machine learning library in the vein of Keras.
  • gorse - An offline recommender system backend based on collaborative filtering written in Go.
  • therfoo - An embedded deep learning library for Go.
  • neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT). [Deprecated]
  • go-pr - Pattern recognition package in Go lang. [Deprecated]
  • go-ml - Linear / Logistic regression, Neural Networks, Collaborative Filtering and Gaussian Multivariate Distribution. [Deprecated]
  • GoNN - GoNN is an implementation of Neural Network in Go Language, which includes BPNN, RBF, PCN. [Deprecated]
  • bayesian - Naive Bayesian Classification for Golang. [Deprecated]
  • go-galib - Genetic Algorithms library written in Go / Golang. [Deprecated]
  • Cloudforest - Ensembles of decision trees in Go/Golang. [Deprecated]
  • go-dnn - Deep Neural Networks for Golang (powered by MXNet)

Spatial analysis and geometry

  • go-geom - Go library to handle geometries.
  • gogeo - Spherical geometry in Go.

Data Analysis / Data Visualization

  • dataframe-go - Dataframes for machine-learning and statistics (similar to pandas).
  • gota - Dataframes.
  • gonum/mat - A linear algebra package for Go.
  • gonum/optimize - Implementations of optimization algorithms.
  • gonum/plot - A plotting library.
  • gonum/stat - A statistics library.
  • SVGo - The Go Language library for SVG generation.
  • glot - Glot is a plotting library for Golang built on top of gnuplot.
  • globe - Globe wireframe visualization.
  • gonum/graph - General-purpose graph library.
  • go-graph - Graph library for Go/Golang language. [Deprecated]
  • RF - Random forests implementation in Go. [Deprecated]

Computer vision

  • GoCV - Package for computer vision using OpenCV 4 and beyond.

Reinforcement learning

  • gold - A reinforcement learning library.

Haskell

General-Purpose Machine Learning

  • haskell-ml - Haskell implementations of various ML algorithms. [Deprecated]
  • HLearn - a suite of libraries for interpreting machine learning models according to their algebraic structure. [Deprecated]
  • hnn - Haskell Neural Network library.
  • hopfield-networks - Hopfield Networks for unsupervised learning in Haskell. [Deprecated]
  • DNNGraph - A DSL for deep neural networks. [Deprecated]
  • LambdaNet - Configurable Neural Networks in Haskell. [Deprecated]

Java

Natural Language Processing

  • Cortical.io - Retina: an API performing complex NLP operations (disambiguation, classification, streaming text filtering, etc...) as quickly and intuitively as the brain.
  • IRIS - Cortical.io's FREE NLP, Retina API Analysis Tool (written in JavaFX!) - See the Tutorial Video.
  • CoreNLP - Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words.
  • Stanford Parser - A natural language parser is a program that works out the grammatical structure of sentences.
  • Stanford POS Tagger - A Part-Of-Speech Tagger (POS Tagger).
  • Stanford Name Entity Recognizer - Stanford NER is a Java implementation of a Named Entity Recognizer.
  • Stanford Word Segmenter - Tokenization of raw text is a standard pre-processing step for many NLP tasks.
  • Tregex, Tsurgeon and Semgrex - Tregex is a utility for matching patterns in trees, based on tree relationships and regular expression matches on nodes (the name is short for "tree regular expressions").
  • Stanford Phrasal: A Phrase-Based Translation System
  • Stanford English Tokenizer - Stanford Phrasal is a state-of-the-art statistical phrase-based machine translation system, written in Java.
  • Stanford Tokens Regex - A tokenizer divides text into a sequence of tokens, which roughly correspond to "words".
  • Stanford Temporal Tagger - SUTime is a library for recognizing and normalizing time expressions.
  • Stanford SPIED - Learning entities from unlabeled text starting with seed sets using patterns in an iterative fashion.
  • Twitter Text Java - A Java implementation of Twitter's text processing library.
  • MALLET - A Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.
  • OpenNLP - a machine learning based toolkit for the processing of natural language text.
  • LingPipe - A tool kit for processing text using computational linguistics.
  • ClearTK - ClearTK provides a framework for developing statistical natural language processing (NLP) components in Java and is built on top of Apache UIMA. [Deprecated]
  • Apache cTAKES - Apache Clinical Text Analysis and Knowledge Extraction System (cTAKES) is an open-source natural language processing system for information extraction from electronic medical record clinical free-text.
  • NLP4J - The NLP4J project provides software and resources for natural language processing. The project started at the Center for Computational Language and EducAtion Research, and is currently developed by the Center for Language and Information Research at Emory University. [Deprecated]
  • CogcompNLP - This project collects a number of core libraries for Natural Language Processing (NLP) developed in the University of Illinois' Cognitive Computation Group, for example illinois-core-utilities which provides a set of NLP-friendly data structures and a number of NLP-related utilities that support writing NLP applications, running experiments, etc, illinois-edison a library for feature extraction from illinois-core-utilities data structures and many other packages.

General-Purpose Machine Learning

  • aerosolve - A machine learning library by Airbnb designed from the ground up to be human friendly.
  • AMIDST Toolbox - A Java Toolbox for Scalable Probabilistic Machine Learning.
  • Datumbox - Machine Learning framework for rapid development of Machine Learning and Statistical applications.
  • ELKI - Java toolkit for data mining. (unsupervised: clustering, outlier detection etc.)
  • Encog - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
  • FlinkML in Apache Flink - Distributed machine learning library in Flink.
  • H2O - ML engine that supports distributed learning on Hadoop, Spark or your laptop via APIs in R, Python, Scala, REST/JSON.
  • htm.java - General Machine Learning library using Numenta’s Cortical Learning Algorithm.
  • liblinear-java - Java version of liblinear.
  • Mahout - Distributed machine learning.
  • Meka - An open source implementation of methods for multi-label classification and evaluation (extension to Weka).
  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • Neuroph - Neuroph is lightweight Java neural network framework
  • ORYX - Lambda Architecture Framework using Apache Spark and Apache Kafka with a specialization for real-time large-scale machine learning.
  • Samoa SAMOA is a framework that includes distributed machine learning for data streams with an interface to plug-in different stream processing platforms.
  • RankLib - RankLib is a library of learning to rank algorithms. [Deprecated]
  • rapaio - statistics, data mining and machine learning toolbox in Java.
  • RapidMiner - RapidMiner integration into Java code.
  • Stanford Classifier - A classifier is a machine learning tool that will take data items and place them into one of k classes.
  • Smile - Statistical Machine Intelligence & Learning Engine.
  • SystemML - flexible, scalable machine learning (ML) language.
  • Weka - Weka is a collection of machine learning algorithms for data mining tasks.
  • LBJava - Learning Based Java is a modeling language for the rapid development of software systems, offers a convenient, declarative syntax for classifier and constraint definition directly in terms of the objects in the programmer's application.
  • knn-java-library - Just a simple implementation of K-Nearest Neighbors algorithm using with a bunch of similarity measures.

Speech Recognition

  • CMU Sphinx - Open Source Toolkit For Speech Recognition purely based on Java speech recognition library.

Data Analysis / Data Visualization

  • Flink - Open source platform for distributed stream and batch data processing.
  • Hadoop - Hadoop/HDFS.
  • Onyx - Distributed, masterless, high performance, fault tolerant data processing. Written entirely in Clojure.
  • Spark - Spark is a fast and general engine for large-scale data processing.
  • Storm - Storm is a distributed realtime computation system.
  • Impala - Real-time Query for Hadoop.
  • DataMelt - Mathematics software for numeric computation, statistics, symbolic calculations, data analysis and data visualization.
  • Dr. Michael Thomas Flanagan's Java Scientific Library. [Deprecated]

Deep Learning

  • Deeplearning4j - Scalable deep learning for industry with parallel GPUs.
  • Keras Beginner Tutorial - Friendly guide on using Keras to implement a simple Neural Network in Python
  • deepjavalibrary/djl - Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning, designed to be easy to get started with and simple to use for Java developers.

Javascript

Natural Language Processing

  • Twitter-text - A JavaScript implementation of Twitter's text processing library.
  • natural - General natural language facilities for node.
  • Knwl.js - A Natural Language Processor in JS.
  • Retext - Extensible system for analyzing and manipulating natural language.
  • NLP Compromise - Natural Language processing in the browser.
  • nlp.js - An NLP library built in node over Natural, with entity extraction, sentiment analysis, automatic language identify, and so more

Data Analysis / Data Visualization

  • D3.js
  • High Charts
  • NVD3.js
  • dc.js
  • chartjs
  • dimple
  • amCharts
  • D3xter - Straight forward plotting built on D3. [Deprecated]
  • statkit - Statistics kit for JavaScript. [Deprecated]
  • datakit - A lightweight framework for data analysis in JavaScript
  • science.js - Scientific and statistical computing in JavaScript. [Deprecated]
  • Z3d - Easily make interactive 3d plots built on Three.js [Deprecated]
  • Sigma.js - JavaScript library dedicated to graph drawing.
  • C3.js - customizable library based on D3.js for easy chart drawing.
  • Datamaps - Customizable SVG map/geo visualizations using D3.js. [Deprecated]
  • ZingChart - library written on Vanilla JS for big data visualization.
  • cheminfo - Platform for data visualization and analysis, using the visualizer project.
  • Learn JS Data
  • AnyChart
  • FusionCharts
  • Nivo - built on top of the awesome d3 and Reactjs libraries

General-Purpose Machine Learning

  • Auto ML - Automated machine learning, data formatting, ensembling, and hyperparameter optimization for competitions and exploration- just give it a .csv file! [Deprecated]
  • Convnet.js - ConvNetJS is a Javascript library for training Deep Learning models[DEEP LEARNING] [Deprecated]
  • Clusterfck - Agglomerative hierarchical clustering implemented in Javascript for Node.js and the browser. [Deprecated]
  • Clustering.js - Clustering algorithms implemented in Javascript for Node.js and the browser. [Deprecated]
  • Decision Trees - NodeJS Implementation of Decision Tree using ID3 Algorithm. [Deprecated]
  • DN2A - Digital Neural Networks Architecture. [Deprecated]
  • figue - K-means, fuzzy c-means and agglomerative clustering.
  • Gaussian Mixture Model - Unsupervised machine learning with multivariate Gaussian mixture model.
  • Node-fann - FANN (Fast Artificial Neural Network Library) bindings for Node.js [Deprecated]
  • Keras.js - Run Keras models in the browser, with GPU support provided by WebGL 2.
  • Kmeans.js - Simple Javascript implementation of the k-means algorithm, for node.js and the browser. [Deprecated]
  • LDA.js - LDA topic modeling for Node.js
  • Learning.js - Javascript implementation of logistic regression/c4.5 decision tree [Deprecated]
  • machinelearn.js - Machine Learning library for the web, Node.js and developers
  • mil-tokyo - List of several machine learning libraries.
  • Node-SVM - Support Vector Machine for Node.js
  • Brain - Neural networks in JavaScript [Deprecated]
  • Brain.js - Neural networks in JavaScript - continued community fork of Brain.
  • Bayesian-Bandit - Bayesian bandit implementation for Node and the browser. [Deprecated]
  • Synaptic - Architecture-free neural network library for Node.js and the browser.
  • kNear - JavaScript implementation of the k nearest neighbors algorithm for supervised learning.
  • NeuralN - C++ Neural Network library for Node.js. It has advantage on large dataset and multi-threaded training. [Deprecated]
  • kalman - Kalman filter for Javascript. [Deprecated]
  • shaman - Node.js library with support for both simple and multiple linear regression. [Deprecated]
  • ml.js - Machine learning and numerical analysis tools for Node.js and the Browser!
  • ml5 - Friendly machine learning for the web!
  • Pavlov.js - Reinforcement learning using Markov Decision Processes.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • TensorFlow.js - A WebGL accelerated, browser based JavaScript library for training and deploying ML models.
  • JSMLT - Machine learning toolkit with classification and clustering for Node.js; supports visualization (see visualml.io).
  • xgboost-node - Run XGBoost model and make predictions in Node.js.
  • Netron - Visualizer for machine learning models.
  • tensor-js - A deep learning library for the browser, accelerated by WebGL and WebAssembly
  • WebDNN - Fast Deep Neural Network Javascript Framework. WebDNN uses next generation JavaScript API, WebGPU for GPU execution, and WebAssembly for CPU execution.

Misc

  • stdlib - A standard library for JavaScript and Node.js, with an emphasis on numeric computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
  • sylvester - Vector and Matrix math for JavaScript. [Deprecated]
  • simple-statistics - A JavaScript implementation of descriptive, regression, and inference statistics. Implemented in literate JavaScript with no dependencies, designed to work in all modern browsers (including IE) as well as in Node.js.
  • regression-js - A javascript library containing a collection of least squares fitting methods for finding a trend in a set of data.
  • Lyric - Linear Regression library. [Deprecated]
  • GreatCircle - Library for calculating great circle distance.
  • MLPleaseHelp - MLPleaseHelp is a simple ML resource search engine. You can use this search engine right now at https://jgreenemi.github.io/MLPleaseHelp/, provided via Github Pages.
  • Pipcook - A JavaScript application framework for machine learning and its engineering.

Demos and Scripts

  • The Bot - Example of how the neural network learns to predict the angle between two points created with Synaptic.
  • Half Beer - Beer glass classifier created with Synaptic.
  • NSFWJS - Indecent content checker with TensorFlow.js
  • Rock Paper Scissors - Rock Paper Scissors trained in the browser with TensorFlow.js
  • Heroes Wear Masks - A fun TensorFlow.js-based oracle that tells, whether one wears a face mask or not. It can even tell when one wears the mask incorrectly.

Julia

General-Purpose Machine Learning

  • MachineLearning - Julia Machine Learning library. [Deprecated]
  • MLBase - A set of functions to support the development of machine learning algorithms.
  • PGM - A Julia framework for probabilistic graphical models.
  • DA - Julia package for Regularized Discriminant Analysis.
  • Regression - Algorithms for regression analysis (e.g. linear regression and logistic regression). [Deprecated]
  • Local Regression - Local regression, so smooooth!
  • Naive Bayes - Simple Naive Bayes implementation in Julia. [Deprecated]
  • Mixed Models - A Julia package for fitting (statistical) mixed-effects models.
  • Simple MCMC - basic mcmc sampler implemented in Julia. [Deprecated]
  • Distances - Julia module for Distance evaluation.
  • Decision Tree - Decision Tree Classifier and Regressor.
  • Neural - A neural network in Julia.
  • MCMC - MCMC tools for Julia. [Deprecated]
  • Mamba - Markov chain Monte Carlo (MCMC) for Bayesian analysis in Julia.
  • GLM - Generalized linear models in Julia.
  • Gaussian Processes - Julia package for Gaussian processes.
  • Online Learning [Deprecated]
  • GLMNet - Julia wrapper for fitting Lasso/ElasticNet GLM models using glmnet.
  • Clustering - Basic functions for clustering data: k-means, dp-means, etc.
  • SVM - SVM for Julia. [Deprecated]
  • Kernel Density - Kernel density estimators for julia.
  • MultivariateStats - Methods for dimensionality reduction.
  • NMF - A Julia package for non-negative matrix factorization.
  • ANN - Julia artificial neural networks. [Deprecated]
  • Mocha - Deep Learning framework for Julia inspired by Caffe. [Deprecated]
  • XGBoost - eXtreme Gradient Boosting Package in Julia.
  • ManifoldLearning - A Julia package for manifold learning and nonlinear dimensionality reduction.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • Merlin - Flexible Deep Learning Framework in Julia.
  • ROCAnalysis - Receiver Operating Characteristics and functions for evaluation probabilistic binary classifiers.
  • GaussianMixtures - Large scale Gaussian Mixture Models.
  • ScikitLearn - Julia implementation of the scikit-learn API.
  • Knet - Koç University Deep Learning Framework.
  • Flux - Relax! Flux is the ML library that doesn't make you tensor
  • MLJ - A Julia machine learning framework

Natural Language Processing

  • Topic Models - TopicModels for Julia. [Deprecated]
  • Text Analysis - Julia package for text analysis.
  • Word Tokenizers - Tokenizers for Natural Language Processing in Julia
  • Corpus Loaders - A julia package providing a variety of loaders for various NLP corpora.
  • Embeddings - Functions and data dependencies for loading various word embeddings
  • Languages - Julia package for working with various human languages
  • WordNet - A Julia package for Princeton's WordNet

Data Analysis / Data Visualization

  • Graph Layout - Graph layout algorithms in pure Julia.
  • LightGraphs - Graph modeling and analysis.
  • Data Frames Meta - Metaprogramming tools for DataFrames.
  • Julia Data - library for working with tabular data in Julia. [Deprecated]
  • Data Read - Read files from Stata, SAS, and SPSS.
  • Hypothesis Tests - Hypothesis tests for Julia.
  • Gadfly - Crafty statistical graphics for Julia.
  • Stats - Statistical tests for Julia.
  • RDataSets - Julia package for loading many of the data sets available in R.
  • DataFrames - library for working with tabular data in Julia.
  • Distributions - A Julia package for probability distributions and associated functions.
  • Data Arrays - Data structures that allow missing values. [Deprecated]
  • Time Series - Time series toolkit for Julia.
  • Sampling - Basic sampling algorithms for Julia.

Misc Stuff / Presentations

  • DSP - Digital Signal Processing (filtering, periodograms, spectrograms, window functions).
  • JuliaCon Presentations - Presentations for JuliaCon.
  • SignalProcessing - Signal Processing tools for Julia.
  • Images - An image library for Julia.
  • DataDeps - Reproducible data setup for reproducible science.

Kotlin

Deep Learning

  • KotlinDL - Deep learning framework written in Kotlin.

Lua

General-Purpose Machine Learning

  • Torch7
  • cephes - Cephes mathematical functions library, wrapped for Torch. Provides and wraps the 180+ special mathematical functions from the Cephes mathematical library, developed by Stephen L. Moshier. It is used, among many other places, at the heart of SciPy. [Deprecated]
  • autograd - Autograd automatically differentiates native Torch code. Inspired by the original Python version.
  • graph - Graph package for Torch. [Deprecated]
  • randomkit - Numpy's randomkit, wrapped for Torch. [Deprecated]
  • signal - A signal processing toolbox for Torch-7. FFT, DCT, Hilbert, cepstrums, stft.
  • nn - Neural Network package for Torch.
  • torchnet - framework for torch which provides a set of abstractions aiming at encouraging code re-use as well as encouraging modular programming.
  • nngraph - This package provides graphical computation for nn library in Torch7.
  • nnx - A completely unstable and experimental package that extends Torch's builtin nn library.
  • rnn - A Recurrent Neural Network library that extends Torch's nn. RNNs, LSTMs, GRUs, BRNNs, BLSTMs, etc.
  • dpnn - Many useful features that aren't part of the main nn package.
  • dp - A deep learning library designed for streamlining research and development using the Torch7 distribution. It emphasizes flexibility through the elegant use of object-oriented design patterns. [Deprecated]
  • optim - An optimization library for Torch. SGD, Adagrad, Conjugate-Gradient, LBFGS, RProp and more.
  • unsup - A package for unsupervised learning in Torch. Provides modules that are compatible with nn (LinearPsd, ConvPsd, AutoEncoder, ...), and self-contained algorithms (k-means, PCA). [Deprecated]
  • manifold - A package to manipulate manifolds.
  • svm - Torch-SVM library. [Deprecated]
  • lbfgs - FFI Wrapper for liblbfgs. [Deprecated]
  • vowpalwabbit - An old vowpalwabbit interface to torch. [Deprecated]
  • OpenGM - OpenGM is a C++ library for graphical modeling, and inference. The Lua bindings provide a simple way of describing graphs, from Lua, and then optimizing them with OpenGM. [Deprecated]
  • spaghetti - Spaghetti (sparse linear) module for torch7 by @MichaelMathieu [Deprecated]
  • LuaSHKit - A lua wrapper around the Locality sensitive hashing library SHKit [Deprecated]
  • kernel smoothing - KNN, kernel-weighted average, local linear regression smoothers. [Deprecated]
  • cutorch - Torch CUDA Implementation.
  • cunn - Torch CUDA Neural Network Implementation.
  • imgraph - An image/graph library for Torch. This package provides routines to construct graphs on images, segment them, build trees out of them, and convert them back to images. [Deprecated]
  • videograph - A video/graph library for Torch. This package provides routines to construct graphs on videos, segment them, build trees out of them, and convert them back to videos. [Deprecated]
  • saliency - code and tools around integral images. A library for finding interest points based on fast integral histograms. [Deprecated]
  • stitch - allows us to use hugin to stitch images and apply same stitching to a video sequence. [Deprecated]
  • sfm - A bundle adjustment/structure from motion package. [Deprecated]
  • fex - A package for feature extraction in Torch. Provides SIFT and dSIFT modules. [Deprecated]
  • OverFeat - A state-of-the-art generic dense feature extractor. [Deprecated]
  • wav2letter - a simple and efficient end-to-end Automatic Speech Recognition (ASR) system from Facebook AI Research.
  • Numeric Lua
  • Lunatic Python
  • SciLua
  • Lua - Numerical Algorithms [Deprecated]
  • Lunum [Deprecated]

Demos and Scripts

  • Core torch7 demos repository.
  • linear-regression, logistic-regression
  • face detector (training and detection as separate demos)
  • mst-based-segmenter
  • train-a-digit-classifier
  • train-autoencoder
  • optical flow demo
  • train-on-housenumbers
  • train-on-cifar
  • tracking with deep nets
  • kinect demo
  • filter-bank visualization
  • saliency-networks
  • Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo)
  • torch-datasets - Scripts to load several popular datasets including:
  • BSR 500
  • CIFAR-10
  • COIL
  • Street View House Numbers
  • MNIST
  • NORB
  • Atari2600 - Scripts to generate a dataset with static frames from the Arcade Learning Environment.

Matlab

Computer Vision

  • Contourlets - MATLAB source code that implements the contourlet transform and its utility functions.
  • Shearlets - MATLAB code for shearlet transform.
  • Curvelets - The Curvelet transform is a higher dimensional generalization of the Wavelet transform designed to represent images at different scales and different angles.
  • Bandlets - MATLAB code for bandlet transform.
  • mexopencv - Collection and a development kit of MATLAB mex functions for OpenCV library.

Natural Language Processing

  • NLP - A NLP library for Matlab.

General-Purpose Machine Learning

  • Training a deep autoencoder or a classifier on MNIST digits - Training a deep autoencoder or a classifier on MNIST digits[DEEP LEARNING].
  • Convolutional-Recursive Deep Learning for 3D Object Classification - Convolutional-Recursive Deep Learning for 3D Object Classification[DEEP LEARNING].
  • Spider - The spider is intended to be a complete object orientated environment for machine learning in Matlab.
  • LibSVM - A Library for Support Vector Machines.
  • ThunderSVM - An Open-Source SVM Library on GPUs and CPUs
  • LibLinear - A Library for Large Linear Classification.
  • Machine Learning Module - Class on machine w/ PDF, lectures, code
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
  • Pattern Recognition Toolbox - A complete object-oriented environment for machine learning in Matlab.
  • Pattern Recognition and Machine Learning - This package contains the matlab implementation of the algorithms described in the book Pattern Recognition and Machine Learning by C. Bishop.
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly with MATLAB.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • Machine Learning in MatLab/Octave - examples of popular machine learning algorithms (neural networks, linear/logistic regressions, K-Means, etc.) with code examples and mathematics behind them being explained.

Data Analysis / Data Visualization

  • ParaMonte - A general-purpose MATLAB library for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
  • matlab_bgl - MatlabBGL is a Matlab package for working with graphs.
  • gaimc - Efficient pure-Matlab implementations of graph algorithms to complement MatlabBGL's mex functions.

.NET

Computer Vision

  • OpenCVDotNet - A wrapper for the OpenCV project to be used with .NET applications.
  • Emgu CV - Cross platform wrapper of OpenCV which can be compiled in Mono to be run on Windows, Linus, Mac OS X, iOS, and Android.
  • AForge.NET - Open source C# framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence. Development has now shifted to GitHub.
  • Accord.NET - Together with AForge.NET, this library can provide image processing and computer vision algorithms to Windows, Windows RT and Windows Phone. Some components are also available for Java and Android.

Natural Language Processing

  • Stanford.NLP for .NET - A full port of Stanford NLP packages to .NET and also available precompiled as a NuGet package.

General-Purpose Machine Learning

  • Accord-Framework -The Accord.NET Framework is a complete framework for building machine learning, computer vision, computer audition, signal processing and statistical applications.
  • Accord.MachineLearning - Support Vector Machines, Decision Trees, Naive Bayesian models, K-means, Gaussian Mixture models and general algorithms such as Ransac, Cross-validation and Grid-Search for machine-learning applications. This package is part of the Accord.NET Framework.
  • DiffSharp - An automatic differentiation (AD) library providing exact and efficient derivatives (gradients, Hessians, Jacobians, directional derivatives, and matrix-free Hessian- and Jacobian-vector products) for machine learning and optimization applications. Operations can be nested to any level, meaning that you can compute exact higher-order derivatives and differentiate functions that are internally making use of differentiation, for applications such as hyperparameter optimization.
  • Encog - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
  • GeneticSharp - Multi-platform genetic algorithm library for .NET Core and .NET Framework. The library has several implementations of GA operators, like: selection, crossover, mutation, reinsertion and termination.
  • Infer.NET - Infer.NET is a framework for running Bayesian inference in graphical models. One can use Infer.NET to solve many different kinds of machine learning problems, from standard problems like classification, recommendation or clustering through to customized solutions to domain-specific problems. Infer.NET has been used in a wide variety of domains including information retrieval, bioinformatics, epidemiology, vision, and many others.
  • ML.NET - ML.NET is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers. ML.NET was originally developed in Microsoft Research and evolved into a significant framework over the last decade and is used across many product groups in Microsoft like Windows, Bing, PowerPoint, Excel and more.
  • Neural Network Designer - DBMS management system and designer for neural networks. The designer application is developed using WPF, and is a user interface which allows you to design your neural network, query the network, create and configure chat bots that are capable of asking questions and learning from your feedback. The chat bots can even scrape the internet for information to return in their output as well as to use for learning.
  • Synapses - Neural network library in F#.
  • Vulpes - Deep belief and deep learning implementation written in F# and leverages CUDA GPU execution with Alea.cuBase.
  • MxNet.Sharp - .NET Standard bindings for Apache MxNet with Imperative, Symbolic and Gluon Interface for developing, training and deploying Machine Learning models in C#. https://mxnet.tech-quantum.com/

Data Analysis / Data Visualization

  • numl - numl is a machine learning library intended to ease the use of using standard modeling techniques for both prediction and clustering.
  • Math.NET Numerics - Numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and everyday use. Supports .Net 4.0, .Net 3.5 and Mono on Windows, Linux and Mac; Silverlight 5, WindowsPhone/SL 8, WindowsPhone 8.1 and Windows 8 with PCL Portable Profiles 47 and 344; Android/iOS with Xamarin.
  • Sho - Sho is an interactive environment for data analysis and scientific computing that lets you seamlessly connect scripts (in IronPython) with compiled code (in .NET) to enable fast and flexible prototyping. The environment includes powerful and efficient libraries for linear algebra as well as data visualization that can be used from any .NET language, as well as a feature-rich interactive shell for rapid development.

Objective C

General-Purpose Machine Learning

  • YCML - A Machine Learning framework for Objective-C and Swift (OS X / iOS).
  • MLPNeuralNet - Fast multilayer perceptron neural network library for iOS and Mac OS X. MLPNeuralNet predicts new examples by trained neural networks. It is built on top of the Apple's Accelerate Framework, using vectorized operations and hardware acceleration if available. [Deprecated]
  • MAChineLearning - An Objective-C multilayer perceptron library, with full support for training through backpropagation. Implemented using vDSP and vecLib, it's 20 times faster than its Java equivalent. Includes sample code for use from Swift.
  • BPN-NeuralNetwork - It implemented 3 layers of neural networks ( Input Layer, Hidden Layer and Output Layer ) and it was named Back Propagation Neural Networks (BPN). This network can be used in products recommendation, user behavior analysis, data mining and data analysis. [Deprecated]
  • Multi-Perceptron-NeuralNetwork - it implemented multi-perceptrons neural network (ニューラルネットワーク) based on Back Propagation Neural Networks (BPN) and designed unlimited-hidden-layers.
  • KRHebbian-Algorithm - It is a non-supervisor and self-learning algorithm (adjust the weights) in the neural network of Machine Learning. [Deprecated]
  • KRKmeans-Algorithm - It implemented K-Means clustering and classification algorithm. It could be used in data mining and image compression. [Deprecated]
  • KRFuzzyCMeans-Algorithm - It implemented Fuzzy C-Means (FCM) the fuzzy clustering / classification algorithm on Machine Learning. It could be used in data mining and image compression. [Deprecated]

OCaml

General-Purpose Machine Learning

  • Oml - A general statistics and machine learning library.
  • GPR - Efficient Gaussian Process Regression in OCaml.
  • Libra-Tk - Algorithms for learning and inference with discrete probabilistic models.
  • TensorFlow - OCaml bindings for TensorFlow.

Perl

Data Analysis / Data Visualization

General-Purpose Machine Learning

Perl 6

Data Analysis / Data Visualization

General-Purpose Machine Learning

PHP

Natural Language Processing

  • jieba-php - Chinese Words Segmentation Utilities.

General-Purpose Machine Learning

  • PHP-ML - Machine Learning library for PHP. Algorithms, Cross Validation, Neural Network, Preprocessing, Feature Extraction and much more in one library.
  • PredictionBuilder - A library for machine learning that builds predictions using a linear regression.
  • Rubix ML - A high-level machine learning (ML) library that lets you build programs that learn from data using the PHP language.
  • 19 Questions - A machine learning / bayesian inference assigning attributes to objects.

Python

Computer Vision

  • Scikit-Image - A collection of algorithms for image processing in Python.
  • Scikit-Opt - Swarm Intelligence in Python (Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Algorithm, Immune Algorithm,Artificial Fish Swarm Algorithm in Python)
  • SimpleCV - An open source computer vision framework that gives access to several high-powered computer vision libraries, such as OpenCV. Written on Python and runs on Mac, Windows, and Ubuntu Linux.
  • Vigranumpy - Python bindings for the VIGRA C++ computer vision library.
  • OpenFace - Free and open source face recognition with deep neural networks.
  • PCV - Open source Python module for computer vision. [Deprecated]
  • face_recognition - Face recognition library that recognizes and manipulates faces from Python or from the command line.
  • deepface - A lightweight face recognition and facial attribute analysis (age, gender, emotion and race) framework for Python covering cutting-edge models such as VGG-Face, FaceNet, OpenFace, DeepFace, DeepID, Dlib and ArcFace.
  • retinaface - deep learning based cutting-edge facial detector for Python coming with facial landmarks
  • dockerface - Easy to install and use deep learning Faster R-CNN face detection for images and video in a docker container. [Deprecated]
  • Detectron - FAIR's software system that implements state-of-the-art object detection algorithms, including Mask R-CNN. It is written in Python and powered by the Caffe2 deep learning framework. [Deprecated]
  • detectron2 - FAIR's next-generation research platform for object detection and segmentation. It is a ground-up rewrite of the previous version, Detectron, and is powered by the PyTorch deep learning framework.
  • albumentations - А fast and framework agnostic image augmentation library that implements a diverse set of augmentation techniques. Supports classification, segmentation, detection out of the box. Was used to win a number of Deep Learning competitions at Kaggle, Topcoder and those that were a part of the CVPR workshops.
  • pytessarct - Python-tesseract is an optical character recognition (OCR) tool for python. That is, it will recognize and "read" the text embedded in images. Python-tesseract is a wrapper for Google's Tesseract-OCR Engine.
  • imutils - A library containing Convenience functions to make basic image processing operations such as translation, rotation, resizing, skeletonization, and displaying Matplotlib images easier with OpenCV and Python.
  • PyTorchCV - A PyTorch-Based Framework for Deep Learning in Computer Vision.
  • Self-supervised learning
  • neural-style-pt - A PyTorch implementation of Justin Johnson's neural-style (neural style transfer).
  • Detecto - Train and run a computer vision model with 5-10 lines of code.
  • neural-dream - A PyTorch implementation of DeepDream.
  • Openpose - A real-time multi-person keypoint detection library for body, face, hands, and foot estimation
  • Deep High-Resolution-Net - A PyTorch implementation of CVPR2019 paper "Deep High-Resolution Representation Learning for Human Pose Estimation"
  • dream-creator - A PyTorch implementation of DeepDream. Allows individuals to quickly and easily train their own custom GoogleNet models with custom datasets for DeepDream.
  • Lucent - Tensorflow and OpenAI Clarity's Lucid adapted for PyTorch.
  • lightly - Lightly is a computer vision framework for self-supervised learning.
  • Learnergy - Energy-based machine learning models built upon PyTorch.
  • OpenVisionAPI - Open source computer vision API based on open source models.
  • IoT Owl - Light face detection and recognition system with huge possibilities, based on Microsoft Face API and TensorFlow made for small IoT devices like raspberry pi.
  • Exadel CompreFace - face recognition system that can be easily integrated into any system without prior machine learning skills. CompreFace provides REST API for face recognition, face verification, face detection, face mask detection, landmark detection, age, and gender recognition and is easily deployed with docker.
  • computer-vision-in-action - as known as L0CV, is a new generation of computer vision open source online learning media, a cross-platform interactive learning framework integrating graphics, source code and HTML. the L0CV ecosystem — Notebook, Datasets, Source Code, and from Diving-in to Advanced — as well as the L0CV Hub.

Natural Language Processing

  • pkuseg-python - A better version of Jieba, developed by Peking University.
  • NLTK - A leading platform for building Python programs to work with human language data.
  • Pattern - A web mining module for the Python programming language. It has tools for natural language processing, machine learning, among others.
  • Quepy - A python framework to transform natural language questions to queries in a database query language.
  • TextBlob - Providing a consistent API for diving into common natural language processing (NLP) tasks. Stands on the giant shoulders of NLTK and Pattern, and plays nicely with both.
  • YAlign - A sentence aligner, a friendly tool for extracting parallel sentences from comparable corpora. [Deprecated]
  • jieba - Chinese Words Segmentation Utilities.
  • SnowNLP - A library for processing Chinese text.
  • spammy - A library for email Spam filtering built on top of nltk
  • loso - Another Chinese segmentation library. [Deprecated]
  • genius - A Chinese segment based on Conditional Random Field.
  • KoNLPy - A Python package for Korean natural language processing.
  • nut - Natural language Understanding Toolkit. [Deprecated]
  • Rosetta - Text processing tools and wrappers (e.g. Vowpal Wabbit)
  • BLLIP Parser - Python bindings for the BLLIP Natural Language Parser (also known as the Charniak-Johnson parser). [Deprecated]
  • PyNLPl - Python Natural Language Processing Library. General purpose NLP library for Python. Also contains some specific modules for parsing common NLP formats, most notably for FoLiA, but also ARPA language models, Moses phrasetables, GIZA++ alignments.
  • PySS3 - Python package that implements a novel white-box machine learning model for text classification, called SS3. Since SS3 has the ability to visually explain its rationale, this package also comes with easy-to-use interactive visualizations tools (online demos).
  • python-ucto - Python binding to ucto (a unicode-aware rule-based tokenizer for various languages).
  • python-frog - Python binding to Frog, an NLP suite for Dutch. (pos tagging, lemmatisation, dependency parsing, NER)
  • python-zpar - Python bindings for ZPar, a statistical part-of-speech-tagger, constituency parser, and dependency parser for English.
  • colibri-core - Python binding to C++ library for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • spaCy - Industrial strength NLP with Python and Cython.
  • PyStanfordDependencies - Python interface for converting Penn Treebank trees to Stanford Dependencies.
  • Distance - Levenshtein and Hamming distance computation. [Deprecated]
  • Fuzzy Wuzzy - Fuzzy String Matching in Python.
  • jellyfish - a python library for doing approximate and phonetic matching of strings.
  • editdistance - fast implementation of edit distance.
  • textacy - higher-level NLP built on Spacy.
  • stanford-corenlp-python - Python wrapper for Stanford CoreNLP [Deprecated]
  • CLTK - The Classical Language Toolkit.
  • Rasa - A "machine learning framework to automate text-and voice-based conversations."
  • yase - Transcode sentence (or other sequence) to list of word vector .
  • Polyglot - Multilingual text (NLP) processing toolkit.
  • DrQA - Reading Wikipedia to answer open-domain questions.
  • Dedupe - A python library for accurate and scalable fuzzy matching, record deduplication and entity-resolution.
  • Snips NLU - Natural Language Understanding library for intent classification and entity extraction
  • NeuroNER - Named-entity recognition using neural networks providing state-of-the-art-results
  • DeepPavlov - conversational AI library with many pre-trained Russian NLP models.
  • BigARTM - topic modelling platform.
  • NALP - A Natural Adversarial Language Processing framework built over Tensorflow.
  • DL Translate - A deep learning-based translation library between 50 languages, built with transformers.

General-Purpose Machine Learning

  • RexMex -> A general purpose recommender metrics library for fair evaluation.
  • ChemicalX -> A PyTorch based deep learning library for drug pair scoring
  • Microsoft ML for Apache Spark -> A distributed machine learning framework Apache Spark
  • Shapley -> A data-driven framework to quantify the value of classifiers in a machine learning ensemble.
  • igel -> A delightful machine learning tool that allows you to train/fit, test and use models without writing code
  • ML Model building -> A Repository Containing Classification, Clustering, Regression, Recommender Notebooks with illustration to make them.
  • ML/DL project template
  • PyTorch Geometric Temporal -> A temporal extension of PyTorch Geometric for dynamic graph representation learning.
  • Little Ball of Fur -> A graph sampling extension library for NetworkX with a Scikit-Learn like API.
  • Karate Club -> An unsupervised machine learning extension library for NetworkX with a Scikit-Learn like API.
  • Auto_ViML -> Automatically Build Variant Interpretable ML models fast! Auto_ViML is pronounced "auto vimal", is a comprehensive and scalable Python AutoML toolkit with imbalanced handling, ensembling, stacking and built-in feature selection. Featured in Medium article.
  • PyOD -> Python Outlier Detection, comprehensive and scalable Python toolkit for detecting outlying objects in multivariate data. Featured for Advanced models, including Neural Networks/Deep Learning and Outlier Ensembles.
  • steppy -> Lightweight, Python library for fast and reproducible machine learning experimentation. Introduces a very simple interface that enables clean machine learning pipeline design.
  • steppy-toolkit -> Curated collection of the neural networks, transformers and models that make your machine learning work faster and more effective.
  • CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit. Documentation can be found here.
  • Couler - Unified interface for constructing and managing machine learning workflows on different workflow engines, such as Argo Workflows, Tekton Pipelines, and Apache Airflow.
  • auto_ml - Automated machine learning for production and analytics. Lets you focus on the fun parts of ML, while outputting production-ready code, and detailed analytics of your dataset and results. Includes support for NLP, XGBoost, CatBoost, LightGBM, and soon, deep learning.
  • dtaidistance - High performance library for time series distances (DTW) and time series clustering.
  • machine learning - automated build consisting of a web-interface, and set of programmatic-interface API, for support vector machines. Corresponding dataset(s) are stored into a SQL database, then generated model(s) used for prediction(s), are stored into a NoSQL datastore.
  • XGBoost - Python bindings for eXtreme Gradient Boosting (Tree) Library.
  • ChefBoost - a lightweight decision tree framework for Python with categorical feature support covering regular decision tree algorithms such as ID3, C4.5, CART, CHAID and regression tree; also some advanved bagging and boosting techniques such as gradient boosting, random forest and adaboost.
  • Apache SINGA - An Apache Incubating project for developing an open source machine learning library.
  • Bayesian Methods for Hackers - Book/iPython notebooks on Probabilistic Programming in Python.
  • Featureforge A set of tools for creating and testing machine learning features, with a scikit-learn compatible API.
  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • scikit-learn - A Python module for machine learning built on top of SciPy.
  • metric-learn - A Python module for metric learning.
  • Intel(R) Extension for Scikit-learn - A seamless way to speed up your Scikit-learn applications with no accuracy loss and code changes.
  • SimpleAI Python implementation of many of the artificial intelligence algorithms described in the book "Artificial Intelligence, a Modern Approach". It focuses on providing an easy to use, well documented and tested library.
  • astroML - Machine Learning and Data Mining for Astronomy.
  • graphlab-create - A library with various machine learning models (regression, clustering, recommender systems, graph analytics, etc.) implemented on top of a disk-backed DataFrame.
  • BigML - A library that contacts external servers.
  • pattern - Web mining module for Python.
  • NuPIC - Numenta Platform for Intelligent Computing.
  • Pylearn2 - A Machine Learning library based on Theano. [Deprecated]
  • keras - High-level neural networks frontend for TensorFlow, CNTK and Theano.
  • Lasagne - Lightweight library to build and train neural networks in Theano.
  • hebel - GPU-Accelerated Deep Learning Library in Python. [Deprecated]
  • Chainer - Flexible neural network framework.
  • prophet - Fast and automated time series forecasting framework by Facebook.
  • gensim - Topic Modelling for Humans.
  • topik - Topic modelling toolkit. [Deprecated]
  • PyBrain - Another Python Machine Learning Library.
  • Brainstorm - Fast, flexible and fun neural networks. This is the successor of PyBrain.
  • Surprise - A scikit for building and analyzing recommender systems.
  • implicit - Fast Python Collaborative Filtering for Implicit Datasets.
  • LightFM - A Python implementation of a number of popular recommendation algorithms for both implicit and explicit feedback.
  • Crab - A flexible, fast recommender engine. [Deprecated]
  • python-recsys - A Python library for implementing a Recommender System.
  • thinking bayes - Book on Bayesian Analysis.
  • Image-to-Image Translation with Conditional Adversarial Networks - Implementation of image to image (pix2pix) translation from the paper by isola et al.[DEEP LEARNING]
  • Restricted Boltzmann Machines -Restricted Boltzmann Machines in Python. [DEEP LEARNING]
  • Bolt - Bolt Online Learning Toolbox. [Deprecated]
  • CoverTree - Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree [Deprecated]
  • nilearn - Machine learning for NeuroImaging in Python.
  • neuropredict - Aimed at novice machine learners and non-expert programmers, this package offers easy (no coding needed) and comprehensive machine learning (evaluation and full report of predictive performance WITHOUT requiring you to code) in Python for NeuroImaging and any other type of features. This is aimed at absorbing much of the ML workflow, unlike other packages like nilearn and pymvpa, which require you to learn their API and code to produce anything useful.
  • imbalanced-learn - Python module to perform under sampling and oversampling with various techniques.
  • imbalanced-ensemble - Python toolbox for quick implementation, modification, evaluation, and visualization of ensemble learning algorithms for class-imbalanced data. Supports out-of-the-box multi-class imbalanced (long-tailed) classification.
  • Shogun - The Shogun Machine Learning Toolbox.
  • Pyevolve - Genetic algorithm framework. [Deprecated]
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
  • breze - Theano based library for deep and recurrent neural networks.
  • Cortex - Open source platform for deploying machine learning models in production.
  • pyhsmm - library for approximate unsupervised inference in Bayesian Hidden Markov Models (HMMs) and explicit-duration Hidden semi-Markov Models (HSMMs), focusing on the Bayesian Nonparametric extensions, the HDP-HMM and HDP-HSMM, mostly with weak-limit approximations.
  • SKLL - A wrapper around scikit-learn that makes it simpler to conduct experiments.
  • neurolab
  • Spearmint - Spearmint is a package to perform Bayesian optimization according to the algorithms outlined in the paper: Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle and Ryan P. Adams. Advances in Neural Information Processing Systems, 2012. [Deprecated]
  • Pebl - Python Environment for Bayesian Learning. [Deprecated]
  • Theano - Optimizing GPU-meta-programming code generating array oriented optimizing math compiler in Python.
  • TensorFlow - Open source software library for numerical computation using data flow graphs.
  • pomegranate - Hidden Markov Models for Python, implemented in Cython for speed and efficiency.
  • python-timbl - A Python extension module wrapping the full TiMBL C++ programming interface. Timbl is an elaborate k-Nearest Neighbours machine learning toolkit.
  • deap - Evolutionary algorithm framework.
  • pydeep - Deep Learning In Python. [Deprecated]
  • mlxtend - A library consisting of useful tools for data science and machine learning tasks.
  • neon - Nervana's high-performance Python-based Deep Learning framework [DEEP LEARNING]. [Deprecated]
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search.
  • Neural Networks and Deep Learning - Code samples for my book "Neural Networks and Deep Learning" [DEEP LEARNING].
  • Annoy - Approximate nearest neighbours implementation.
  • TPOT - Tool that automatically creates and optimizes machine learning pipelines using genetic programming. Consider it your personal data science assistant, automating a tedious part of machine learning.
  • pgmpy A python library for working with Probabilistic Graphical Models.
  • DIGITS - The Deep Learning GPU Training System (DIGITS) is a web application for training deep learning models.
  • Orange - Open source data visualization and data analysis for novices and experts.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • milk - Machine learning toolkit focused on supervised classification. [Deprecated]
  • TFLearn - Deep learning library featuring a higher-level API for TensorFlow.
  • REP - an IPython-based environment for conducting data-driven research in a consistent and reproducible way. REP is not trying to substitute scikit-learn, but extends it and provides better user experience. [Deprecated]
  • rgf_python - Python bindings for Regularized Greedy Forest (Tree) Library.
  • skbayes - Python package for Bayesian Machine Learning with scikit-learn API.
  • fuku-ml - Simple machine learning library, including Perceptron, Regression, Support Vector Machine, Decision Tree and more, it's easy to use and easy to learn for beginners.
  • Xcessiv - A web-based application for quick, scalable, and automated hyperparameter tuning and stacked ensembling.
  • PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration
  • PyTorch Lightning - The lightweight PyTorch wrapper for high-performance AI research.
  • PyTorch Lightning Bolts - Toolbox of models, callbacks, and datasets for AI/ML researchers.
  • skorch - A scikit-learn compatible neural network library that wraps PyTorch.
  • ML-From-Scratch - Implementations of Machine Learning models from scratch in Python with a focus on transparency. Aims to showcase the nuts and bolts of ML in an accessible way.
  • Edward - A library for probabilistic modeling, inference, and criticism. Built on top of TensorFlow.
  • xRBM - A library for Restricted Boltzmann Machine (RBM) and its conditional variants in Tensorflow.
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, well documented and supports CPU and GPU (even multi-GPU) computation.
  • stacked_generalization - Implementation of machine learning stacking technique as a handy library in Python.
  • modAL - A modular active learning framework for Python, built on top of scikit-learn.
  • Cogitare: A Modern, Fast, and Modular Deep Learning and Machine Learning framework for Python.
  • Parris - Parris, the automated infrastructure setup tool for machine learning algorithms.
  • neonrvm - neonrvm is an open source machine learning library based on RVM technique. It's written in C programming language and comes with Python programming language bindings.
  • Turi Create - Machine learning from Apple. Turi Create simplifies the development of custom machine learning models. You don't have to be a machine learning expert to add recommendations, object detection, image classification, image similarity or activity classification to your app.
  • xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertisement and recommender systems.
  • mlens - A high performance, memory efficient, maximally parallelized ensemble learning, integrated with scikit-learn.
  • Thampi - Machine Learning Prediction System on AWS Lambda
  • MindsDB - Open Source framework to streamline use of neural networks.
  • Microsoft Recommenders: Examples and best practices for building recommendation systems, provided as Jupyter notebooks. The repo contains some of the latest state of the art algorithms from Microsoft Research as well as from other companies and institutions.
  • StellarGraph: Machine Learning on Graphs, a Python library for machine learning on graph-structured (network-structured) data.
  • BentoML: Toolkit for package and deploy machine learning models for serving in production
  • MiraiML: An asynchronous engine for continuous & autonomous machine learning, built for real-time usage.
  • numpy-ML: Reference implementations of ML models written in numpy
  • Neuraxle: A framework providing the right abstractions to ease research, development, and deployment of your ML pipelines.
  • Cornac - A comparative framework for multimodal recommender systems with a focus on models leveraging auxiliary data.
  • JAX - JAX is Autograd and XLA, brought together for high-performance machine learning research.
  • Catalyst - High-level utils for PyTorch DL & RL research. It was developed with a focus on reproducibility, fast experimentation and code/ideas reusing. Being able to research/develop something new, rather than write another regular train loop.
  • Fastai - High-level wrapper built on the top of Pytorch which supports vision, text, tabular data and collaborative filtering.
  • scikit-multiflow - A machine learning framework for multi-output/multi-label and stream data.
  • Lightwood - A Pytorch based framework that breaks down machine learning problems into smaller blocks that can be glued together seamlessly with objective to build predictive models with one line of code.
  • bayeso - A simple, but essential Bayesian optimization package, written in Python.
  • mljar-supervised - An Automated Machine Learning (AutoML) python package for tabular data. It can handle: Binary Classification, MultiClass Classification and Regression. It provides explanations and markdown reports.
  • evostra - A fast Evolution Strategy implementation in Python.
  • Determined - Scalable deep learning training platform, including integrated support for distributed training, hyperparameter tuning, experiment tracking, and model management.
  • PySyft - A Python library for secure and private Deep Learning built on PyTorch and TensorFlow.
  • PyGrid - Peer-to-peer network of data owners and data scientists who can collectively train AI models using PySyft
  • sktime - A unified framework for machine learning with time series
  • OPFython - A Python-inspired implementation of the Optimum-Path Forest classifier.
  • Opytimizer - Python-based meta-heuristic optimization techniques.
  • Gradio - A Python library for quickly creating and sharing demos of models. Debug models interactively in your browser, get feedback from collaborators, and generate public links without deploying anything.
  • Hub - Fastest unstructured dataset management for TensorFlow/PyTorch. Stream & version-control data. Store even petabyte-scale data in a single numpy-like array on the cloud accessible on any machine. Visit activeloop.ai for more info.
  • Synthia - Multidimensional synthetic data generation in Python.
  • ByteHub - An easy-to-use, Python-based feature store. Optimized for time-series data.
  • Backprop - Backprop makes it simple to use, finetune, and deploy state-of-the-art ML models.
  • River: A framework for general purpose online machine learning.
  • FEDOT: An AutoML framework for the automated design of composite modeling pipelines. It can handle classification, regression, and time series forecasting tasks on different types of data (including multi-modal datasets).
  • Sklearn-genetic-opt: An AutoML package for hyperparameters tuning using evolutionary algorithms, with built-in callbacks, plotting, remote logging and more.
  • Evidently: Interactive reports to analyze machine learning models during validation or production monitoring.
  • Streamlit: Streamlit is an framework to create beautiful data apps in hours, not weeks.
  • Optuna: Optuna is an automatic hyperparameter optimization software framework, particularly designed for machine learning.
  • Deepchecks: Validation & testing of machine learning models and data during model development, deployment, and production. This includes checks and suites related to various types of issues, such as model performance, data integrity, distribution mismatches, and more.

Data Analysis / Data Visualization

  • DataVisualization - A Github Repository Where you can Learn Datavisualizatoin Basics to Intermediate level.
  • Cartopy - Cartopy is a Python package designed for geospatial data processing in order to produce maps and other geospatial data analyses.
  • SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
  • NumPy - A fundamental package for scientific computing with Python.
  • AutoViz AutoViz performs automatic visualization of any dataset with a single line of Python code. Give it any input file (CSV, txt or json) of any size and AutoViz will visualize it. See Medium article.
  • Numba - Python JIT (just in time) compiler to LLVM aimed at scientific Python by the developers of Cython and NumPy.
  • Mars - A tensor-based framework for large-scale data computation which is often regarded as a parallel and distributed version of NumPy.
  • NetworkX - A high-productivity software for complex networks.
  • igraph - binding to igraph library - General purpose graph library.
  • Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
  • ParaMonte - A general-purpose Python library for Bayesian data analysis and visualization via serial/parallel Monte Carlo and MCMC simulations. Documentation can be found here.
  • Vaex - A high performance Python library for lazy Out-of-Core DataFrames (similar to Pandas), to visualize and explore big tabular datasets. Documentation can be found here.
  • Open Mining - Business Intelligence (BI) in Python (Pandas web interface) [Deprecated]
  • PyMC - Markov Chain Monte Carlo sampling toolkit.
  • zipline - A Pythonic algorithmic trading library.
  • PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
  • SymPy - A Python library for symbolic mathematics.
  • statsmodels - Statistical modeling and econometrics in Python.
  • astropy - A community Python library for Astronomy.
  • matplotlib - A Python 2D plotting library.
  • bokeh - Interactive Web Plotting for Python.
  • plotly - Collaborative web plotting for Python and matplotlib.
  • altair - A Python to Vega translator.
  • d3py - A plotting library for Python, based on D3.js.
  • PyDexter - Simple plotting for Python. Wrapper for D3xterjs; easily render charts in-browser.
  • ggplot - Same API as ggplot2 for R. [Deprecated]
  • ggfortify - Unified interface to ggplot2 popular R packages.
  • Kartograph.py - Rendering beautiful SVG maps in Python.
  • pygal - A Python SVG Charts Creator.
  • PyQtGraph - A pure-python graphics and GUI library built on PyQt4 / PySide and NumPy.
  • pycascading [Deprecated]
  • Petrel - Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python.
  • Blaze - NumPy and Pandas interface to Big Data.
  • emcee - The Python ensemble sampling toolkit for affine-invariant MCMC.
  • windML - A Python Framework for Wind Energy Analysis and Prediction.
  • vispy - GPU-based high-performance interactive OpenGL 2D/3D data visualization library.
  • cerebro2 A web-based visualization and debugging platform for NuPIC. [Deprecated]
  • NuPIC Studio An all-in-one NuPIC Hierarchical Temporal Memory visualization and debugging super-tool! [Deprecated]
  • SparklingPandas Pandas on PySpark (POPS).
  • Seaborn - A python visualization library based on matplotlib.
  • ipychart - The power of Chart.js in Jupyter Notebook.
  • bqplot - An API for plotting in Jupyter (IPython).
  • pastalog - Simple, realtime visualization of neural network training performance.
  • Superset - A data exploration platform designed to be visual, intuitive, and interactive.
  • Dora - Tools for exploratory data analysis in Python.
  • Ruffus - Computation Pipeline library for python.
  • SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis).
  • somoclu Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters, has python API.
  • HDBScan - implementation of the hdbscan algorithm in Python - used for clustering
  • visualize_ML - A python package for data exploration and data analysis. [Deprecated]
  • scikit-plot - A visualization library for quick and easy generation of common plots in data analysis and machine learning.
  • Bowtie - A dashboard library for interactive visualizations using flask socketio and react.
  • lime - Lime is about explaining what machine learning classifiers (or models) are doing. It is able to explain any black box classifier, with two or more classes.
  • PyCM - PyCM is a multi-class confusion matrix library written in Python that supports both input data vectors and direct matrix, and a proper tool for post-classification model evaluation that supports most classes and overall statistics parameters
  • Dash - A framework for creating analytical web applications built on top of Plotly.js, React, and Flask
  • Lambdo - A workflow engine for solving machine learning problems by combining in one analysis pipeline (i) feature engineering and machine learning (ii) model training and prediction (iii) table population and column evaluation via user-defined (Python) functions.
  • TensorWatch - Debugging and visualization tool for machine learning and data science. It extensively leverages Jupyter Notebook to show real-time visualizations of data in running processes such as machine learning training.
  • dowel - A little logger for machine learning research. Output any object to the terminal, CSV, TensorBoard, text logs on disk, and more with just one call to logger.log().

Misc Scripts / iPython Notebooks / Codebases

Neural Networks

  • nn_builder - nn_builder is a python package that lets you build neural networks in 1 line
  • NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.
  • Neuron - Neuron is simple class for time series predictions. It's utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm.

  • NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences. [Deprecated]

  • Neuron - Neuron is simple class for time series predictions. It's utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm. [Deprecated]
  • Data Driven Code - Very simple implementation of neural networks for dummies in python without using any libraries, with detailed comments.
  • Machine Learning, Data Science and Deep Learning with Python - LiveVideo course that covers machine learning, Tensorflow, artificial intelligence, and neural networks.
  • TResNet: High Performance GPU-Dedicated Architecture - TResNet models were designed and optimized to give the best speed-accuracy tradeoff out there on GPUs.
  • TResNet: Simple and powerful neural network library for python - Variety of supported types of Artificial Neural Network and learning algorithms.
  • Jina AI An easier way to build neural search in the cloud. Compatible with Jupyter Notebooks.
  • sequitur PyTorch library for creating and training sequence autoencoders in just two lines of code

Federated Learning

  • Flower - A unified approach to federated learning, analytics, and evaluation. Federate any workload, any ML framework, and any programming language.
  • PySyft - A Python library for secure and private Deep Learning.
  • Tensorflow-Federated A federated learning framework for machine learning and other computations on decentralized data.

Kaggle Competition Source Code

Reinforcement Learning

  • DeepMind Lab - DeepMind Lab is a 3D learning environment based on id Software's Quake III Arena via ioquake3 and other open source software. Its primary purpose is to act as a testbed for research in artificial intelligence, especially deep reinforcement learning.
  • Gym - OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms.
  • Serpent.AI - Serpent.AI is a game agent framework that allows you to turn any video game you own into a sandbox to develop AI and machine learning experiments. For both researchers and hobbyists.
  • ViZDoom - ViZDoom allows developing AI bots that play Doom using only the visual information (the screen buffer). It is primarily intended for research in machine visual learning, and deep reinforcement learning, in particular.
  • Roboschool - Open-source software for robot simulation, integrated with OpenAI Gym.
  • Retro - Retro Games in Gym
  • SLM Lab - Modular Deep Reinforcement Learning framework in PyTorch.
  • Coach - Reinforcement Learning Coach by Intel® AI Lab enables easy experimentation with state of the art Reinforcement Learning algorithms
  • garage - A toolkit for reproducible reinforcement learning research
  • metaworld - An open source robotics benchmark for meta- and multi-task reinforcement learning
  • acme - An Open Source Distributed Framework for Reinforcement Learning that makes build and train your agents easily.
  • Spinning Up - An educational resource designed to let anyone learn to become a skilled practitioner in deep reinforcement learning
  • Maze - Application-oriented deep reinforcement learning framework addressing real-world decision problems.
  • RLlib - RLlib is an industry level, highly scalable RL library for tf and torch, based on Ray. It's used by companies like Amazon and Microsoft to solve real-world decision making problems at scale.

Ruby

Natural Language Processing

  • Awesome NLP with Ruby - Curated link list for practical natural language processing in Ruby.
  • Treat - Text REtrieval and Annotation Toolkit, definitely the most comprehensive toolkit I’ve encountered so far for Ruby.
  • Stemmer - Expose libstemmer_c to Ruby. [Deprecated]
  • Raspell - raspell is an interface binding for ruby. [Deprecated]
  • UEA Stemmer - Ruby port of UEALite Stemmer - a conservative stemmer for search and indexing.
  • Twitter-text-rb - A library that does auto linking and extraction of usernames, lists and hashtags in tweets.

General-Purpose Machine Learning

Data Analysis / Data Visualization

  • rsruby - Ruby - R bridge.
  • data-visualization-ruby - Source code and supporting content for my Ruby Manor presentation on Data Visualisation with Ruby. [Deprecated]
  • ruby-plot - gnuplot wrapper for Ruby, especially for plotting ROC curves into SVG files. [Deprecated]
  • plot-rb - A plotting library in Ruby built on top of Vega and D3. [Deprecated]
  • scruffy - A beautiful graphing toolkit for Ruby.
  • SciRuby
  • Glean - A data management tool for humans. [Deprecated]
  • Bioruby
  • Arel [Deprecated]

Misc

Rust

General-Purpose Machine Learning

  • smartcore - "The Most Advanced Machine Learning Library In Rust."
  • linfa - a comprehensive toolkit to build Machine Learning applications with Rust
  • deeplearn-rs - deeplearn-rs provides simple networks that use matrix multiplication, addition, and ReLU under the MIT license.
  • rustlearn - a machine learning framework featuring logistic regression, support vector machines, decision trees and random forests.
  • rusty-machine - a pure-rust machine learning library.
  • leaf - open source framework for machine intelligence, sharing concepts from TensorFlow and Caffe. Available under the MIT license. [Deprecated]
  • RustNN - RustNN is a feedforward neural network library. [Deprecated]
  • RusticSOM - A Rust library for Self Organising Maps (SOM).

R

General-Purpose Machine Learning

  • ahaz - ahaz: Regularization for semiparametric additive hazards regression. [Deprecated]
  • arules - arules: Mining Association Rules and Frequent Itemsets
  • biglasso - biglasso: Extending Lasso Model Fitting to Big Data in R.
  • bmrm - bmrm: Bundle Methods for Regularized Risk Minimization Package.
  • Boruta - Boruta: A wrapper algorithm for all-relevant feature selection.
  • bst - bst: Gradient Boosting.
  • C50 - C50: C5.0 Decision Trees and Rule-Based Models.
  • caret - Classification and Regression Training: Unified interface to ~150 ML algorithms in R.
  • caretEnsemble - caretEnsemble: Framework for fitting multiple caret models as well as creating ensembles of such models. [Deprecated]
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box for R.
  • Clever Algorithms For Machine Learning
  • CORElearn - CORElearn: Classification, regression, feature evaluation and ordinal evaluation.
  • CoxBoost - CoxBoost: Cox models by likelihood based boosting for a single survival endpoint or competing risks [Deprecated]
  • Cubist - Cubist: Rule- and Instance-Based Regression Modeling.
  • e1071 - e1071: Misc Functions of the Department of Statistics (e1071), TU Wien
  • earth - earth: Multivariate Adaptive Regression Spline Models
  • elasticnet - elasticnet: Elastic-Net for Sparse Estimation and Sparse PCA.
  • ElemStatLearn - ElemStatLearn: Data sets, functions and examples from the book: "The Elements of Statistical Learning, Data Mining, Inference, and Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman.
  • evtree - evtree: Evolutionary Learning of Globally Optimal Trees.
  • forecast - forecast: Timeseries forecasting using ARIMA, ETS, STLM, TBATS, and neural network models.
  • forecastHybrid - forecastHybrid: Automatic ensemble and cross validation of ARIMA, ETS, STLM, TBATS, and neural network models from the "forecast" package.
  • fpc - fpc: Flexible procedures for clustering.
  • frbs - frbs: Fuzzy Rule-based Systems for Classification and Regression Tasks. [Deprecated]
  • GAMBoost - GAMBoost: Generalized linear and additive models by likelihood based boosting. [Deprecated]
  • gamboostLSS - gamboostLSS: Boosting Methods for GAMLSS.
  • gbm - gbm: Generalized Boosted Regression Models.
  • glmnet - glmnet: Lasso and elastic-net regularized generalized linear models.
  • glmpath - glmpath: L1 Regularization Path for Generalized Linear Models and Cox Proportional Hazards Model.
  • GMMBoost - GMMBoost: Likelihood-based Boosting for Generalized mixed models. [Deprecated]
  • grplasso - grplasso: Fitting user specified models with Group Lasso penalty.
  • grpreg - grpreg: Regularization paths for regression models with grouped covariates.
  • h2o - A framework for fast, parallel, and distributed machine learning algorithms at scale -- Deeplearning, Random forests, GBM, KMeans, PCA, GLM.
  • hda - hda: Heteroscedastic Discriminant Analysis. [Deprecated]
  • Introduction to Statistical Learning
  • ipred - ipred: Improved Predictors.
  • kernlab - kernlab: Kernel-based Machine Learning Lab.
  • klaR - klaR: Classification and visualization.
  • L0Learn - L0Learn: Fast algorithms for best subset selection.
  • lars - lars: Least Angle Regression, Lasso and Forward Stagewise. [Deprecated]
  • lasso2 - lasso2: L1 constrained estimation aka ‘lasso’.
  • LiblineaR - LiblineaR: Linear Predictive Models Based On The Liblinear C/C++ Library.
  • LogicReg - LogicReg: Logic Regression.
  • Machine Learning For Hackers
  • maptree - maptree: Mapping, pruning, and graphing tree models. [Deprecated]
  • mboost - mboost: Model-Based Boosting.
  • medley - medley: Blending regression models, using a greedy stepwise approach.
  • mlr - mlr: Machine Learning in R.
  • ncvreg - ncvreg: Regularization paths for SCAD- and MCP-penalized regression models.
  • nnet - nnet: Feed-forward Neural Networks and Multinomial Log-Linear Models. [Deprecated]
  • pamr - pamr: Pam: prediction analysis for microarrays. [Deprecated]
  • party - party: A Laboratory for Recursive Partitioning
  • partykit - partykit: A Toolkit for Recursive Partitioning.
  • penalized - penalized: L1 (lasso and fused lasso) and L2 (ridge) penalized estimation in GLMs and in the Cox model.
  • penalizedLDA - penalizedLDA: Penalized classification using Fisher's linear discriminant. [Deprecated]
  • penalizedSVM - penalizedSVM: Feature Selection SVM using penalty functions.
  • quantregForest - quantregForest: Quantile Regression Forests.
  • randomForest - randomForest: Breiman and Cutler's random forests for classification and regression.
  • randomForestSRC - randomForestSRC: Random Forests for Survival, Regression and Classification (RF-SRC).
  • rattle - rattle: Graphical user interface for data mining in R.
  • rda - rda: Shrunken Centroids Regularized Discriminant Analysis.
  • rdetools - rdetools: Relevant Dimension Estimation (RDE) in Feature Spaces. [Deprecated]
  • REEMtree - REEMtree: Regression Trees with Random Effects for Longitudinal (Panel) Data. [Deprecated]
  • relaxo - relaxo: Relaxed Lasso. [Deprecated]
  • rgenoud - rgenoud: R version of GENetic Optimization Using Derivatives
  • Rmalschains - Rmalschains: Continuous Optimization using Memetic Algorithms with Local Search Chains (MA-LS-Chains) in R.
  • rminer - rminer: Simpler use of data mining methods (e.g. NN and SVM) in classification and regression. [Deprecated]
  • ROCR - ROCR: Visualizing the performance of scoring classifiers. [Deprecated]
  • RoughSets - RoughSets: Data Analysis Using Rough Set and Fuzzy Rough Set Theories. [Deprecated]
  • rpart - rpart: Recursive Partitioning and Regression Trees.
  • RPMM - RPMM: Recursively Partitioned Mixture Model.
  • RSNNS - RSNNS: Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS).
  • RWeka - RWeka: R/Weka interface.
  • RXshrink - RXshrink: Maximum Likelihood Shrinkage via Generalized Ridge or Least Angle Regression.
  • sda - sda: Shrinkage Discriminant Analysis and CAT Score Variable Selection. [Deprecated]
  • spectralGraphTopology - spectralGraphTopology: Learning Graphs from Data via Spectral Constraints.
  • SuperLearner - Multi-algorithm ensemble learning packages.
  • svmpath - svmpath: svmpath: the SVM Path algorithm. [Deprecated]
  • tgp - tgp: Bayesian treed Gaussian process models. [Deprecated]
  • tree - tree: Classification and regression trees.
  • varSelRF - varSelRF: Variable selection using random forests.
  • XGBoost.R - R binding for eXtreme Gradient Boosting (Tree) Library.
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly to R.
  • igraph - binding to igraph library - General purpose graph library.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • TDSP-Utilities - Two data science utilities in R from Microsoft: 1) Interactive Data Exploration, Analysis, and Reporting (IDEAR) ; 2) Automated Modeling and Reporting (AMR).

Data Manipulation | Data Analysis | Data Visualization

  • dplyr - A data manipulation package that helps to solve the most common data manipulation problems.
  • ggplot2 - A data visualization package based on the grammar of graphics.
  • tmap for visualizing geospatial data with static maps and leaflet for interactive maps
  • tm and quanteda are the main packages for managing, analyzing, and visualizing textual data.
  • shiny is the basis for truly interactive displays and dashboards in R. However, some measure of interactivity can be achieved with htmlwidgets bringing javascript libraries to R. These include, plotly, dygraphs, highcharter, and several others.

SAS

General-Purpose Machine Learning

  • Visual Data Mining and Machine Learning - Interactive, automated, and programmatic modeling with the latest machine learning algorithms in and end-to-end analytics environment, from data prep to deployment. Free trial available.
  • Enterprise Miner - Data mining and machine learning that creates deployable models using a GUI or code.
  • Factory Miner - Automatically creates deployable machine learning models across numerous market or customer segments using a GUI.

Data Analysis / Data Visualization

  • SAS/STAT - For conducting advanced statistical analysis.
  • University Edition - FREE! Includes all SAS packages necessary for data analysis and visualization, and includes online SAS courses.

Natural Language Processing

Demos and Scripts

  • ML_Tables - Concise cheat sheets containing machine learning best practices.
  • enlighten-apply - Example code and materials that illustrate applications of SAS machine learning techniques.
  • enlighten-integration - Example code and materials that illustrate techniques for integrating SAS with other analytics technologies in Java, PMML, Python and R.
  • enlighten-deep - Example code and materials that illustrate using neural networks with several hidden layers in SAS.
  • dm-flow - Library of SAS Enterprise Miner process flow diagrams to help you learn by example about specific data mining topics.

Scala

Natural Language Processing

  • ScalaNLP - ScalaNLP is a suite of machine learning and numerical computing libraries.
  • Breeze - Breeze is a numerical processing library for Scala.
  • Chalk - Chalk is a natural language processing library. [Deprecated]
  • FACTORIE - FACTORIE is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.
  • Montague - Montague is a semantic parsing library for Scala with an easy-to-use DSL.
  • Spark NLP - Natural language processing library built on top of Apache Spark ML to provide simple, performant, and accurate NLP annotations for machine learning pipelines, that scale easily in a distributed environment.

Data Analysis / Data Visualization

  • NDScala - N-dimensional arrays in Scala 3. Think NumPy ndarray, but with compile-time type-checking/inference over shapes, tensor/axis labels & numeric data types
  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • Scalding - A Scala API for Cascading.
  • Summing Bird - Streaming MapReduce with Scalding and Storm.
  • Algebird - Abstract Algebra for Scala.
  • xerial - Data management utilities for Scala. [Deprecated]
  • PredictionIO - PredictionIO, a machine learning server for software developers and data engineers.
  • BIDMat - CPU and GPU-accelerated matrix library intended to support large-scale exploratory data analysis.
  • Flink - Open source platform for distributed stream and batch data processing.
  • Spark Notebook - Interactive and Reactive Data Science using Scala and Spark.

General-Purpose Machine Learning

  • Microsoft ML for Apache Spark -> A distributed machine learning framework Apache Spark
  • ONNX-Scala - An ONNX (Open Neural Network eXchange) API and backend for typeful, functional deep learning in Scala (3).
  • DeepLearning.scala - Creating statically typed dynamic neural networks from object-oriented & functional programming constructs.
  • Conjecture - Scalable Machine Learning in Scalding.
  • brushfire - Distributed decision tree ensemble learning in Scala.
  • ganitha - Scalding powered machine learning. [Deprecated]
  • adam - A genomics processing engine and specialized file format built using Apache Avro, Apache Spark and Parquet. Apache 2 licensed.
  • bioscala - Bioinformatics for the Scala programming language
  • BIDMach - CPU and GPU-accelerated Machine Learning Library.
  • Figaro - a Scala library for constructing probabilistic models.
  • H2O Sparkling Water - H2O and Spark interoperability.
  • FlinkML in Apache Flink - Distributed machine learning library in Flink.
  • DynaML - Scala Library/REPL for Machine Learning Research.
  • Saul - Flexible Declarative Learning-Based Programming.
  • SwiftLearner - Simply written algorithms to help study ML or write your own implementations.
  • Smile - Statistical Machine Intelligence and Learning Engine.
  • doddle-model - An in-memory machine learning library built on top of Breeze. It provides immutable objects and exposes its functionality through a scikit-learn-like API.
  • TensorFlow Scala - Strongly-typed Scala API for TensorFlow.

Scheme

Neural Networks

Swift

General-Purpose Machine Learning

  • Bender - Fast Neural Networks framework built on top of Metal. Supports TensorFlow models.
  • Swift AI - Highly optimized artificial intelligence and machine learning library written in Swift.
  • Swift for Tensorflow - a next-generation platform for machine learning, incorporating the latest research across machine learning, compilers, differentiable programming, systems design, and beyond.
  • BrainCore - The iOS and OS X neural network framework.
  • swix - A bare bones library that includes a general matrix language and wraps some OpenCV for iOS development. [Deprecated]
  • AIToolbox - A toolbox framework of AI modules written in Swift: Graphs/Trees, Linear Regression, Support Vector Machines, Neural Networks, PCA, KMeans, Genetic Algorithms, MDP, Mixture of Gaussians.
  • MLKit - A simple Machine Learning Framework written in Swift. Currently features Simple Linear Regression, Polynomial Regression, and Ridge Regression.
  • Swift Brain - The first neural network / machine learning library written in Swift. This is a project for AI algorithms in Swift for iOS and OS X development. This project includes algorithms focused on Bayes theorem, neural networks, SVMs, Matrices, etc...
  • Perfect TensorFlow - Swift Language Bindings of TensorFlow. Using native TensorFlow models on both macOS / Linux.
  • PredictionBuilder - A library for machine learning that builds predictions using a linear regression.
  • Awesome CoreML - A curated list of pretrained CoreML models.
  • Awesome Core ML Models - A curated list of machine learning models in CoreML format.

TensorFlow

General-Purpose Machine Learning

Tools

Neural Networks

  • layer - Neural network inference from the command line

Misc

  • Weaviate – Weaviate is an open source vector search engine and vector database. Weaviate uses machine learning to vectorize and store data, and to find answers to natural language queries. With Weaviate you can also bring your custom ML models to production scale.
  • MLReef - MLReef is an end-to-end development platform using the power of git to give structure and deep collaboration possibilities to the ML development process.
  • Pinecone - Vector database for applications that require real-time, scalable vector embedding and similarity search.
  • CatalyzeX - Browser extension (Chrome and Firefox) that automatically finds and shows code implementations for machine learning papers anywhere: Google, Twitter, Arxiv, Scholar, etc.
  • ML Workspace - All-in-one web-based IDE for machine learning and data science. The workspace is deployed as a docker container and is preloaded with a variety of popular data science libraries (e.g., Tensorflow, PyTorch) and dev tools (e.g., Jupyter, VS Code).
  • Notebooks - A starter kit for Jupyter notebooks and machine learning. Companion docker images consist of all combinations of python versions, machine learning frameworks (Keras, PyTorch and Tensorflow) and CPU/CUDA versions.
  • DVC - Data Science Version Control is an open-source version control system for machine learning projects with pipelines support. It makes ML projects reproducible and shareable.
  • DVClive - Python library for experiment metrics logging into simply formatted local files.
  • Kedro - Kedro is a data and development workflow framework that implements best practices for data pipelines with an eye towards productionizing machine learning models.
  • guild.ai - Tool to log, analyze, compare and "optimize" experiments. It's cross-platform and framework independent, and provided integrated visualizers such as tensorboard.
  • Sacred - Python tool to help you configure, organize, log and reproduce experiments. Like a notebook lab in the context of Chemistry/Biology. The community has built multiple add-ons leveraging the proposed standard.
  • MLFlow - platform to manage the ML lifecycle, including experimentation, reproducibility and deployment. Framework and language agnostic, take a look at all the built-in integrations.
  • Weights & Biases - Machine learning experiment tracking, dataset versioning, hyperparameter search, visualization, and collaboration
  • More tools to improve the ML lifecycle: Catalyst, PachydermIO. The following are Github-alike and targeting teams Weights & Biases, Neptune.ai, Comet.ml, Valohai.ai, DAGsHub.
  • MachineLearningWithTensorFlow2ed - a book on general purpose machine learning techniques regression, classification, unsupervised clustering, reinforcement learning, auto encoders, convolutional neural networks, RNNs, LSTMs, using TensorFlow 1.14.1.
  • m2cgen - A tool that allows the conversion of ML models into native code (Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart) with zero dependencies.
  • CML - A library for doing continuous integration with ML projects. Use GitHub Actions & GitLab CI to train and evaluate models in production like environments and automatically generate visual reports with metrics and graphs in pull/merge requests. Framework & language agnostic.
  • Pythonizr - An online tool to generate boilerplate machine learning code that uses scikit-learn.
  • Flyte - Flyte makes it easy to create concurrent, scalable, and maintainable workflows for machine learning and data processing.
  • Chaos Genius - ML powered analytics engine for outlier/anomaly detection and root cause analysis.

Books

  • Distributed Machine Learning Patterns - This book teaches you how to take machine learning models from your personal laptop to large distributed clusters. You’ll explore key concepts and patterns behind successful distributed machine learning systems, and learn technologies like TensorFlow, Kubernetes, Kubeflow, and Argo Workflows directly from a key maintainer and contributor, with real-world scenarios and hands-on projects.
  • Grokking Machine Learning - Grokking Machine Learning teaches you how to apply ML to your projects using only standard Python code and high school-level math.
  • Machine Learning Bookcamp - Learn the essentials of machine learning by completing a carefully designed set of real-world projects.

* Netron - An opensource viewer for neural network, deep learning and machine learning models * Teachable Machine - Train Machine Learning models on the fly to recognize your own images, sounds, & poses. * Model Zoo - Discover open source deep learning code and pretrained models.

Credits

  • Some of the python libraries were cut-and-pasted from vinta
  • References for Go were mostly cut-and-pasted from gopherdata

Machine Learning & Deep Learning Tutorials Awesome

Contents

Introduction

Interview Resources

Artificial Intelligence

Genetic Algorithms

Statistics

Useful Blogs

Resources on Quora

Kaggle Competitions WriteUp

Cheat Sheets

Classification

Linear Regression

Logistic Regression

Model Validation using Resampling

Deep Learning

Natural Language Processing

Computer Vision

Support Vector Machine

Reinforcement Learning

Decision Trees

Random Forest / Bagging

Boosting

Ensembles

Stacking Models

Vapnik–Chervonenkis Dimension

Bayesian Machine Learning

Semi Supervised Learning

Optimization

Other Tutorials

  • For a collection of Data Science Tutorials using R, please refer to this list.

  • For a collection of Data Science Tutorials using Python, please refer to this list.

Awesome Machine Learning with Ruby

Awesome Support Me

[RubyNLP | RubyDataScience | RubyInterop]

Awesome Machine Learning with Ruby

Curated List of Ruby Machine Learning Links and Resources

Machine Learning is a field of Computational Science - often nested under AI research - with many practical applications due to the ability of resulting algorithms to systematically implement a specific solution without explicit programmer's instructions. Obviously many algorithms need a definition of features to look at or a biggish training set of data to derive the solution from.

This curated list comprises awesome libraries, data sources, tutorials and presentations about Machine Learning utilizing the Ruby programming language.

A lot of useful resources on this list come from the development by The Ruby Science Foundation, our contributors and our own day to day work on various ML applications.

:sparkles: Every contribution is welcome! Add links through pull requests or create an issue to start a discussion.

Follow us on Twitter and please spread the word using the #RubyML hash tag!

Contents

:sparkles: Tutorials

Please help us to fill out this section! :smiley: - Ruby neural networks - How to implement linear regression in Ruby [code] - How to implement classification using logistic regression in Ruby - How to implement simple binary classification using a Neural Network in Ruby [code] - How to implement classification using a SVM in Ruby [code] - Unsupervised learning using k-means clustering in Ruby [code] - Teaching an AI to play a simple game using Q-Learning in Ruby [code] - Teaching a Neural Network to play a game using Q-Learning in Ruby [code] - Using the Python scikit-learn machine learning library in Ruby using PyCall [code] - How to evolve neural networks in Ruby using the Machine Learning Workbench

Machine Learning Libraries

Machine Learning algorithms in pure Ruby or written in other programming languages with appropriate bindings for Ruby.

Frameworks

  • weka - JRuby bindings for Weka, different ML algorithms implemented through Weka.
  • ai4r - Artificial Intelligence for Ruby.
  • classifier-reborn - General classifier module to allow Bayesian and other types of classifications. [dep: GLS]
  • scoruby - Ruby scoring API for PMML (Predictive Model Markup Language).
  • rblearn - Feature Extraction and Crossvalidation library.
  • data_modeler - Model your data with machine learning. Ample test coverage, examples to start fast, complete documentation. Production ready since 1.0.0.
  • shogun - Polyfunctional and mature machine learning toolbox with Ruby bindings.
  • aws-sdk-machinelearning - Machine Learning API of the Amazon Web Services.
  • azure_mgmt_machine_learning - Machine Learning API of the Microsoft Azure.
  • machine_learning_workbench - Growing machine learning framework written in pure Ruby, high performance computing using Numo, CUDA bindings through Cumo. Currently implementating neural networks, evolutionary strategies, vector quantization, and plenty of examples and utilities.
  • Deep NeuroEvolution - Experimental setup based on the machine_learning_workbench towards searching for deep neural networks (rather than training) using evolutionary algorithms. Applications to the OpenAI Gym using PyCall.
  • rumale - Machine Learninig toolkit in Ruby with wide range of implemented algorithms (SVM, Logistic Regression, Linear Regression, Random Forest etc.) and interfaces similar to Scikit-Learn in Python.
  • eps - Bayesian Classification and Linear Regression with exports using PMML and an alternative backend using GSL.

Neural networks

  • neural-net-ruby - Neural network written in Ruby.
  • ruby-fann - Ruby bindings to the Fast Artificial Neural Network Library (FANN).
  • cerebrum - Experimental implementation for Artificial Neural Networks in Ruby.
  • tlearn-rb - Recurrent Neural Network library for Ruby.
  • brains - Feed-forward neural networks for JRuby based on brains.
  • machine_learning_workbench - Framework including pure-Ruby implementation of both feed-forward and recurrent neural networks (fully connected). Training available using neuroevolution (Natural Evolution Strategies algorithms).
  • rann - Flexible Ruby ANN implementation with backprop (through-time, for recurrent nets), gradient checking, adagrad, and parallel batch execution.

Deep learning

Kernel methods

Evolutionary algorithms

  • machine_learning_workbench - Framework including pure-Ruby implementations of Natural Evolution Strategy algorithms (black-box optimization), specifically Exponential NES (XNES), Separable NES (sNES), Block-Diagonal NES (BDNES) and more. Applications include neural network search/training (neuroevolution).
  • simple_ga - Simplest Genetic Algorithms implementation in Ruby.

Bayesian methods

  • linnaeus - Redis-backed Bayesian classifier.
  • naive_bayes - Simple Naive Bayes classifier.
  • nbayes - Full-featured, Ruby implementation of Naive Bayes.

Decision trees

Clustering

  • flann - Fast Library for Approximate Nearest Neighbors. [flann]
  • kmeans-clusterer - k-means clustering in Ruby.
  • k_means - Attempting to build a fast, memory efficient K-Means program.
  • knn - Simple K Nearest Neighbour Algorithm.
  • annoy-rb - bindings for the Annoy (Approximate Nearest Neighbors Oh Yeah).

Linear classifiers

  • liblinear-ruby-swig - Ruby interface to LIBLINEAR (much more efficient than LIBSVM for text classification).
  • liblinear-ruby - Ruby interface to LIBLINEAR using SWIG.

Statistical models

  • rtimbl - Memory based learners from the Timbl framework.
  • lda-ruby - Ruby implementation of the LDA (Latent Dirichlet Allocation) for automatic Topic Modelling and Document Clustering.
  • maxent_string_classifier - JRuby maximum entropy classifier for string data, based on the OpenNLP Maxent framework.
  • omnicat - Generalized rack framework for text classifications.
  • omnicat-bayes - Naive Bayes text classification implementation as an OmniCat classifier strategy. [dep: bundled]

Gradient boosting

Applications of machine learning

  • phashion - Ruby wrapper around pHash, the perceptual hash library for detecting duplicate multimedia files. [ImageMagick | libjpeg]

Data structures

If you're going to implement your own ML algorithms you're probably interested in storing your feature sets efficiently. Look for appropriate data structures in our Data Science with Ruby list.

Data visualization

Please refer to the Data Visualization section on the Data Science with Ruby list.

Articles, Posts, Talks, and Presentations

Projects and Code Examples

Heroku buildpacks

Books, Blogs, Channels

Community

License

Creative Commons Zero 1.0 Awesome ML with Ruby by Andrei Beliankou and Contributors.

To the extent possible under law, the person who associated CC0 with Awesome ML with Ruby has waived all copyright and related or neighboring rights to Awesome ML with Ruby.

You should have received a copy of the CC0 legalcode along with this work. If not, see https://creativecommons.org/publicdomain/zero/1.0/.

Since iOS 11, Apple released Core ML framework to help developers integrate machine learning models into applications. The official documentation

We've put up the largest collection of machine learning models in Core ML format, to help iOS, macOS, tvOS, and watchOS developers experiment with machine learning techniques.

If you've converted a Core ML model, feel free to submit a pull request.

Recently, we've included visualization tools. And here's one Netron.

Awesome PRs Welcome

Models

Image - Metadata/Text

Models that take image data as input and output useful information about the image. * TextDetection - Detecting text using Vision built-in model in real-time. Download | Demo | Reference * PhotoAssessment - Photo Assessment using Core ML and Metal. Download | Demo | Reference * PoseEstimation - Estimating human pose from a picture for mobile. Download | Demo | Reference * MobileNet - Detects the dominant objects present in an image. Download | Demo | Reference * Places CNN - Detects the scene of an image from 205 categories such as bedroom, forest, coast etc. Download | Demo | Reference * Inception v3 - Detects the dominant objects present in an image. Download | Demo | Reference * ResNet50 - Detects the dominant objects present in an image. Download | Demo | Reference * VGG16 - Detects the dominant objects present in an image. Download | Demo | Reference * Car Recognition - Predict the brand & model of a car. Download | Demo | Reference * YOLO - Recognize what the objects are inside a given image and where they are in the image. Download | Demo | Reference * AgeNet - Predict a person's age from one's portrait. Download | Demo | Reference * GenderNet - Predict a person's gender from one's portrait. Download | Demo | Reference * MNIST - Predict handwritten (drawn) digits from images. Download | Demo | Reference * EmotionNet - Predict a person's emotion from one's portrait. Download | Demo | Reference * SentimentVision - Predict positive or negative sentiments from images. Download | Demo | Reference * Food101 - Predict the type of foods from images. Download | Demo | Reference * Oxford102 - Detect the type of flowers from images. Download | Demo | Reference * FlickrStyle - Detect the artistic style of images. Download | Demo | Reference * RN1015k500 - Predict the location where a picture was taken. Download | Demo | Reference * Nudity - Classifies an image either as NSFW (nude) or SFW (not nude) Download | Demo | Reference * TextRecognition (ML Kit) - Recognizing text using ML Kit built-in model in real-time. Download | Demo | Reference * ImageSegmentation - Segment the pixels of a camera frame or image into a predefined set of classes. Download | Demo | Reference * DepthPrediction - Predict the depth from a single image. Download | Demo | Reference

Image - Image

Models that transform images. * HED - Detect nested edges from a color image. Download | Demo | Reference * AnimeScale2x - Process a bicubic-scaled anime-style artwork Download | Demo | Reference

Text - Metadata/Text

Models that process text data * Sentiment Polarity - Predict positive or negative sentiments from sentences. Download | Demo | Reference * DocumentClassification - Classify news articles into 1 of 5 categories. Download | Demo | Reference * iMessage Spam Detection - Detect whether a message is spam. Download | Demo | Reference * NamesDT - Gender Classification using DecisionTreeClassifier Download | Demo | Reference * Personality Detection - Predict personality based on user documents (sentences). Download | Demo | Reference * BERT for Question answering - Swift Core ML 3 implementation of BERT for Question answering Download | Demo | Reference * GPT-2 - OpenAI GPT-2 Text generation (Core ML 3) Download | Demo | Reference

Miscellaneous

Visualization Tools

Tools that help visualize CoreML Models * Netron

Supported formats

List of model formats that could be converted to Core ML with examples * Caffe * Keras * XGBoost * Scikit-learn * MXNet * LibSVM * Torch7

The Gold

Collections of machine learning models that could be converted to Core ML

Individual machine learning models that could be converted to Core ML. We'll keep adjusting the list as they become converted. * LaMem Score the memorability of pictures. * ILGnet The aesthetic evaluation of images. * Colorization Automatic colorization using deep neural networks. * Illustration2Vec Estimating a set of tags and extracting semantic feature vectors from given illustrations. * CTPN Detecting text in natural image. * Image Analogy Find semantically-meaningful dense correspondences between two input images. * iLID Automatic spoken language identification. * Fashion Detection Cloth detection from images. * Saliency The prediction of salient areas in images has been traditionally addressed with hand-crafted features. * Face Detection Detect face from image. * mtcnn Joint Face Detection and Alignment. * deephorizon Single image horizon line estimation.

Contributing and License

  • See the guide
  • Distributed under the MIT license. See LICENSE for more information.

Awesome H2O Awesome Powered by H2O.ai

Below is a curated list of all the awesome projects, applications, research, tutorials, courses and books that use H2O, an open source, distributed machine learning platform. H2O offers parallelized implementations of many supervised and unsupervised machine learning algorithms such as Generalized Linear Models, Gradient Boosting Machines (including XGBoost), Random Forests, Deep Neural Networks (Deep Learning), Stacked Ensembles, Naive Bayes, Cox Proportional Hazards, K-means, PCA, Word2Vec, as well as a fully automatic machine learning algorithm (AutoML).

H2O.ai produces many tutorials, blog posts, presentations and videos about H2O, but the list below is comprised of awesome content produced by the greater H2O user community.

We are just getting started with this list, so pull requests are very much appreciated! 🙏 Please review the contribution guidelines before making a pull request. If you're not a GitHub user and want to make a contribution, please send an email to community@h2o.ai.

If you think H2O is awesome too, please ⭐ the H2O GitHub repository.

Contents

Blog Posts & Tutorials

Books

Research Papers

Benchmarks

Presentations

Courses

Software

License

CC0

To the extent possible under law, H2O.ai has waived all copyright and related or neighboring rights to this work.

Awesome Software Engineering for Machine Learning AwesomePRs Welcome

Software Engineering for Machine Learning are techniques and guidelines for building ML applications that do not concern the core ML problem -- e.g. the development of new algorithms -- but rather the surrounding activities like data ingestion, coding, testing, versioning, deployment, quality control, and team collaboration. Good software engineering practices enhance development, deployment and maintenance of production level applications using machine learning components.

⭐ Must-read

🎓 Scientific publication


Based on this literature, we compiled a survey on the adoption of software engineering practices for applications with machine learning components.

Feel free to take and share the survey and to read more!

Contents

Broad Overviews

These resources cover all aspects. - AI Engineering: 11 Foundational Practices ⭐ - Best Practices for Machine Learning Applications - Engineering Best Practices for Machine Learning ⭐ - Hidden Technical Debt in Machine Learning Systems 🎓⭐ - Rules of Machine Learning: Best Practices for ML Engineering ⭐ - Software Engineering for Machine Learning: A Case Study 🎓⭐

Data Management

How to manage the data sets you use in machine learning.

Model Training

How to organize your model training experiments.

Deployment and Operation

How to deploy and operate your models in a production environment.

Social Aspects

How to organize teams and projects to ensure effective collaboration and accountability.

Governance

Tooling

Tooling can make your life easier.

We only share open source tools, or commercial platforms that offer substantial free packages for research.

  • Aim - Aim is an open source experiment tracking tool.
  • Airflow - Programmatically author, schedule and monitor workflows.
  • Alibi Detect - Python library focused on outlier, adversarial and drift detection.
  • Archai - Neural architecture search.
  • Data Version Control (DVC) - DVC is a data and ML experiments management tool.
  • Facets Overview / Facets Dive - Robust visualizations to aid in understanding machine learning datasets.
  • FairLearn - A toolkit to assess and improve the fairness of machine learning models.
  • Git Large File System (LFS) - Replaces large files such as datasets with text pointers inside Git.
  • Great Expectations - Data validation and testing with integration in pipelines.
  • HParams - A thoughtful approach to configuration management for machine learning projects.
  • Kubeflow - A platform for data scientists who want to build and experiment with ML pipelines.
  • Label Studio - A multi-type data labeling and annotation tool with standardized output format.
  • LiFT - Linkedin fairness toolkit.
  • MLFlow - Manage the ML lifecycle, including experimentation, deployment, and a central model registry.
  • Model Card Toolkit - Streamlines and automates the generation of model cards; for model documentation.
  • Neptune.ai - Experiment tracking tool bringing organization and collaboration to data science projects.
  • Neuraxle - Sklearn-like framework for hyperparameter tuning and AutoML in deep learning projects.
  • OpenML - An inclusive movement to build an open, organized, online ecosystem for machine learning.
  • PyTorch Lightning - The lightweight PyTorch wrapper for high-performance AI research. Scale your models, not the boilerplate.
  • REVISE: REvealing VIsual biaSEs - Automatically detect bias in visual data sets.
  • Robustness Metrics - Lightweight modules to evaluate the robustness of classification models.
  • Seldon Core - An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models on Kubernetes.
  • Spark Machine Learning - Spark’s ML library consisting of common learning algorithms and utilities.
  • TensorBoard - TensorFlow's Visualization Toolkit.
  • Tensorflow Extended (TFX) - An end-to-end platform for deploying production ML pipelines.
  • Tensorflow Data Validation (TFDV) - Library for exploring and validating machine learning data. Similar to Great Expectations, but for Tensorflow data.
  • Weights & Biases - Experiment tracking, model optimization, and dataset versioning.

Contribute

Contributions welcomed! Read the contribution guidelines first

Awesome AI in Finance

Awesome

Machine learning algorithm and useful tools use in financial market.

We collect all market include traditional market like stock/futures/currencies and crypto currency markets.

We're right 50.75 percent of the time, but we're 100 percent right 50.75 percent of the time, you can make billions that way. --- Robert Mercer, co-CEO of Renaissance Technologies

Contents

Papers

Courses & Book

Strategies & Research

Time Series Data

Price and Volume process with Technology Analysis Indices

  • 🌟🌟 stockpredictionai - In this noteboook I will create a complete process for predicting stock price movements. Follow along and we will achieve some pretty good results. For that purpose we will use a Generative Adversarial Network (GAN) with LSTM, a type of Recurrent Neural Network, as generator, and a Convolutional Neural Network, CNN, as a discriminator.
  • 🌟 Personae - Personae is a repo of implements and environment of Deep Reinforcement Learning & Supervised Learning for Quantitative Trading.
  • AutomatedStockTrading-DeepQ-Learning - Every day, millions of traders around the world are trying to make money by trading stocks. These days, physical traders are also being replaced by automated trading robots. Algorithmic trading market has experienced significant growth rate and large number of firms are using it. I have tried to build a Deep Q-learning reinforcement agent model.
  • tf_deep_rl_trader - Trading Environment(OpenAI Gym) + PPO(TensorForce).
  • trading-gym - This trading-gym is the first trading for agent to train with episode of short term trading itself.
  • trading-rl - Deep Reinforcement Learning for Financial Trading using Price Trailing.
  • deep_rl_trader - Trading Environment(OpenAI Gym) + DDQN (Keras-RL).
  • 🌟 RL-Stock - 如何用深度强化学习自动炒股.
  • Quantitative-Trading - Papers and Code Implements for Quantitative-Trading.
  • gym-trading - Environment for reinforcement-learning algorithmic trading models.
  • zenbrain - A framework for machine-learning bots.
  • DeepLearningNotes - Machine Learning in Quant analysis.
  • stock_market_reinforcement_learning - Stock Trading Market OpenAI Gym Environment with Deep Reinforcement Learning using Keras.

Portfolio Management

  • Deep-Reinforcement-Stock-Trading - A light-weight deep reinforcement learning framework for portfolio management. This project explores the possibility of applying deep reinforcement learning algorithms to stock trading in a highly modular and scalable framework.
  • qtrader - Reinforcement Learning for Portfolio Management.
  • PGPortfolio - PGPortfolio - Policy Gradient Portfolio, the source code of "A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem.
  • DeepDow - Portfolio optimization with deep learning.

High Frequency Trading

Event Drive

  • 🌟🌟 stockpredictionai - In this noteboook I will create a complete process for predicting stock price movements. Follow along and we will achieve some pretty good results. For that purpose we will use a Generative Adversarial Network (GAN) with LSTM, a type of Recurrent Neural Network, as generator, and a Convolutional Neural Network, CNN, as a discriminator.
  • 🌟 trump2cash - A stock trading bot powered by Trump tweets.

Crypto Currencies Strategies

Technical Analysis

  • quant-trading - Python quantitative trading strategies.
  • Gekko-Bot-Resources - Gekko bot resources.
  • gekko_tools - Gekko strategies, tools etc.
  • gekko RSI_WR - Gekko RSI_WR strategies.
  • gekko HL - Calculate down peak and trade on.
  • EthTradingAlgorithm - Ethereum trading algorithm using Python 3.5 and the library ZipLine.
  • gekko_trading_stuff - A dumping ground for my files I use with this awesome crypto currency trading platform.
  • forex.analytics - Node.js native library performing technical analysis over an OHLC dataset with use of genetic algorithmv.
  • Bitcoin_MACD_Strategy - Bitcoin - MACD Crossover Trading Strategy Backtest.
  • crypto-signal - Automated Crypto Trading & Technical Analysis (TA) Bot for Bittrex, Binance, GDAX, and more! (250+ coins).
  • Gekko-Strategies - Strategies to Gekko trading bot with backtests results and some useful tools.
  • gekko-gannswing - Gann's Swing trade strategy for Gekko trade bot.

Lottery & Gamble

Arbitrage

  • ArbitrageBot - Arbitrage bot that currently works on bittrex & poloniex.
  • r2 - R2 Bitcoin Arbitrager is an automatic arbitrage trading system powered by Node.js + TypeScript.
  • cryptocurrency-arbitrage - A cryptocurrency arbitrage opportunity calculator. Over 800 currencies and 50 markets.
  • bitcoin-arbitrage - Bitcoin arbitrage - opportunity detector.
  • blackbird - Blackbird Bitcoin Arbitrage: a long/short market-neutral strategy.

Data Sources

Traditional Markets

  • 🌟 Quandl - Get millions of financial and economic datasets from hundreds of publishers via a single free API.
  • yahoo-finance - Python module to get stock data from Yahoo! Finance.
  • Tushare - TuShare is a utility for crawling historical data of China stocks.

Crypto Currencies

  • CryptoInscriber - A live cryptocurrency historical trade data blotter. Download live historical trade data from any cryptoexchange, be it for machine learning, backtesting/visualizing trading strategies or for Quantopian/Zipline.
  • Gekko-Datasets - Gekko Trading Bot dataset dumps. Ready to use and download history files in SQLite format.

Research Tools

  • JAQS - An open source quant strategies research platform.
  • pyfolio - Portfolio and risk analytics in Python.
  • alphalens - Performance analysis of predictive (alpha) stock factors.
  • empyrical - Common financial risk and performance metrics. Used by zipline and pyfolio.
  • zvt - Zero vector trader.

Trading System

For Back Test & Live trading

Traditional Market

System

  • 🌟🌟 zipline - Zipline, a Pythonic Algorithmic Trading Library.
  • 🌟 TradingView - Get real-time information and market insights.
  • rqalpha - A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities.
  • backtrader - Python Backtesting library for trading strategies.
  • kungfu - Kungfu Master Trading System.

Combine & Rebuild

Crypto Currencies

  • zenbot - Zenbot is a command-line cryptocurrency trading bot using Node.js and MongoDB.
  • bot18 - Bot18 is a high-frequency cryptocurrency trading bot developed by Zenbot.
  • magic8bot - Magic8bot is a cryptocurrency trading bot using Node.js and MongoDB.
  • catalyst - An Algorithmic Trading Library for Crypto-Assets in Python.
  • QuantResearchDev - Quant Research dev & Traders open source project.
  • MACD - Zenbot Macd Auto-Trader.
  • abu - A quant trading system base on python.

Plugins

  • easytrader
  • CoinMarketCapBacktesting - This project tests bt and Quantopian Zipline as backtesting frameworks for coin trading strategy.
  • Gekko-BacktestTool - Batch backtest, import and strategy params optimalization for Gekko Trading Bot. With one command you will run any number of backtests.

TA Lib

  • pandas_talib - A Python Pandas implementation of technical analysis indicators.
  • finta - Common financial technical indicators implemented in Python-Pandas (70+ indicators).
  • tulipnode - Tulip Node is the official Node.js wrapper for Tulip Indicators. It provides over 100 technical analysis overlay and indicator functions.
  • techan.js - A visual, technical analysis and charting (Candlestick, OHLC, indicators) library built on D3.

Exchange API

Do it in real world!

  • IbPy - Python API for the Interactive Brokers on-line trading system.
  • HuobiFeeder - Connect HUOBIPRO exchange, get market/historical data for ABAT trading platform backtest/analysis and live trading.
  • ctpwrapper - Shanghai future exchange CTP api.

Framework

  • tf-quant-finance - High-performance TensorFlow library for quantitative finance.

Visualizing

  • playground - Play with neural networks.
  • netron - Visualizer for deep learning and machine learning models.

GYM Environment

  • 🌟 TradingGym - Trading and Backtesting environment for training reinforcement learning agent or simple rule base algo.
  • TradzQAI - Trading environnement for RL agents, backtesting and training.
  • btgym - Scalable, event-driven, deep-learning-friendly backtesting library.

Articles

Others

  • zipline-tensorboard - TensorBoard as a Zipline dashboard http://jimgoo.com/tensorboard-and-zip.
  • gekko-quasar-ui - An UI port for gekko trading bot using Quasar framework.

Other Resource

Awesome JAX AwesomeJAX Logo

JAX brings automatic differentiation and the XLA compiler together through a NumPy-like API for high performance machine learning research on accelerators like GPUs and TPUs.

This is a curated list of awesome JAX libraries, projects, and other resources. Contributions are welcome!

Contents

Libraries

  • Neural Network Libraries
    • Flax - Centered on flexibility and clarity.
    • Haiku - Focused on simplicity, created by the authors of Sonnet at DeepMind.
    • Objax - Has an object oriented design similar to PyTorch.
    • Elegy - A High Level API for Deep Learning in JAX. Supports Flax, Haiku, and Optax.
    • Trax - "Batteries included" deep learning library focused on providing solutions for common workloads.
    • Jraph - Lightweight graph neural network library.
    • Neural Tangents - High-level API for specifying neural networks of both finite and infinite width.
    • HuggingFace - Ecosystem of pretrained Transformers for a wide range of natural language tasks (Flax).
    • Equinox - Callable PyTrees and filtered JIT/grad transformations => neural networks in JAX.
  • NumPyro - Probabilistic programming based on the Pyro library.
  • Chex - Utilities to write and test reliable JAX code.
  • Optax - Gradient processing and optimization library.
  • RLax - Library for implementing reinforcement learning agents.
  • JAX, M.D. - Accelerated, differential molecular dynamics.
  • Coax - Turn RL papers into code, the easy way.
  • Distrax - Reimplementation of TensorFlow Probability, containing probability distributions and bijectors.
  • cvxpylayers - Construct differentiable convex optimization layers.
  • TensorLy - Tensor learning made simple.
  • NetKet - Machine Learning toolbox for Quantum Physics.

New Libraries

This section contains libraries that are well-made and useful, but have not necessarily been battle-tested by a large userbase yet.

  • Neural Network Libraries
    • FedJAX - Federated learning in JAX, built on Optax and Haiku.
    • Equivariant MLP - Construct equivariant neural network layers.
    • jax-resnet - Implementations and checkpoints for ResNet variants in Flax.
    • Parallax - Immutable Torch Modules for JAX.
  • jax-unirep - Library implementing the UniRep model for protein machine learning applications.
  • jax-flows - Normalizing flows in JAX.
  • sklearn-jax-kernels - scikit-learn kernel matrices using JAX.
  • jax-cosmo - Differentiable cosmology library.
  • efax - Exponential Families in JAX.
  • mpi4jax - Combine MPI operations with your Jax code on CPUs and GPUs.
  • imax - Image augmentations and transformations.
  • FlaxVision - Flax version of TorchVision.
  • Oryx - Probabilistic programming language based on program transformations.
  • Optimal Transport Tools - Toolbox that bundles utilities to solve optimal transport problems.
  • delta PV - A photovoltaic simulator with automatic differentation.
  • jaxlie - Lie theory library for rigid body transformations and optimization.
  • BRAX - Differentiable physics engine to simulate environments along with learning algorithms to train agents for these environments.
  • flaxmodels - Pretrained models for Jax/Flax.
  • CR.Sparse - XLA accelerated algorithms for sparse representations and compressive sensing.
  • exojax - Automatic differentiable spectrum modeling of exoplanets/brown dwarfs compatible to JAX.
  • JAXopt - Hardware accelerated (GPU/TPU), batchable and differentiable optimizers in JAX.
  • PIX - PIX is an image processing library in JAX, for JAX.
  • bayex - Bayesian Optimization powered by JAX.
  • JaxDF - Framework for differentiable simulators with arbitrary discretizations.
  • tree-math - Convert functions that operate on arrays into functions that operate on PyTrees.
  • jax-models - Implementations of research papers originally without code or code written with frameworks other than JAX.
  • PGMax - A framework for building discrete Probabilistic Graphical Models (PGM's) and running inference inference on them via JAX.
  • EvoJAX - Hardware-Accelerated Neuroevolution
  • evosax - JAX-Based Evolution Strategies
  • SymJAX - Symbolic CPU/GPU/TPU programming.
  • mcx - Express & compile probabilistic programs for performant inference.
  • Einshape - DSL-based reshaping library for JAX and other frameworks.
  • ALX - Open-source library for distributed matrix factorization using Alternating Least Squares, more info in ALX: Large Scale Matrix Factorization on TPUs.
  • Diffrax - Numerical differential equation solvers in JAX.
  • tinygp - The tiniest of Gaussian process libraries in JAX.

Models and Projects

JAX

Flax

Haiku

Trax

  • Reformer - Implementation of the Reformer (efficient transformer) architecture.

Videos

Papers

This section contains papers focused on JAX (e.g. JAX-based library whitepapers, research on JAX, etc). Papers implemented in JAX are listed in the Models/Projects section.

Tutorials and Blog Posts

Community

Contributing

Contributions welcome! Read the contribution guidelines first.

# Awesome XAI [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) A curated list of XAI and Interpretable ML papers, methods, critiques, and resources. Explainable AI (XAI) is a branch of machine learning research which seeks to make various machine learning techniques more understandable.

Contents

Papers

Landmarks

These are some of our favorite papers. They are helpful to understand the field and critical aspects of it. We believe this papers are worth reading in their entirety.

  • Explanation in Artificial Intelligence: Insights from the Social Sciences - This paper provides an introduction to the social science research into explanations. The author provides 4 major findings: (1) explanations are constrastive, (2) explanations are selected, (3) probabilities probably don't matter, (4) explanations are social. These fit into the general theme that explanations are -contextual-.
  • Sanity Checks for Saliency Maps - An important read for anyone using saliency maps. This paper proposes two experiments to determine whether saliency maps are useful: (1) model parameter randomization test compares maps from trained and untrained models, (2) data randomization test compares maps from models trained on the original dataset and models trained on the same dataset with randomized labels. They find that "some widely deployed saliency methods are independent of both the data the model was trained on, and the model parameters".

Surveys

Evaluations

XAI Methods

  • Ada-SISE - Adaptive semantice inpute sampling for explanation.
  • ALE - Accumulated local effects plot.
  • ALIME - Autoencoder Based Approach for Local Interpretability.
  • Anchors - High-Precision Model-Agnostic Explanations.
  • Auditing - Auditing black-box models.
  • BayLIME - Bayesian local interpretable model-agnostic explanations.
  • Break Down - Break down plots for additive attributions.
  • CAM - Class activation mapping.
  • CDT - Confident interpretation of Bayesian decision tree ensembles.
  • CICE - Centered ICE plot.
  • CMM - Combined multiple models metalearner.
  • Conj Rules - Using sampling and queries to extract rules from trained neural networks.
  • CP - Contribution propogation.
  • DecText - Extracting decision trees from trained neural networks.
  • DeepLIFT - Deep label-specific feature learning for image annotation.
  • DTD - Deep Taylor decomposition.
  • ExplainD - Explanations of evidence in additive classifiers.
  • FIRM - Feature importance ranking measure.
  • Fong, et. al. - Meaninful perturbations model.
  • G-REX - Rule extraction using genetic algorithms.
  • Gibbons, et. al. - Explain random forest using decision tree.
  • GoldenEye - Exploring classifiers by randomization.
  • GPD - Gaussian process decisions.
  • GPDT - Genetic program to evolve decision trees.
  • GradCAM - Gradient-weighted Class Activation Mapping.
  • GradCAM++ - Generalized gradient-based visual explanations.
  • Hara, et. al. - Making tree ensembles interpretable.
  • ICE - Individual conditional expectation plots.
  • IG - Integrated gradients.
  • inTrees - Interpreting tree ensembles with inTrees.
  • IOFP - Iterative orthoganol feature projection.
  • IP - Information plane visualization.
  • KL-LIME - Kullback-Leibler Projections based LIME.
  • Krishnan, et. al. - Extracting decision trees from trained neural networks.
  • Lei, et. al. - Rationalizing neural predictions with generator and encoder.
  • LIME - Local Interpretable Model-Agnostic Explanations.
  • LOCO - Leave-one covariate out.
  • LORE - Local rule-based explanations.
  • Lou, et. al. - Accurate intelligibile models with pairwise interactions.
  • LRP - Layer-wise relevance propogation.
  • MCR - Model class reliance.
  • MES - Model explanation system.
  • MFI - Feature importance measure for non-linear algorithms.
  • NID - Neural interpretation diagram.
  • OptiLIME - Optimized LIME.
  • PALM - Partition aware local model.
  • PDA - Prediction Difference Analysis: Visualize deep neural network decisions.
  • PDP - Partial dependence plots.
  • POIMs - Positional oligomer importance matrices for understanding SVM signal detectors.
  • ProfWeight - Transfer information from deep network to simpler model.
  • Prospector - Interactive partial dependence diagnostics.
  • QII - Quantitative input influence.
  • REFNE - Extracting symbolic rules from trained neural network ensembles.
  • RETAIN - Reverse time attention model.
  • RISE - Randomized input sampling for explanation.
  • RxREN - Reverse engineering neural networks for rule extraction.
  • SHAP - A unified approach to interpretting model predictions.
  • SIDU - Similarity, difference, and uniqueness input perturbation.
  • Simonynan, et. al - Visualizing CNN classes.
  • Singh, et. al - Programs as black-box explanations.
  • STA - Interpreting models via Single Tree Approximation.
  • Strumbelj, et. al. - Explanation of individual classifications using game theory.
  • SVM+P - Rule extraction from support vector machines.
  • TCAV - Testing with concept activation vectors.
  • Tolomei, et. al. - Interpretable predictions of tree-ensembles via actionable feature tweaking.
  • Tree Metrics - Making sense of a forest of trees.
  • TreeSHAP - Consistent feature attribute for tree ensembles.
  • TreeView - Feature-space partitioning.
  • TREPAN - Extracting tree-structured representations of trained networks.
  • TSP - Tree space prototypes.
  • VBP - Visual back-propagation.
  • VEC - Variable effect characteristic curve.
  • VIN - Variable interaction network.
  • X-TREPAN - Adapted etraction of comprehensible decision tree in ANNs.
  • Xu, et. al. - Show, attend, tell attention model.

Interpretable Models

Critiques

  • Attention is not Explanation - Authors perform a series of NLP experiments which argue attention does not provide meaningful explanations. They also demosntrate that different attentions can generate similar model outputs.
  • Attention is not --not-- Explanation - This is a rebutal to the above paper. Authors argue that multiple explanations can be valid and that the and that attention can produce a valid explanation, if not -the- valid explanation.
  • Do Not Trust Additive Explanations - Authors argue that addditive explanations (e.g. LIME, SHAP, Break Down) fail to take feature ineractions into account and are thus unreliable.
  • Please Stop Permuting Features An Explanation and Alternatives - Authors demonstrate why permuting features is misleading, especially where there is strong feature dependence. They offer several previously described alternatives.
  • Stop Explaining Black Box Machine Learning Models for High States Decisions and Use Interpretable Models Instead - Authors present a number of issues with explainable ML and challenges to interpretable ML: (1) constructing optimal logical models, (2) constructing optimal sparse scoring systems, (3) defining interpretability and creating methods for specific methods. They also offer an argument for why interpretable models might exist in many different domains.
  • The (Un)reliability of Saliency Methods - Authors demonstrate how saliency methods vary attribution when adding a constant shift to the input data. They argue that methods should fulfill input invariance, that a saliency method mirror the sensistivity of the model with respect to transformations of the input.

Repositories

  • EthicalML/xai - A toolkit for XAI which is focused exclusively on tabular data. It implements a variety of data and model evaluation techniques.
  • MAIF/shapash - SHAP and LIME-based front-end explainer.
  • PAIR-code/what-if-tool - A tool for Tensorboard or Notebooks which allows investigating model performance and fairness.
  • slundberg/shap - A Python module for using Shapley Additive Explanations.

Videos

Follow

Their views aren't necessarily our views. :wink:

Who else should we be following!?

Contributing

Contributions of any kind welcome, just follow the guidelines!

Contributors

Thanks goes to these contributors!