# Concurrent Programming
## Selected stuff (Books)

There are too many platforms and languages with multithreading support. Let's first of all bring here the books which matter, rather than yet another boring platform-specific manual.
* "The Little Book of Semaphores", Allen B. Downey [get free] -- good for acquiring an intuition on solving of basic (and not so basic) synchronization problems using old good semaphores.
* "The Art of Multiprocessor Programming", Maurice Herlihy, Nir Shavit [amazon] -- this book is mostly dedicated to the lock-free synchronization and other advanced topics rather than basic synchronization methods.
* Any good book on condvars?

## Frameworks?

OpenMP, MPI, TBB, TPL, Cilk, Cilk plus, OpenCL, PPL, ParaSail, GCD, fork/join, AMP, CnC, PBB, ArBB, PPL

## Platform and language specific stuff.

* Concurrent programming in Erlang, Future Learn [link]
* Bartosz Milewski - Parallel and Concurrent Haskell [link]

# Distributed Programming
## Video Courses

* Seif Haridi. Distributed Algorithms. [video]
* CS 436: Distributed Computer Systems, University of Waterloo [video]
* Cloud Computing Concepts, University of Illinois, coursera.org [link]

# Functional Programming

* Inroduction to functional programming https://courses.edx.org/courses/course-v1:DelftX+FP101x+3T2015/info
* Category theory foundations https://www.youtube.com/watch?v=ZKmodCApZwk

# Machine Learning and AI

* [coursera machine learning]
* [udacity introduction to artificial intelligence]

# Operational Systems

LearnIt/Operational Systems

# Linux
## User

* Linux Fundamentals, Prof. Dan Alberghetti [link]

## Drivers
# Networking Protocols
## Video Courses

* Introduction to Computer Networking, Stanford [link]
* https://www.udacity.com/course/progress#!/c-ud436
* https://www.coursera.org/learn/computer-networking

# Programming Languages

This page is either for interesting languages or interesting resources. Please no yet another "learn smth in # days". Good introductory courses are still welcome. Preferably, no materials for beginners like "smth as your first language".

## C#
## clojure
## F#

* https://courses.edx.org/courses/course-v1:Microsoft+DEV207.1x+1T2016/info

## erlang

* https://www.youtube.com/watch?v=9uIhawQ1G0I
* http://www.infoq.com/presentations/joe-armstrong-erlang-qcon08
* http://www.cs.kent.ac.uk/ErlangMasterClasses/
* https://www.futurelearn.com/courses/concurrent-programming-erlang

## Haskell

* https://compscicenter.ru/courses/func-prog/2015-spring/
* https://onlinecourses.nptel.ac.in/noc15_cs13/course
* Microsoft Channel 9
* Some singular presentations
** A taste of Haskell - Simon Peyton Jones
** Adventure with Types in Haskell - Simon Peyton Jones
** Parallel and concurrent programming in Haskell https://www.youtube.com/watch?v=lqG3mURwUxo

## java

* https://www.edx.org/course/introduction-programming-java-part-1-uc3mx-it-1-1x-0
* https://www.edx.org/course/introduction-java-programming-part-1-hkustx-comp102-1x

## ocaml

* http://courses.cs.washington.edu/courses/csep505/09wi/lectures/

## scala

* https://class.coursera.org/progfun-2012-001/lecture

## scheme

* Video Lectures by Hal Abelson and Gerald Jay Sussman [link]

## Swift

* Building Better Apps with Value Types in Swift - Apple WWDC 2015 - https://www.youtube.com/watch?v=av4i3x-aZbM
* Protocol-oriented Programming in Swift - Apple WWDC 2015 https://www.youtube.com/watch?v=g2LwFZatfTI
* Understanding Swift Performance - Apple WWDC 2016 https://www.youtube.com/watch?v=9By9KLs51Dc

# Databases

LearnIt/Databases