From 40926b787ef8f63e7b230db02284efb8d418249c Mon Sep 17 00:00:00 2001 From: "Robert (Robby) O'Connor" Date: Thu, 25 Dec 2014 13:17:14 -0500 Subject: [PATCH 001/175] Add the first software design class Added our first programming course as well...this guy's notes are worth money! --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 6dbe361..14b45f7 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,9 @@ List of awesome Computer Science courses scoured from university pages across th - 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. - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) +- [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **Software Design and Analysis I** + *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. - - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** *CUNY Hunter College* - 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. From 289be03ae85595b55702f40c565e0649be340581 Mon Sep 17 00:00:00 2001 From: Maria Chavez Date: Thu, 25 Dec 2014 15:43:33 -0600 Subject: [PATCH 002/175] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 6dbe361..3a6b02a 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ List of awesome Computer Science courses scoured from university pages across th - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **Parallel Computing** *CUNY Hunter College* - 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. +- [CS 107](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) **Computer Organization & Systems** *Stanford University* + - 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. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management. + - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) ### Programming Languages / Compilers - [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* From b75b9a483bb8de0037ad21c5d2aedeb27b40f4f4 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 26 Dec 2014 09:20:34 +0300 Subject: [PATCH 003/175] Added a few links for lectures and assignments --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 0801c84..9f4280a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ List of awesome Computer Science courses scoured from university pages across the web ### Systems + - [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) @@ -74,12 +75,15 @@ List of awesome Computer Science courses scoured from university pages across th - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **Software Design and Analysis I** *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) - - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** *CUNY Hunter College* - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) - [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **Software Design and Analysis III** *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) ### Misc - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* From 83f411b1bb4ff8495a6bed88f6fbb7e6e3bf7b38 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 26 Dec 2014 12:00:17 +0300 Subject: [PATCH 004/175] Added a new section and few courses in it --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 225fd74..7fc02e3 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,14 @@ List of awesome Computer Science courses scoured from university pages across th - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) +### Introduction to CS +- [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* + - 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](https://cs50.harvard.edu/lectures) +- [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **Computer Science 101** *Stanford University* + - 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. + ### Misc - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems From 2a53ed3a9f804ff8746f0ae6ed0784bf62b99c51 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 27 Dec 2014 10:56:42 +0300 Subject: [PATCH 005/175] added TOC --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 7fc02e3..9a1d07d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,13 @@ List of awesome Computer Science courses scoured from university pages across the web +**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)* + +- [Systems](#) +- [Programming Languages / Compilers](#) +- [Algorithms](#) +- [Introduction to CS](#) +- [Misc](#) + ### Systems - [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* From 2947ed243170f57e3c1c80f0960aa9c5372bfeea Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 27 Dec 2014 10:58:19 +0300 Subject: [PATCH 006/175] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9a1d07d..a9cae53 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ List of awesome Computer Science courses scoured from university pages across the web -**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)* +**Table of Contents** -- [Systems](#) -- [Programming Languages / Compilers](#) -- [Algorithms](#) -- [Introduction to CS](#) -- [Misc](#) +- [Systems](#systems) +- [Programming Languages / Compilers](#programming-languages--compilers) +- [Algorithms](#algorithms) +- [Introduction to CS](#introduction-to-cs) +- [Misc](#misc) ### Systems From a2d4ee237baa19c5d149848b9aebca94dabe9345 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 27 Dec 2014 10:59:37 +0300 Subject: [PATCH 007/175] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a9cae53..458b27a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ -List of awesome Computer Science courses scoured from university pages across the web +Awesome Courses +--- -**Table of Contents** + +> List of awesome Computer Science courses scoured from university pages across the web + +Table of Contents +--- - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) @@ -8,6 +13,9 @@ List of awesome Computer Science courses scoured from university pages across th - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) +Courses +--- + ### Systems - [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* From c7c4d4c77f1bbdf3f9647d7dc3cb2407b454e993 Mon Sep 17 00:00:00 2001 From: Liam Middlebrook Date: Sun, 28 Dec 2014 13:34:04 -0500 Subject: [PATCH 008/175] Added RIT FOSS Courses --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 458b27a..e079cb3 100644 --- a/README.md +++ b/README.md @@ -130,3 +130,7 @@ Courses - This course is an introduction to programming for the World Wide Web. Covers use of HTML, CSS, PHP, JavaScript, AJAX, and SQL. - [Lectures](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) +- [IGME-582](http://hfoss-fossrit.rhcloud.com) **Humanitarian Free & Open Source Software Development** *Rochester Institute of Technology* + - 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. They will become contributing members of humanitarian software development communities such as the One Laptop Per Child and Sugar communities. Students will actively document their efforts on Humanitarian Free and Open Source Software community hubs. +- [IGME-585](http://advfoss-ritigm.rhcloud.com) **Advanced Project Based Free & Open Source Software Development** *Rochester Institute of Technology* + - A project based course where students develop 3 tightly scoped open source projects for the Raspberry Pi. From 9ecea6cfde3295fbdfafdb448ae75c2acbca2a12 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 28 Dec 2014 23:25:04 +0300 Subject: [PATCH 009/175] More introductory CS courses from Stanford --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e079cb3..7bd4e4a 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,21 @@ Courses - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **Computer Science 101** *Stanford University* - 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](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **Programming Methodology** *Stanford University* + - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) + - [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) + - [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) +- [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **Programming Abstractions** *Stanford University* + - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) + - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) + - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) +- [CS107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **Programming Paradigms** *Stanford University* + - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) + - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) + ### Misc - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems From a4ea7be155633dd298ec04cefc872c07c24886ff Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 28 Dec 2014 23:29:36 +0300 Subject: [PATCH 010/175] CUDA course --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7bd4e4a..3a38802 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,7 @@ Courses - [Lectures](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) - [IGME-582](http://hfoss-fossrit.rhcloud.com) **Humanitarian Free & Open Source Software Development** *Rochester Institute of Technology* - - 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. They will become contributing members of humanitarian software development communities such as the One Laptop Per Child and Sugar communities. Students will actively document their efforts on Humanitarian Free and Open Source Software community hubs. + - 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. - [IGME-585](http://advfoss-ritigm.rhcloud.com) **Advanced Project Based Free & Open Source Software Development** *Rochester Institute of Technology* - A project based course where students develop 3 tightly scoped open source projects for the Raspberry Pi. +- [CS193](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384233322#ls=1) **Programming Massively Parallel Processors** *Stanford University* From 6a5626615ab96480e2992e9178448d367d813cf6 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 28 Dec 2014 23:39:12 +0300 Subject: [PATCH 011/175] Stanford robotics --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3a38802..7efa8cb 100644 --- a/README.md +++ b/README.md @@ -149,3 +149,7 @@ Courses - [IGME-585](http://advfoss-ritigm.rhcloud.com) **Advanced Project Based Free & Open Source Software Development** *Rochester Institute of Technology* - A project based course where students develop 3 tightly scoped open source projects for the Raspberry Pi. - [CS193](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384233322#ls=1) **Programming Massively Parallel Processors** *Stanford University* +- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) + - 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. + - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) + - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) From 925976b35d0d8a4bfd9d8ca04fb57486ed9a40c6 Mon Sep 17 00:00:00 2001 From: Victor Szeto Date: Sun, 28 Dec 2014 16:23:37 -0500 Subject: [PATCH 012/175] add uwaterloo P4P and the infamous trains course --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 7efa8cb..5bb84a0 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,10 @@ Courses - [CS241](https://courses.engr.illinois.edu/cs241/) **Systems Programming** *Univ of Illinois, Urbana-Champaign* - Learn how to write programs that take full advantage of operating system support in the C programming language - [Assignments](https://courses.engr.illinois.edu/cs241/mp.html) +- [CS 452](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) **Real-Time Programming** *University of Waterloo* + - 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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) + - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) - [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **Distributed Systems** *Carnegie-Mellon University* - Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language. - [Assignments](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) @@ -53,6 +57,9 @@ Courses - [CS 107](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) **Computer Organization & Systems** *Stanford University* - 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. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management. - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) +- [ECE 459](http://patricklam.ca/p4p/) **Programming for Performance** *University of Waterloo* + - 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](http://patricklam.ca/p4p/notes/) ### Programming Languages / Compilers - [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* From 423d8458899b0bf5191f49c19955cee611622363 Mon Sep 17 00:00:00 2001 From: Daniel Ge Date: Sun, 28 Dec 2014 16:28:44 -0800 Subject: [PATCH 013/175] Add UPenn's CIS 581 course --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 7efa8cb..947fe53 100644 --- a/README.md +++ b/README.md @@ -153,3 +153,7 @@ Courses - 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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) +- [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **Computer Vision and Computational Photography** *University of Pennsylvania* + - An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search. + - [Lectures](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) + - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) From 868cde79580d775e31cd606e412f84b2942349fe Mon Sep 17 00:00:00 2001 From: Daniel Ge Date: Sun, 28 Dec 2014 16:37:54 -0800 Subject: [PATCH 014/175] Add UPenn's CIS 500 in a separate CS Theory section --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 947fe53..d4150f3 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,13 @@ Courses *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) - + +### CS Theory +- [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* + - 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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) + - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) + ### Introduction to CS - [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* - 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. From 92b4eeca4f1823ab90429cb071ac832eb3a50044 Mon Sep 17 00:00:00 2001 From: swong15 Date: Sun, 28 Dec 2014 17:00:27 -0800 Subject: [PATCH 015/175] Add UIUC CS 473/573 to list --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7efa8cb..ad3207e 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,9 @@ Courses *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) - +- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **Fundamental Algorithms** *Univ of Illinois, Urbana-Champaign* + - Algorithms class covering recursion, randomization, amortization, graph algorithms, network flows and hardness + ### Introduction to CS - [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* - 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. From 3b643a60bd2ce545e620e4444c383ac69a11d42c Mon Sep 17 00:00:00 2001 From: Hardmath123 Date: Sun, 28 Dec 2014 17:53:46 -0800 Subject: [PATCH 016/175] Add UC Berkeley's CS10 (BJC) Yaaay Snap! :-) --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 7efa8cb..1400316 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,9 @@ Courses - [Lectures and Assignments](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) ### Introduction to CS +- [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* + - CS10 is UCB's introductory computer science class, taught using the beginners' drag-and-drop language [Snap*!*](http://snap.berkeley.edu) (based on Scratch by MIT). + - [Curriculum](http://bjc.berkeley.edu) - [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* - 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](https://cs50.harvard.edu/lectures) From ed1e8e2445176f2fa36e9efa4f5cbf8b2d6b88a7 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sun, 28 Dec 2014 21:18:07 -0600 Subject: [PATCH 017/175] Add CS421 from UIUC --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1400316..c33a650 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,12 @@ Courses - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) - +- [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **Programming Languages and Compilers** **Univ of Illinois, Urbana-Champaign** + - Course that uses OCaml to teach functional programming and programming language design. + - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) + - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) + - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) + - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) ### Algorithms - [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* From 3c32edb597fa6d475e93b9cd231ca83e376536b2 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sun, 28 Dec 2014 21:18:48 -0600 Subject: [PATCH 018/175] UIUC bold -> italics --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c33a650..4fb1f09 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ Courses - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) -- [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **Programming Languages and Compilers** **Univ of Illinois, Urbana-Champaign** +- [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **Programming Languages and Compilers** *Univ of Illinois, Urbana-Champaign* - Course that uses OCaml to teach functional programming and programming language design. - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) From fb424d4cf3f00c8d5e18d2135d0c38e73bf7dfdf Mon Sep 17 00:00:00 2001 From: Pratyush Mishra Date: Sun, 28 Dec 2014 19:50:37 -0800 Subject: [PATCH 019/175] Added More CS Theory, updated ToC --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 9459d8c..df1459b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Table of Contents - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) - [Algorithms](#algorithms) +- [CS Theory](#cs-theory) - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) @@ -123,6 +124,10 @@ Courses - 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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) +- [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **Foundations of Cryptography** *UC Berkeley* + - This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphc Encryption, Indistinguishability Obfuscation, MPC and so on. +- [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* + - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* From a6f97110d26709818ff7a65cb47bdefd372527e0 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 06:51:04 +0300 Subject: [PATCH 020/175] robotics --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9459d8c..27b731f 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ Courses - [IGME-585](http://advfoss-ritigm.rhcloud.com) **Advanced Project Based Free & Open Source Software Development** *Rochester Institute of Technology* - A project based course where students develop 3 tightly scoped open source projects for the Raspberry Pi. - [CS193](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384233322#ls=1) **Programming Massively Parallel Processors** *Stanford University* -- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) +- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **Introduction to Robotics** *Stanford University* - 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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) From dcf27ecb4bbcbcf5689d9bec1606798f31b9c0ee Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 07:11:12 +0300 Subject: [PATCH 021/175] Update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 070b843..2ac5fb1 100644 --- a/README.md +++ b/README.md @@ -118,10 +118,10 @@ Courses *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) - - [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **Fundamental Algorithms** *Univ of Illinois, Urbana-Champaign* - - Algorithms class covering recursion, randomization, amortization, graph algorithms, network flows and hardness - + - 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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/notes/all-algorithms.pdf) + - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/hwex/all-hwex.pdf) ### CS Theory - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* - 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. @@ -177,7 +177,6 @@ Courses - 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. - [IGME-585](http://advfoss-ritigm.rhcloud.com) **Advanced Project Based Free & Open Source Software Development** *Rochester Institute of Technology* - A project based course where students develop 3 tightly scoped open source projects for the Raspberry Pi. -- [CS193](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384233322#ls=1) **Programming Massively Parallel Processors** *Stanford University* - [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **Introduction to Robotics** *Stanford University* - 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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) From 5ea0f89364aa23f21d7aed6288dc7660e44d44b7 Mon Sep 17 00:00:00 2001 From: Samarjeet Date: Mon, 29 Dec 2014 00:19:47 -0500 Subject: [PATCH 022/175] Added MIT Advanced Algo Wasn't able to fix the previous one. New PR --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 2ac5fb1..d8ac606 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,10 @@ Courses - This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphc Encryption, Indistinguishability Obfuscation, MPC and so on. - [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. +- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **Advanced Algorithms** *MIT* + - This is an advanced course by the very famous Dr. David Karger (You might have found him active on Quora some of the times). + - 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. + - Create an account on NB [here](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the problem set and lectures. ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* From 5318023d4ec31f2f568eee19347da0c4d009d84a Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 08:37:02 +0300 Subject: [PATCH 023/175] Fixed typos --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d8ac606..0f0da1c 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,10 @@ Courses - 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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/notes/all-algorithms.pdf) - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/hwex/all-hwex.pdf) +- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **Advanced Algorithms** *MIT* + - 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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). + ### CS Theory - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* - 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. @@ -131,10 +135,6 @@ Courses - This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphc Encryption, Indistinguishability Obfuscation, MPC and so on. - [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. -- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **Advanced Algorithms** *MIT* - - This is an advanced course by the very famous Dr. David Karger (You might have found him active on Quora some of the times). - - 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. - - Create an account on NB [here](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the problem set and lectures. ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* From 14c37c65db8ec3a547e3a241e0c0086b32110314 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 08:47:57 +0300 Subject: [PATCH 024/175] Added Matt Might's compiler course. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 0f0da1c..f90d56b 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,11 @@ Courses - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) +- [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* + - 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. + - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) + - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) + ### Algorithms - [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* From e97cdf52b3461bf0b74fa2d45bcbd65b27a4c766 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 08:55:53 +0300 Subject: [PATCH 025/175] mathematical foundations of computing added --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f90d56b..b3ec7f9 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,9 @@ Courses - This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphc Encryption, Indistinguishability Obfuscation, MPC and so on. - [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. +- [CS103](http://web.stanford.edu/class/cs103/) **Mathematical Foundations of Computing** *Stanford University* + - 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 ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* From 5680974b731c5e70427c6d2918f993c1c6f73918 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 08:58:01 +0300 Subject: [PATCH 026/175] link to Matt Might's blog --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3ec7f9..f422205 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ Courses - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) - [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* - - 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. + - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) From 28baf08f52f6867bd0ed151ab5aff0628e12da8a Mon Sep 17 00:00:00 2001 From: Samarjeet Date: Mon, 29 Dec 2014 01:16:42 -0500 Subject: [PATCH 027/175] MIT Advanced DS --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f422205..3e6a55f 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,10 @@ Courses - [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **Advanced Algorithms** *MIT* - 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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). +- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* + - This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. + - [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. + - [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. ### CS Theory - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* From 2d3c9738aaac743411e5e74b7cd87ce043911f66 Mon Sep 17 00:00:00 2001 From: JonChu Date: Sun, 28 Dec 2014 23:25:46 -0800 Subject: [PATCH 028/175] Adds the required Algo course from CMU Contains comprehensive notes and is one of the more in depth algo courses on the list. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f422205..5784a07 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ Courses ### Algorithms +- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **Algorithms** *Carnegie Mellon University* + - The required algorithms class that go in depth into all basic algorithms and the proofs behind them. This is one of the heavier algorithms cirriculums 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. - [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* - The [popular](https://www.coursera.org/course/algs4partI) algorithms class covering most important algorithms and data structures in use on computers taught by Robert Sedgewick. - [Assignments](http://www.cs.princeton.edu/courses/archive/fall14/cos226/assignments.php) From c778ba9c666e1b31764149b8c63baedca140a018 Mon Sep 17 00:00:00 2001 From: Shuai Li Date: Mon, 29 Dec 2014 16:30:21 +0800 Subject: [PATCH 029/175] Fix a wrong link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5784a07..9b8e932 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Courses - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **Parallel Computing** *CUNY Hunter College* - 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. -- [CS 107](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) **Computer Organization & Systems** *Stanford University* +- [CS 107](http://web.stanford.edu/class/cs107/index.html) **Computer Organization & Systems** *Stanford University* - 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. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management. - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) - [ECE 459](http://patricklam.ca/p4p/) **Programming for Performance** *University of Waterloo* From 6c611c92d136e205077389834de358be4cd5a7ec Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 11:40:13 +0300 Subject: [PATCH 030/175] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b8e932..14f140c 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,8 @@ Courses - [CSCI 493.75](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **Parallel Computing** *CUNY Hunter College* - 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. - [CS 107](http://web.stanford.edu/class/cs107/index.html) **Computer Organization & Systems** *Stanford University* - - 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. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management. + - 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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) - [ECE 459](http://patricklam.ca/p4p/) **Programming for Performance** *University of Waterloo* - 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. From b706754341dc1a57f74d9b452214a0ff1230539b Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 13:30:07 +0300 Subject: [PATCH 031/175] Skiena's course --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 14f140c..e556adb 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,9 @@ Courses ### Algorithms +- [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* + - Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal [book](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. + - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) - [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **Algorithms** *Carnegie Mellon University* - The required algorithms class that go in depth into all basic algorithms and the proofs behind them. This is one of the heavier algorithms cirriculums 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. - [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* From 699619a0972e6da6182e1e48b6e09e37c4bbbae7 Mon Sep 17 00:00:00 2001 From: Michael Recachinas Date: Mon, 29 Dec 2014 10:35:27 -0500 Subject: [PATCH 032/175] Add UVA to list Add 2 courses from UVA --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a3cfc0c..e443f5a 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,10 @@ Courses - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) - +- [CS4610](www.cs.virginia.edu/~weimer/4610/) **Programming Languages and Compilers** *University of Virginia* + - 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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) + - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) ### Algorithms - [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* @@ -140,7 +143,11 @@ Courses - This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. - [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. - [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. - +- [CS 2150](https://github.com/aaronbloomfield/pdr) **Program & Data Representation** *University of Virginia* + - 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](http://aaronbloomfield.github.io/pdr/slides/) + - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) + ### CS Theory - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* - 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. From 44d6e6f22dfafb476989f1d8b4b64bf9025cf680 Mon Sep 17 00:00:00 2001 From: Andrew Drozdov Date: Mon, 29 Dec 2014 11:32:04 -0500 Subject: [PATCH 033/175] Halderman's Security Course --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index a3cfc0c..cd2b062 100644 --- a/README.md +++ b/README.md @@ -207,3 +207,7 @@ Courses - An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search. - [Lectures](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) +- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* + - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). + - This intensive research seminar covers foundational work and current topics in computer systems security. + - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) \ No newline at end of file From 8699b609687f467fa0d4cf2ba2f0fbd7bce1df9e Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 20:04:33 +0300 Subject: [PATCH 034/175] Added CS173 --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7210ae4..7cd04a5 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,12 @@ Courses - [CS103](http://web.stanford.edu/class/cs103/) **Mathematical Foundations of Computing** *Stanford University* - 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](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **Discrete Structures** *Univ of Illinois Urbana-Champaign* + - 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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. + - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) + - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) + ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* @@ -217,4 +223,4 @@ Courses - [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) \ No newline at end of file + - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) From fcc8a422c765b0be687454caa1af0fc13022395b Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 20:16:38 +0300 Subject: [PATCH 035/175] emoji test --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7cd04a5..fac8ed7 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Courses ### Systems -- [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* +- [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) @@ -224,3 +224,6 @@ Courses - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) + + +:cinema: :computer: :books: From b80147506904df86eb0639064cf9549b2643918f Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 20:24:08 +0300 Subject: [PATCH 036/175] Update README.md --- README.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fac8ed7..686b3c5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ Awesome Courses ---- - +===== > List of awesome Computer Science courses scoured from university pages across the web @@ -63,6 +62,8 @@ Courses - 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](http://patricklam.ca/p4p/notes/) +------- + ### Programming Languages / Compilers - [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. @@ -107,6 +108,8 @@ Courses - [Lecture Notes](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) +------- + ### Algorithms - [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* - Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal [book](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. @@ -147,7 +150,9 @@ Courses - 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](http://aaronbloomfield.github.io/pdr/slides/) - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) - + +------- + ### CS Theory - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* - 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. @@ -166,8 +171,10 @@ Courses - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) +------- ### Introduction to CS + - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* - CS10 is UCB's introductory computer science class, taught using the beginners' drag-and-drop language [Snap*!*](http://snap.berkeley.edu) (based on Scratch by MIT). - [Curriculum](http://bjc.berkeley.edu) @@ -192,6 +199,8 @@ Courses - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) +------- + ### Misc - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems @@ -224,6 +233,3 @@ Courses - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) - - -:cinema: :computer: :books: From 87ab27529a833df49b3ec807a6484a6486473716 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 20:34:35 +0300 Subject: [PATCH 037/175] emoji test --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 686b3c5..22a0302 100644 --- a/README.md +++ b/README.md @@ -233,3 +233,5 @@ Courses - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) + +:grin: :computer: :cinema: From da53df37cc7f73fa685ea7126601b05dc8758c29 Mon Sep 17 00:00:00 2001 From: Austin Schwartz Date: Mon, 29 Dec 2014 13:25:19 -0500 Subject: [PATCH 038/175] Fixed CS452 link to go to the CS452 page, instead of the Stanford CS107 youtube playlist --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 22a0302..8b11fd7 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Courses - [CS241](https://courses.engr.illinois.edu/cs241/) **Systems Programming** *Univ of Illinois, Urbana-Champaign* - Learn how to write programs that take full advantage of operating system support in the C programming language - [Assignments](https://courses.engr.illinois.edu/cs241/mp.html) -- [CS 452](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) **Real-Time Programming** *University of Waterloo* +- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **Real-Time Programming** *University of Waterloo* - 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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) From 18ce99326f8ee68e1623f59640a13cebf654097d Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 29 Dec 2014 21:25:40 +0300 Subject: [PATCH 039/175] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 22a0302..d7184fa 100644 --- a/README.md +++ b/README.md @@ -234,4 +234,5 @@ Courses - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) -:grin: :computer: :cinema: +----- +*Note* For some reason, I'm unable to get emoji's to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), I'd appreciate help with adding emojis for courses. Thanks! From f0cb2324380536a319a17cabe9c82350d23f4b4f Mon Sep 17 00:00:00 2001 From: Philip Johnson Date: Mon, 29 Dec 2014 12:14:04 -1000 Subject: [PATCH 040/175] Adding ICS 314, Software Engineering --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index ef3a8f7..53384e4 100644 --- a/README.md +++ b/README.md @@ -233,6 +233,15 @@ Courses - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) +- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* + - Taught by [Philip Johnson](http://philipmjohnson.org/) + - Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) + - [Modules](http://philipmjohnson.github.io/ics314f13/modules/) + - [Learning outcomes](http://philipmjohnson.github.io/ics314f13/outcomes/) + - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) + - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) + - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) + - [Experiences] ----- *Note* For some reason, I'm unable to get emoji's to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), I'd appreciate help with adding emojis for courses. Thanks! From 48fc4a656b0cfc94999a5ce6acb0b181afe97a5e Mon Sep 17 00:00:00 2001 From: Philip Johnson Date: Mon, 29 Dec 2014 12:15:05 -1000 Subject: [PATCH 041/175] Adding ICS 314, Software Engineering --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 53384e4..82688f0 100644 --- a/README.md +++ b/README.md @@ -241,7 +241,6 @@ Courses - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) - - [Experiences] ----- *Note* For some reason, I'm unable to get emoji's to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), I'd appreciate help with adding emojis for courses. Thanks! From 7bccfb048a8d1c9ea41fb6c0c2945a5cd34a0944 Mon Sep 17 00:00:00 2001 From: Roger Date: Mon, 29 Dec 2014 16:32:06 -0800 Subject: [PATCH 042/175] Add http:// before link for better linkability --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ef3a8f7..613928e 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Courses - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) -- [CS4610](www.cs.virginia.edu/~weimer/4610/) **Programming Languages and Compilers** *University of Virginia* +- [CS4610](http://www.cs.virginia.edu/~weimer/4610/) **Programming Languages and Compilers** *University of Virginia* - 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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) From ac3c85fc220b996a6f639852acc1e6081cf429f0 Mon Sep 17 00:00:00 2001 From: Kris Lockwood Date: Mon, 29 Dec 2014 22:40:06 -0500 Subject: [PATCH 043/175] Update README.md Deleted apostrophe. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ef3a8f7..bd9d528 100644 --- a/README.md +++ b/README.md @@ -235,4 +235,4 @@ Courses - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) ----- -*Note* For some reason, I'm unable to get emoji's to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), I'd appreciate help with adding emojis for courses. Thanks! +*Note* For some reason, I'm unable to get emojis to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), I'd appreciate help with adding emojis for courses. Thanks! From 6c39d91683e12d1ddaa6b0d437c6ea291a0b75fd Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Tue, 30 Dec 2014 10:08:01 +0300 Subject: [PATCH 044/175] adding contribution guidelines --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ca5ebd..b7b9255 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Table of Contents - [CS Theory](#cs-theory) - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) +- [Contributing](#contributing) Courses --- @@ -242,5 +243,8 @@ Courses - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) +### Contributing +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are sevices like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. + ----- -*Note* For some reason, I'm unable to get emojis to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), I'd appreciate help with adding emojis for courses. Thanks! +*Note* For some reason, I'm unable to get emojis to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), please let me know. Thanks! From f0db19c3e8daffb3bf7333b8ea2e6d837c8cfbf0 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Tue, 30 Dec 2014 10:08:58 +0300 Subject: [PATCH 045/175] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b7b9255..a9bef21 100644 --- a/README.md +++ b/README.md @@ -243,8 +243,9 @@ Courses - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) +----- + ### Contributing Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are sevices like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. ------ *Note* For some reason, I'm unable to get emojis to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), please let me know. Thanks! From 42d1ba07a5c557346a1051f8323a4fcdd7a85cd8 Mon Sep 17 00:00:00 2001 From: Bhavdeep Sethi Date: Tue, 30 Dec 2014 02:28:00 -0500 Subject: [PATCH 046/175] Adding Machine Learning Course from Columbia University --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index a9bef21..a8b2065 100644 --- a/README.md +++ b/README.md @@ -242,6 +242,12 @@ Courses - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) +- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* + - Taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) + - This course 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) + + ----- From f4c547afe39a705b143d1531a13cfa2f0a130614 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Tue, 30 Dec 2014 10:38:05 +0300 Subject: [PATCH 047/175] Update README.md --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a8b2065..eacb758 100644 --- a/README.md +++ b/README.md @@ -243,11 +243,8 @@ Courses - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* - - Taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) - - This course 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) - - + - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) ----- From 4dd9aa4b0fb99685cae41c0a5d5ed7b6955419f4 Mon Sep 17 00:00:00 2001 From: Samarjeet Date: Tue, 30 Dec 2014 05:12:45 -0500 Subject: [PATCH 048/175] Added Computer Architecture CMU --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eacb758..637d606 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,11 @@ Courses --- ### Systems - +- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **Introduction to Computer Architecture** *CMU* + - 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'14 version by professor [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/). + - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) + - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well + - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) - [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) From 9ee2aac7fd7fec1f0398c6c0d929cff691831869 Mon Sep 17 00:00:00 2001 From: Jake Worth Date: Tue, 30 Dec 2014 09:35:00 -0600 Subject: [PATCH 049/175] Fix a few typos --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 637d606..1824c9f 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Courses - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) - [CIS194](http://www.seas.upenn.edu/~cis194/) **Introduction to Haskell** *Penn Engineering* - 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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercices + - [Previous](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) - [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* - Building software systems in Haskell @@ -120,7 +120,7 @@ Courses - Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal [book](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) - [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **Algorithms** *Carnegie Mellon University* - - The required algorithms class that go in depth into all basic algorithms and the proofs behind them. This is one of the heavier algorithms cirriculums 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. + - 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. - [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* - The [popular](https://www.coursera.org/course/algs4partI) algorithms class covering most important algorithms and data structures in use on computers taught by Robert Sedgewick. - [Assignments](http://www.cs.princeton.edu/courses/archive/fall14/cos226/assignments.php) @@ -164,7 +164,7 @@ Courses * [Lectures and Assignments](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) - [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **Foundations of Cryptography** *UC Berkeley* - - This course discusses the complexity-theory foundations of modern cryptography, and looks at recent results in the field such as Fully Homomorphc Encryption, Indistinguishability Obfuscation, MPC and so on. + - 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. - [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. - [CS103](http://web.stanford.edu/class/cs103/) **Mathematical Foundations of Computing** *Stanford University* @@ -253,6 +253,6 @@ Courses ----- ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are sevices like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. *Note* For some reason, I'm unable to get emojis to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), please let me know. Thanks! From 4dd8c20f47de40e8f4ae29e8d1fe8524a1bee79e Mon Sep 17 00:00:00 2001 From: Frank Wu Date: Tue, 30 Dec 2014 11:25:13 -0500 Subject: [PATCH 050/175] Add MIT's 6.828 operating systems class --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 1824c9f..6d58ed8 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,10 @@ Courses - MIT's graduate-level DS course with a focus on fault tolerance, replication, and consistency, all taught via awesome lab assignments in Golang! - [Assignments](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` - [Lectures](http://css.csail.mit.edu/6.824/2014/schedule.html) +- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **Operating Systems** *MIT* + - 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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) + - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) - [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/spac/) **Parallelism and Concurrency** *Univ of Washington* - 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 - [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* From e250fae96295328ec909bce5cb2d247f8f6e1f02 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Tue, 30 Dec 2014 21:32:15 +0300 Subject: [PATCH 051/175] note removed after github update --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 6d58ed8..252706a 100644 --- a/README.md +++ b/README.md @@ -258,5 +258,3 @@ Courses ### Contributing Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. - -*Note* For some reason, I'm unable to get emojis to work on this readme (see [issue](https://github.com/prakhar1989/awesome-courses/issues/29) for context). If you are able to get them to work (or identify the issue), please let me know. Thanks! From 2e7fbc9939c4c4f4e8a17fa87325402a43d6fc19 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Wed, 31 Dec 2014 08:31:07 +0300 Subject: [PATCH 052/175] Added CV course by UTexas --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 252706a..433f885 100644 --- a/README.md +++ b/README.md @@ -211,6 +211,9 @@ Courses ------- ### Misc +- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **3D Reconstruction with Computer Vision** *UTexas* + - 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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) From f54560a500f8df0a990b266b65abb6753cd4cc26 Mon Sep 17 00:00:00 2001 From: Conner DiPaolo Date: Wed, 31 Dec 2014 12:28:39 -0800 Subject: [PATCH 053/175] Added UC Davis algorithms and Tufts game design courses --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 433f885..066ec8e 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,16 @@ Courses - 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](http://aaronbloomfield.github.io/pdr/slides/) - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) +- [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* + - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) + - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) + - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) +- [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **Graduate Level Algorithm Design and Analysis** *UC Davis* + - This is the graduate level complement to the ECS 122A undergraduate algorithms course by [Dan Gusfield](http://web.cs.ucdavis.edu/~gusfield/) in 2011. It assumes an undergrad course has already been tken in algorithms, and, while going over some undergraduate algorithms topics, focuses more on increasingly complex and advanced algorithms. + - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) + - [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) + - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) ------- @@ -256,6 +266,11 @@ Courses - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) +- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* + - The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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](http://ocw.tufts.edu/Course/75/Learningunits) + - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) + - [Labs](http://ocw.tufts.edu/Course/75/Labs) ----- From 40fbcab38d1dc80fb2b521aea27c576fd5ab19d9 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 1 Jan 2015 00:17:01 +0300 Subject: [PATCH 054/175] New Year Commit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 433f885..380821a 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Table of Contents - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) - [Algorithms](#algorithms) -- [CS Theory](#cs-theory) +- [CS Theory](#cs-theory) - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) - [Contributing](#contributing) From 1610e195abade3951e914b761477ad04c80f66eb Mon Sep 17 00:00:00 2001 From: Adrian Schaedle Date: Thu, 1 Jan 2015 02:08:59 -0500 Subject: [PATCH 055/175] Add SICP to list of introductory courses --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 05b73f1..8e91db3 100644 --- a/README.md +++ b/README.md @@ -217,6 +217,11 @@ Courses - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) +- [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **Structure and Interpretation of Computer Programs** *MIT* + - 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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) + - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) + - [IDE](http://www.neilvandyke.org/racket-sicp/) ------- From 37e86f98406414792cb8fb9514ad7fdbab0d292d Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 2 Jan 2015 00:01:30 +0530 Subject: [PATCH 056/175] New Year Commit - Github's TZ --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e91db3..385ff86 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Table of Contents - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) - [Algorithms](#algorithms) -- [CS Theory](#cs-theory) +- [CS Theory](#cs-theory) - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) - [Contributing](#contributing) From 3b43a8655d05422e39f6f3b1e2add25463b61983 Mon Sep 17 00:00:00 2001 From: Conner DiPaolo Date: Thu, 1 Jan 2015 17:53:57 -0800 Subject: [PATCH 057/175] Added MIT Software Engineer interviewing course --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 385ff86..f188af5 100644 --- a/README.md +++ b/README.md @@ -276,6 +276,10 @@ Courses - [Text Lectures](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) +- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **Hacking a Google Interview** *MIT* + - This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interterview 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](http://courses.csail.mit.edu/iap/interview/materials.php) + - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) ----- From 64c50bb723776fbbe1a6460d1653ca4d1d16ff26 Mon Sep 17 00:00:00 2001 From: Conner DiPaolo Date: Fri, 2 Jan 2015 09:35:49 -0800 Subject: [PATCH 058/175] Moved MIT Google interview course to algorithms section --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f188af5..4d0fff5 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,10 @@ Courses ------- ### Algorithms +- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **Hacking a Google Interview** *MIT* + - This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interterview 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](http://courses.csail.mit.edu/iap/interview/materials.php) + - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) - [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* - Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal [book](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) @@ -276,10 +280,7 @@ Courses - [Text Lectures](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) -- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **Hacking a Google Interview** *MIT* - - This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interterview 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](http://courses.csail.mit.edu/iap/interview/materials.php) - - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) + ----- From 779b5e9c1720bf0bb68f9738584c9aa7ee678aad Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 3 Jan 2015 21:01:52 +0530 Subject: [PATCH 059/175] Added Clojure course --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 4d0fff5..669bcde 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,9 @@ Courses - 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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) +- [clojure](http://mooc.cs.helsinki.fi/clojure) **Functional Programming with Clojure** *University of Helsinki* + - 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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) ------- From 90abc92f065ba868d1b9f5ca2546d67cbf4d5c7a Mon Sep 17 00:00:00 2001 From: Rafayel Mkrtchyan Date: Tue, 6 Jan 2015 09:28:39 -0800 Subject: [PATCH 060/175] Update for UC Berkeley CS10 course I took CS10 at University of California, Berkeley during Fall 2013 and I feel like provided description does not fully emphasize the importance of this course. Hence, I suggested this update. Please accept this. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 669bcde..e26834b 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,8 @@ Courses ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* - - CS10 is UCB's introductory computer science class, taught using the beginners' drag-and-drop language [Snap*!*](http://snap.berkeley.edu) (based on Scratch by MIT). + - 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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). - [Curriculum](http://bjc.berkeley.edu) - [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* - 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. From 8904caf7b65bf7300ff9afd40c619d130631439e Mon Sep 17 00:00:00 2001 From: Mikel Iturbe Urretxa Date: Wed, 7 Jan 2015 15:40:31 +0100 Subject: [PATCH 061/175] Add FSU Offensive Computer Security Course --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e26834b..5880647 100644 --- a/README.md +++ b/README.md @@ -284,7 +284,10 @@ Courses - [Text Lectures](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) - +- [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Ofensive Computer Security** *Florida State University* + - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) + - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) ----- From d1126f8d41aa58de045fe9dc7050e218d43fe835 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 15:48:19 +0530 Subject: [PATCH 062/175] Added emoji --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e26834b..946e54d 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Awesome Courses Table of Contents --- +![alt](https://raw.githubusercontent.com/raymondware/awesome-courses/master/video-em.png) + - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) - [Algorithms](#algorithms) From 8df3096af11234f9d5c3adb9b0b98cc8c68aa05c Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 16:03:24 +0530 Subject: [PATCH 063/175] added legend --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 946e54d..7ce594b 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ Awesome Courses Table of Contents --- -![alt](https://raw.githubusercontent.com/raymondware/awesome-courses/master/video-em.png) - - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) - [Algorithms](#algorithms) @@ -16,6 +14,14 @@ Table of Contents - [Misc](#misc) - [Contributing](#contributing) +Legend +--- + +- Lecture Videos - Lecture Videos +- Lecture Videos - Lecture Notes +- Lecture Videos - Assignments / Labs +- Lecture Videos - Readings + Courses --- From 1289e3b826e6592c2272340f7b89674c3f6ce04d Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 16:12:13 +0530 Subject: [PATCH 064/175] testing two courses --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7ce594b..6adb3f4 100644 --- a/README.md +++ b/README.md @@ -18,21 +18,21 @@ Legend --- - Lecture Videos - Lecture Videos -- Lecture Videos - Lecture Notes -- Lecture Videos - Assignments / Labs -- Lecture Videos - Readings +- Lecture Notes - Lecture Notes +- Assignments - Assignments / Labs +- Readings - Readings Courses --- ### Systems -- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **Introduction to Computer Architecture** *CMU* +- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by professor [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/). - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) -- [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* - - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. +- [CS425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) - [CS241](https://courses.engr.illinois.edu/cs241/) **Systems Programming** *Univ of Illinois, Urbana-Champaign* From 7ffc21cbc6b7dfb56a52a53b5061f877e0472b99 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 16:39:18 +0530 Subject: [PATCH 065/175] Added a few more emojis --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6adb3f4..e1d64ff 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Courses ### Systems - [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by professor [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/). + - 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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) @@ -35,20 +35,20 @@ Courses - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2014 version by Prof Indranil Gupta. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS241](https://courses.engr.illinois.edu/cs241/) **Systems Programming** *Univ of Illinois, Urbana-Champaign* +- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes - Learn how to write programs that take full advantage of operating system support in the C programming language - [Assignments](https://courses.engr.illinois.edu/cs241/mp.html) -- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **Real-Time Programming** *University of Waterloo* +- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) -- [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **Distributed Systems** *Carnegie-Mellon University* +- [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) -- [6.824](http://css.csail.mit.edu/6.824/2014/index.html) **Distributed Systems** *MIT* +- [6.824](http://css.csail.mit.edu/6.824/2014/index.html) **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](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` - - [Lectures](http://css.csail.mit.edu/6.824/2014/schedule.html) + - [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) - [6.828](http://pdos.csail.mit.edu/6.828/2014/) **Operating Systems** *MIT* - 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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) From 9500d0e7ddf54fea2ae6f8ff37947c0ea01c2045 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 20:15:55 +0530 Subject: [PATCH 066/175] Finished emojis in Systems --- README.md | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index e1d64ff..a2e5590 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,7 @@ Table of Contents - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) - [Contributing](#contributing) - -Legend ---- - -- Lecture Videos - Lecture Videos -- Lecture Notes - Lecture Notes -- Assignments - Assignments / Labs -- Readings - Readings +- [Legend](#legend) Courses --- @@ -49,33 +42,39 @@ Courses - MIT's graduate-level DS course with a focus on fault tolerance, replication, and consistency, all taught via awesome lab assignments in Golang! - [Assignments](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` - [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) -- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **Operating Systems** *MIT* +- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) -- [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/spac/) **Parallelism and Concurrency** *Univ of Washington* +- [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/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 -- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* +- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings - A project focused course on Distributed Systems with an awesome list of readings - [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) -- [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **Principles of Distributed Computing** *ETH-Zurich* +- [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) - [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) -- [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **Cloud Computing** *Cornell University* +- [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) -- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **Computer Architecture 3** *CUNY Hunter College* +- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **UNIX System Programming (formerly UNIX Tools)** *CUNY Hunter College* +- [CSCI 493.66](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **Parallel Computing** *CUNY Hunter College* +- [CSCI 493.75](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **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. -- [CS 107](http://web.stanford.edu/class/cs107/index.html) **Computer Organization & Systems** *Stanford University* +- [CS 107](http://web.stanford.edu/class/cs107/index.html) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) -- [ECE 459](http://patricklam.ca/p4p/) **Programming for Performance** *University of Waterloo* +- [ECE 459](http://patricklam.ca/p4p/) **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](http://patricklam.ca/p4p/notes/) @@ -294,6 +293,15 @@ Courses - [Labs](http://ocw.tufts.edu/Course/75/Labs) +----- +Legend +--- + +- Lecture Videos - Lecture Videos +- Lecture Notes - Lecture Notes +- Assignments - Assignments / Labs +- Readings - Readings + ----- ### Contributing From 28a21c45d48586a71866d8d63632191eafe9edbe Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 20:22:53 +0530 Subject: [PATCH 067/175] Shuffled the legend --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a2e5590..95ca3ae 100644 --- a/README.md +++ b/README.md @@ -294,15 +294,13 @@ Courses ----- -Legend ---- + +### Legend - Lecture Videos - Lecture Videos - Lecture Notes - Lecture Notes - Assignments - Assignments / Labs - Readings - Readings ------ - ### Contributing Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. From ab97064ffe1cd15f4204d76032f7d9b70e0a61d0 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 8 Jan 2015 21:28:12 +0530 Subject: [PATCH 068/175] Deep Learning course on CMU --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5880647..3894725 100644 --- a/README.md +++ b/README.md @@ -288,6 +288,8 @@ Courses - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) +- [11-785](http://deeplearning.cs.cmu.edu/) **Deep Learning** *Carnegie Mellon University* + - 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. ----- From b44e76b5f4b018f707a91da0d4d24fe9a4d1edf8 Mon Sep 17 00:00:00 2001 From: Shinsaku Uesugi Date: Thu, 8 Jan 2015 18:24:12 -0800 Subject: [PATCH 069/175] Fixed 2 typos in the Readme Typo 1: changed "interterview" to "interview" on Line 127 - This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interterview questions Typo 2: changed "tken" to "taken" on Line 175 - This is the graduate level complement to the ECS 122A undergraduate algorithms course by [Dan Gusfield](http://web.cs.ucdavis.edu/~gusfield/) in 2011. It assumes an undergrad course has already been tken --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3894725..d8df962 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ Courses ### Algorithms - [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **Hacking a Google Interview** *MIT* - - This course taught in the MIT Independent Activities Period in 2009 goes over common solution to common interterview 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. + - 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](http://courses.csail.mit.edu/iap/interview/materials.php) - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) - [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* @@ -172,7 +172,7 @@ Courses - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) - [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **Graduate Level Algorithm Design and Analysis** *UC Davis* - - This is the graduate level complement to the ECS 122A undergraduate algorithms course by [Dan Gusfield](http://web.cs.ucdavis.edu/~gusfield/) in 2011. It assumes an undergrad course has already been tken in algorithms, and, while going over some undergraduate algorithms topics, focuses more on increasingly complex and advanced algorithms. + - This is the graduate level complement to the ECS 122A undergraduate algorithms course by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) - [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) From 266be84e9d87424ea8195bcd20d1465423d1381f Mon Sep 17 00:00:00 2001 From: Chris Schmich Date: Fri, 9 Jan 2015 04:46:23 -0600 Subject: [PATCH 070/175] Fix typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d8df962..905ae74 100644 --- a/README.md +++ b/README.md @@ -284,7 +284,7 @@ Courses - [Text Lectures](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) -- [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Ofensive Computer Security** *Florida State University* +- [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) From 27d9b907dd385a9b5dc755a829fe3129dcc99b7b Mon Sep 17 00:00:00 2001 From: Marko Rabasovic Date: Fri, 9 Jan 2015 12:23:28 +0100 Subject: [PATCH 071/175] Updated URLs for CS 473/573 Old ones are not found. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 905ae74..237cea4 100644 --- a/README.md +++ b/README.md @@ -153,8 +153,8 @@ Courses - [Lectures and Assignments](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) - [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **Fundamental Algorithms** *Univ of Illinois, Urbana-Champaign* - 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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/notes/all-algorithms.pdf) - - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/hwex/all-hwex.pdf) + - [Lecture Notes](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) + - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) - [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **Advanced Algorithms** *MIT* - 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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). From 85cc16561d12c5686411f8d5347f92f637c265c8 Mon Sep 17 00:00:00 2001 From: bradle11 Date: Fri, 9 Jan 2015 05:24:09 -0600 Subject: [PATCH 072/175] Update README.md Added CS374@UIUC --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 905ae74..b1ddf77 100644 --- a/README.md +++ b/README.md @@ -196,6 +196,8 @@ Courses - [Textbook](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) +- [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **Algorithms & Models of Computation** *University of Illinois Urbana-Champaign* + - 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. ------- From ef72b7d478fa33dcb13eda0999f58dff66c8d7c1 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 9 Jan 2015 22:08:01 +0530 Subject: [PATCH 073/175] Added CS186 Berkeley Course --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 237cea4..b700fad 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,10 @@ Courses - [ECE 459](http://patricklam.ca/p4p/) **Programming for Performance** *University of Waterloo* - 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](http://patricklam.ca/p4p/notes/) - +- [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* + - 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) + - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) ------- ### Programming Languages / Compilers From 49a428dcb6e4e250fee69f1665f4614c3f25f2a9 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 9 Jan 2015 22:09:52 +0530 Subject: [PATCH 074/175] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b700fad..69904fb 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Courses - 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) + ------- ### Programming Languages / Compilers From f2a5c494121fc395a80f21713f22faca4c4bc104 Mon Sep 17 00:00:00 2001 From: bradle11 Date: Fri, 9 Jan 2015 12:22:33 -0600 Subject: [PATCH 075/175] Added CS374@UIUC Added links for assignments, lecture notes, and lecture videos. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b1ddf77..a323e1e 100644 --- a/README.md +++ b/README.md @@ -197,7 +197,10 @@ Courses - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) - [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **Algorithms & Models of Computation** *University of Illinois Urbana-Champaign* - - 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. + - 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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) + - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) + - [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) ------- From 5cfa53e6f57247c3117961368163a106b2bd4d89 Mon Sep 17 00:00:00 2001 From: Gordon Dent Date: Fri, 9 Jan 2015 18:30:12 +0000 Subject: [PATCH 076/175] Add Bio Inspired Computation course at Indiana University to Misc list --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 69904fb..e4234e3 100644 --- a/README.md +++ b/README.md @@ -294,6 +294,10 @@ Courses - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) - [11-785](http://deeplearning.cs.cmu.edu/) **Deep Learning** *Carnegie Mellon University* - 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. +- [I485 / H400](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* + - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) + - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) ----- From ff8af28bded16308e7e97ab287b8c80eba1f1e6a Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 10 Jan 2015 02:12:15 +0530 Subject: [PATCH 077/175] updated cs241 --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 507585b..94df7e2 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,11 @@ Courses - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2014 version by Prof Indranil Gupta. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes - - Learn how to write programs that take full advantage of operating system support in the C programming language +- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes Lecture Videos + - 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](https://courses.engr.illinois.edu/cs241/mp.html) + - [Github Page](http://angrave.github.io/sys/#) + - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) - [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) From 115a2c837c46696adda406f1a3db549a7c19279a Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 10 Jan 2015 02:14:29 +0530 Subject: [PATCH 078/175] added emojis for new DB systems course --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94df7e2..85cda81 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ Courses 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](http://patricklam.ca/p4p/notes/) -- [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* +- [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) From ab5c72ca6a0d6be8a88c37ec4971718555744faf Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 10 Jan 2015 02:41:32 +0530 Subject: [PATCH 079/175] CS100 UCRiverside course added. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 85cda81..89e0d13 100644 --- a/README.md +++ b/README.md @@ -312,6 +312,10 @@ Courses - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) +- [CS100](https://github.com/mikeizbicki/ucr-cs100) **Open Source Software Construction** *UC Riverside* + - 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](https://github.com/mikeizbicki/ucr-cs100) + - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) ----- From f1552d716ce895acea9c93c6229da5f854b59659 Mon Sep 17 00:00:00 2001 From: bradle11 Date: Fri, 9 Jan 2015 15:31:49 -0600 Subject: [PATCH 080/175] Fixed broken links, added terms to course titles Fixed CS241 MPs link, added term (Fall 2014) to course titles. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 89e0d13..e6845ba 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ Courses - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2014 version by Prof Indranil Gupta. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes Lecture Videos +- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes Lecture Videos - 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](https://courses.engr.illinois.edu/cs241/mp.html) + - [Assignments](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - [Github Page](http://angrave.github.io/sys/#) - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) - [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **Real-Time Programming** *University of Waterloo* Assignments Lecture Notes @@ -209,7 +209,7 @@ Courses - [Textbook](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) -- [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **Algorithms & Models of Computation** *University of Illinois Urbana-Champaign* +- [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **Algorithms & Models of Computation (Fall 2014)** *University of Illinois Urbana-Champaign* - 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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) From 5994dc25d2449db2041faca1194f10021408b377 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 10 Jan 2015 21:18:38 +0530 Subject: [PATCH 081/175] Added CS140 by Stanford --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e6845ba..eda5060 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,10 @@ Courses - 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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) +- [Cs140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) + - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) - [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/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 - [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings From 22ea6354ebe176f8419690db4f19e43c43cc5062 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 11 Jan 2015 19:36:21 +0300 Subject: [PATCH 082/175] emojis in PL done --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index eda5060..1f04405 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Courses - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2014 version by Prof Indranil Gupta. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes Lecture Videos +- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - [Github Page](http://angrave.github.io/sys/#) @@ -91,49 +91,49 @@ Courses ------- ### Programming Languages / Compilers -- [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* +- [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) -- [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* +- [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes - Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language - [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) -- [CIS194](http://www.seas.upenn.edu/~cis194/) **Introduction to Haskell** *Penn Engineering* +- [CIS194](http://www.seas.upenn.edu/~cis194/) **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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) -- [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* +- [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes - Building software systems in Haskell - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) -- [CS164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* +- [CS164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes - Introduction to programming languages by designing and implementing domain-specific languages. - [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) - [Code for Assignments](https://bitbucket.org/cs164_overlord/) -- [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **Data Structures and Functional Programming** *Cornell University* +- [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) -- [CS173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* +- [CS173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) -- [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **Programming Languages and Compilers** *Univ of Illinois, Urbana-Champaign* +- [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **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. - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) -- [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* +- [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) -- [CS4610](http://www.cs.virginia.edu/~weimer/4610/) **Programming Languages and Compilers** *University of Virginia* +- [CS4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) -- [clojure](http://mooc.cs.helsinki.fi/clojure) **Functional Programming with Clojure** *University of Helsinki* +- [clojure](http://mooc.cs.helsinki.fi/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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) From 386f16ccd59e6a2f7e97810a509ff9a0840638cd Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 11 Jan 2015 19:58:35 +0300 Subject: [PATCH 083/175] Emojis in Algos done --- README.md | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 1f04405..fa24475 100644 --- a/README.md +++ b/README.md @@ -140,55 +140,52 @@ Courses ------- ### Algorithms -- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **Hacking a Google Interview** *MIT* +- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **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](http://courses.csail.mit.edu/iap/interview/materials.php) - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) -- [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* +- [CSE-373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) -- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **Algorithms** *Carnegie Mellon University* - - 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. -- [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* - - The [popular](https://www.coursera.org/course/algs4partI) algorithms class covering most important algorithms and data structures in use on computers taught by Robert Sedgewick. - - [Assignments](http://www.cs.princeton.edu/courses/archive/fall14/cos226/assignments.php) -- [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* +- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **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](http://en.wikipedia.org/wiki/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. +- [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments - 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. - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) -- [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **Software Design and Analysis I** +- [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) -- - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** +- - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes *CUNY Hunter College* - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) -- [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **Software Design and Analysis III** +- [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) -- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **Fundamental Algorithms** *Univ of Illinois, Urbana-Champaign* +- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) -- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **Advanced Algorithms** *MIT* +- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). -- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* +- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* Lecture Videos Assignments Lecture Notes - This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. - [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. - [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. -- [CS 2150](https://github.com/aaronbloomfield/pdr) **Program & Data Representation** *University of Virginia* +- [CS 2150](https://github.com/aaronbloomfield/pdr) **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](http://aaronbloomfield.github.io/pdr/slides/) - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) -- [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* +- [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) -- [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **Graduate Level Algorithm Design and Analysis** *UC Davis* +- [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **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](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) - [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) From ec3882a2862f29c0a909ffb7ff5ccdae769bd949 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 11 Jan 2015 20:39:17 +0300 Subject: [PATCH 084/175] Two more sections with emoji --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index fa24475..dbf734b 100644 --- a/README.md +++ b/README.md @@ -194,23 +194,23 @@ Courses ------- ### CS Theory -- [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* +- [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) -- [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **Foundations of Cryptography** *UC Berkeley* +- [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **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. -- [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* +- [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. -- [CS103](http://web.stanford.edu/class/cs103/) **Mathematical Foundations of Computing** *Stanford University* +- [CS103](http://web.stanford.edu/class/cs103/) **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](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **Discrete Structures** *Univ of Illinois Urbana-Champaign* +- [CS 173](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) -- [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **Algorithms & Models of Computation (Fall 2014)** *University of Illinois Urbana-Champaign* +- [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) @@ -220,31 +220,31 @@ Courses ### Introduction to CS -- [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* +- [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). - [Curriculum](http://bjc.berkeley.edu) -- [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* +- [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) -- [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **Computer Science 101** *Stanford University* +- [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **Programming Methodology** *Stanford University* +- [CS 106A](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) - [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) -- [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **Programming Abstractions** *Stanford University* +- [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) -- [CS107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **Programming Paradigms** *Stanford University* +- [CS107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) -- [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **Structure and Interpretation of Computer Programs** *MIT* +- [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) From dc3274d8c3475024478351353ec0e52ae615bf2e Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 11 Jan 2015 21:24:56 +0300 Subject: [PATCH 085/175] Emojis for MISC section done --- README.md | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index dbf734b..1e62f9b 100644 --- a/README.md +++ b/README.md @@ -253,67 +253,63 @@ Courses ------- ### Misc -- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **3D Reconstruction with Computer Vision** *UTexas* +- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) -- [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* +- [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) -- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* +- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) -- [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* +- [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* Assignments Lecture Notes - Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/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 ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs) -- [CSE154](http://courses.cs.washington.edu/courses/cse154/14au/) **Web Programming** *University of Washington* +- [CSE154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) -- [IGME-582](http://hfoss-fossrit.rhcloud.com) **Humanitarian Free & Open Source Software Development** *Rochester Institute of Technology* +- [IGME-582](http://hfoss-fossrit.rhcloud.com) **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. -- [IGME-585](http://advfoss-ritigm.rhcloud.com) **Advanced Project Based Free & Open Source Software Development** *Rochester Institute of Technology* - - A project based course where students develop 3 tightly scoped open source projects for the Raspberry Pi. -- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **Introduction to Robotics** *Stanford University* +- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) -- [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **Computer Vision and Computational Photography** *University of Pennsylvania* +- [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **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](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) -- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* +- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* Lecture Notes Readings - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) -- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* +- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* Assignments Lecture Notes Readings - Taught by [Philip Johnson](http://philipmjohnson.org/) - Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) - - [Modules](http://philipmjohnson.github.io/ics314f13/modules/) - - [Learning outcomes](http://philipmjohnson.github.io/ics314f13/outcomes/) - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) -- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* +- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) -- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* +- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes - The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) -- [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* +- [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) -- [11-785](http://deeplearning.cs.cmu.edu/) **Deep Learning** *Carnegie Mellon University* +- [11-785](http://deeplearning.cs.cmu.edu/) **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. -- [I485 / H400](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* +- [I485 / H400](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) -- [CS100](https://github.com/mikeizbicki/ucr-cs100) **Open Source Software Construction** *UC Riverside* +- [CS100](https://github.com/mikeizbicki/ucr-cs100) **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](https://github.com/mikeizbicki/ucr-cs100) - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) From 3b5ee6cd3099db49a6edf888a34dabc02f624925 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 11 Jan 2015 21:39:24 +0300 Subject: [PATCH 086/175] Added an intro --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 1e62f9b..1b5cffc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ Awesome Courses ===== -> List of awesome Computer Science courses scoured from university pages across the web +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 courses which make their high-quality material i.e. assignments, lectures, notes, readings & examinations available online for free. Table of Contents --- @@ -13,7 +15,14 @@ Table of Contents - [Introduction to CS](#introduction-to-cs) - [Misc](#misc) - [Contributing](#contributing) -- [Legend](#legend) + +### Legend + +- Lecture Videos - Lecture Videos +- Lecture Notes - Lecture Notes +- Assignments - Assignments / Labs +- Readings - Readings + Courses --- @@ -316,12 +325,5 @@ Courses ----- -### Legend - -- Lecture Videos - Lecture Videos -- Lecture Notes - Lecture Notes -- Assignments - Assignments / Labs -- Readings - Readings - ### Contributing Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. From b223542dcdaf2b563009ed53b16583166a315570 Mon Sep 17 00:00:00 2001 From: Aaron Welch Date: Sun, 11 Jan 2015 17:23:12 -0600 Subject: [PATCH 087/175] Alphabetized courses, changed a few spacings. --- .DS_Store | Bin 0 -> 6148 bytes README.md | 491 +++++++++++++++++++++++++++--------------------------- 2 files changed, 249 insertions(+), 242 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..536c6d05b4983433c7c12cc255e41d58f1191756 GIT binary patch literal 6148 zcmeHKF-`+P474FdP@0sKTT&tMgC)8kQP98#P)He+ivB9z#m|x%+d@PK4H69+OZMz~ zJ-4|j&as*K>TP>twluRjoM`V1Q{y>(VrP|cARNzlu(e&=t8MRhlj`piF{5~`|u@{bs z@##Q_5db(tIt=TWC4h|yU@sgKk%4(qfl2imF+AzWx2o%fV`9?H<7PakZuXi`JZ?w6 zMY(xTRFncz;8cP0+%DPw*YF?a|5K87Qa}p)D+PQuJPj+nQuWr!%dyus_%oa}A8;Dh oK|zRi42*V+4cqZ$6lGoG8t1)mObj~mK?my30CkZ`fxlMZ2*FPlEdT%j literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 1b5cffc..a02aafa 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ Awesome Courses -===== +=============== 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 courses which make their high-quality material i.e. assignments, lectures, notes, readings & examinations available online for free. Table of Contents ---- +----------------- - [Systems](#systems) - [Programming Languages / Compilers](#programming-languages--compilers) @@ -25,305 +26,311 @@ Table of Contents Courses ---- +------- ### Systems -- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) - - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) -- [CS425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. - - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - - [Github Page](http://angrave.github.io/sys/#) - - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) -- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) -- [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) -- [6.824](http://css.csail.mit.edu/6.824/2014/index.html) **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](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` - - [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) -- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) - - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) -- [Cs140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) - - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) -- [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/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 -- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings - - A project focused course on Distributed Systems with an awesome list of readings - - [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) -- [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) - - [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) -- [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) + - [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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. +- A course that covers cache design, buses, memory hierarchies, processor-peripheral interfaces, and multiprocessors, including GPUs. - [CSCI 493.66](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **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. +- 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **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. +- 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. - [CS 107](http://web.stanford.edu/class/cs107/index.html) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) - - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) +- 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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) +- [Assignments](http://web.stanford.edu/class/cs107/assignments.html) +- [CS140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) +- [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) +- [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) +- [Projects](https://sites.google.com/site/cs186fall2013/homeworks) +- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) +- [Github Page](http://angrave.github.io/sys/#) +- [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) +- [CS425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. +- [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) +- [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) +- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) +- [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) +- [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) +- [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) - [ECE 459](http://patricklam.ca/p4p/) **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](http://patricklam.ca/p4p/notes/) -- [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) - - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) +- 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](http://patricklam.ca/p4p/notes/) +- [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) +- [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) +- [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/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](http://css.csail.mit.edu/6.824/2014/index.html) **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](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` +- [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) +- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) +- [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) +- [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) +- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings +- A project focused course on Distributed Systems with an awesome list of readings +- [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) +- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) +- [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) +- [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well +- [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) ------- ### Programming Languages / Compilers -- [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes - - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) -- [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes - - Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language - - [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) - - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) + - [CIS194](http://www.seas.upenn.edu/~cis194/) **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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises - - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) -- [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes - - Building software systems in Haskell - - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) - - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) +- 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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises +- [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) +- [Clojure](http://mooc.cs.helsinki.fi/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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) +- [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes +- Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language +- [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) +- [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) +- [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes +- Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. +- [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) +- [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) - [CS164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes - - Introduction to programming languages by designing and implementing domain-specific languages. - - [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) - - [Code for Assignments](https://bitbucket.org/cs164_overlord/) -- [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) - - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) +- Introduction to programming languages by designing and implementing domain-specific languages. +- [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) +- [Code for Assignments](https://bitbucket.org/cs164_overlord/) - [CS173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments - - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) +- Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. +- [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) +- [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) +- [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes +- Building software systems in Haskell +- [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) +- 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) +- [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) +- [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) - [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **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. - - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) - - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) -- [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings - - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) +- Course that uses OCaml to teach functional programming and programming language design. +- [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) +- [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) +- [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) +- [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) - [CS4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) -- [clojure](http://mooc.cs.helsinki.fi/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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) +- 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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) +- [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) +- [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings +- If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. +- [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) +- [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) ------- ### Algorithms -- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **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](http://courses.csail.mit.edu/iap/interview/materials.php) - - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) -- [CSE-373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) -- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **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](http://en.wikipedia.org/wiki/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. -- [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments - - 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. - - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) - - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) + - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) +*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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) - - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes - *CUNY Hunter College* - - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) +*CUNY Hunter College* +- 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) - [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) +*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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) +- [CSE-373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. +- [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) +- [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments +- 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. +- [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) +- [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) - [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) - - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) -- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). -- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* Lecture Videos Assignments Lecture Notes - - This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. - - [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. - - [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. +- 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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) +- [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) - [CS 2150](https://github.com/aaronbloomfield/pdr) **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](http://aaronbloomfield.github.io/pdr/slides/) - - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) +- 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](http://aaronbloomfield.github.io/pdr/slides/) +- [Assignments](http://aaronbloomfield.github.io/pdr/labs/) - [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes - - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) - - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) - - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) +- Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) +- [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) +- [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) - [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **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](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) - - [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) - - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) +- This is the graduate level complement to the ECS 122A undergraduate algorithms course by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) +- [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) +- [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) +- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **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](http://courses.csail.mit.edu/iap/interview/materials.php) +- [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) +- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* Lecture Videos Assignments Lecture Notes +- This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. +- [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. +- [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. +- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). +- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **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](http://en.wikipedia.org/wiki/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. ------- ### CS Theory + - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) - - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) -- [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **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. -- [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes - - An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. +- 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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) +- [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) - [CS103](http://web.stanford.edu/class/cs103/) **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 +- 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](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. - - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) +- 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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. +- [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) +- [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) +- [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **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. +- [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes +- An 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](https://courses.engr.illinois.edu/cs498374/fa2014/) **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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) - - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) - - [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) +- 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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) +- [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) +- [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) ------- ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). - - [Curriculum](http://bjc.berkeley.edu) +- 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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). +- [Curriculum](http://bjc.berkeley.edu) - [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) +- 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](https://cs50.harvard.edu/lectures) - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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. +- 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](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) - - [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) - - [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) +- 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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) +- [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) +- [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) - [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) - - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) - - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) +- 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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) +- [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) +- [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) - [CS107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) +- 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) +- [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) - [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) - - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) - - [IDE](http://www.neilvandyke.org/racket-sicp/) +- 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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) +- [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) +- [IDE](http://www.neilvandyke.org/racket-sicp/) ------- ### Misc -- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) -- [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings - - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) -- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings - - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) -- [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* Assignments Lecture Notes - - Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/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 ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs) -- [CSE154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) - - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) -- [IGME-582](http://hfoss-fossrit.rhcloud.com) **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. -- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. - - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) - - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) + - [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **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](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) - - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) -- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* Lecture Notes Readings - - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - - This intensive research seminar covers foundational work and current topics in computer systems security. - - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) -- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* Assignments Lecture Notes Readings - - Taught by [Philip Johnson](http://philipmjohnson.org/) - - Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) - - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) - - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) -- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) -- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes - - The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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](http://ocw.tufts.edu/Course/75/Learningunits) - - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - - [Labs](http://ocw.tufts.edu/Course/75/Labs) +- An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search. +- [Lectures](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) +- [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) - [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes - - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) -- [11-785](http://deeplearning.cs.cmu.edu/) **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. -- [I485 / H400](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes - - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) - - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) +- Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) +- [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) +- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes +- Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) +- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes +- The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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](http://ocw.tufts.edu/Course/75/Learningunits) +- [Assignments](http://ocw.tufts.edu/Course/75/Assignments) +- [Labs](http://ocw.tufts.edu/Course/75/Labs) - [CS100](https://github.com/mikeizbicki/ucr-cs100) **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](https://github.com/mikeizbicki/ucr-cs100) - - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) +- 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](https://github.com/mikeizbicki/ucr-cs100) +- [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) +- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. +- [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) +- [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) +- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) +- [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings +- Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems +- [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) +- [CSE154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) +- [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) +- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* Lecture Notes Readings +- Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). +- This intensive research seminar covers foundational work and current topics in computer systems security. +- [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) +- [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* Assignments Lecture Notes +- Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/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 ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs) +- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* Assignments Lecture Notes Readings +- Taught by [Philip Johnson](http://philipmjohnson.org/) +- Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) +- [Readings](http://philipmjohnson.github.io/ics314f13/readings/) +- [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) +- [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) +- [IGME-582](http://hfoss-fossrit.rhcloud.com) **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](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes +- Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) +- [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) +- [11-785](http://deeplearning.cs.cmu.edu/) **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. +- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings +- Taught by one of the leading experts on Machine Learning - **Tom Mitchell** +- [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) +- [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) ----- ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. + +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. \ No newline at end of file From 959f1e17dbd5a66722198fa45aeb5489f1a5506b Mon Sep 17 00:00:00 2001 From: Aaron Welch Date: Sun, 11 Jan 2015 18:53:30 -0600 Subject: [PATCH 088/175] Bullet fixes In the process of alphabetizing the lists of courses, I messed up the formatting of the bulleted lists. This commit fixes those mistakes. --- README.md | 388 +++++++++++++++++++++++++++--------------------------- 1 file changed, 194 insertions(+), 194 deletions(-) diff --git a/README.md b/README.md index a02aafa..1394f8c 100644 --- a/README.md +++ b/README.md @@ -32,122 +32,122 @@ Courses - [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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. + - A course that covers cache design, buses, memory hierarchies, processor-peripheral interfaces, and multiprocessors, including GPUs. - [CSCI 493.66](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **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. + - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **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. + - 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. - [CS 107](http://web.stanford.edu/class/cs107/index.html) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) -- [Assignments](http://web.stanford.edu/class/cs107/assignments.html) + - 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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) + - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) - [CS140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) -- [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) + - 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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) + - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) - [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) -- [Projects](https://sites.google.com/site/cs186fall2013/homeworks) + - 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) + - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) - [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) -- [Github Page](http://angrave.github.io/sys/#) -- [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) + - 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) + - [Github Page](http://angrave.github.io/sys/#) + - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) - [CS425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. -- [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) -- [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) + - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2014 version by Prof Indranil Gupta. + - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) + - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) - [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) -- [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) + - 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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) + - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) - [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) -- [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) + - 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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) + - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) - [ECE 459](http://patricklam.ca/p4p/) **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](http://patricklam.ca/p4p/notes/) + - 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](http://patricklam.ca/p4p/notes/) - [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) -- [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) + - 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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) + - [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) - [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/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 + - 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](http://css.csail.mit.edu/6.824/2014/index.html) **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](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` -- [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) + - MIT's graduate-level DS course with a focus on fault tolerance, replication, and consistency, all taught via awesome lab assignments in Golang! + - [Assignments](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` + - [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) - [6.828](http://pdos.csail.mit.edu/6.828/2014/) **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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) -- [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) + - 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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) + - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) - [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) + - Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language. + - [Assignments](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) - [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings -- A project focused course on Distributed Systems with an awesome list of readings -- [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) + - A project focused course on Distributed Systems with an awesome list of readings + - [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) - [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) -- [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) -- [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well -- [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) + - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) + - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well + - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) ------- ### Programming Languages / Compilers - [CIS194](http://www.seas.upenn.edu/~cis194/) **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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises -- [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) + - 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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises + - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) - [Clojure](http://mooc.cs.helsinki.fi/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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) + - 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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) - [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes -- Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language -- [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) -- [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) + - Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language + - [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) + - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) - [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes -- Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. -- [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) -- [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) + - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. + - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) + - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) - [CS164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes -- Introduction to programming languages by designing and implementing domain-specific languages. -- [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) -- [Code for Assignments](https://bitbucket.org/cs164_overlord/) + - Introduction to programming languages by designing and implementing domain-specific languages. + - [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) + - [Code for Assignments](https://bitbucket.org/cs164_overlord/) - [CS173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments -- Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. -- [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) -- [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) + - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. + - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) + - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) - [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes -- Building software systems in Haskell -- [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) -- 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) + - Building software systems in Haskell + - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) + - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) - [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) -- [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) + - Another course that uses OCaml to teach alternative programming paradigms, especially functional and concurrent programming. + - [Lecture Slides](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) + - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) - [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **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. -- [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) -- [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) -- [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) -- [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) + - Course that uses OCaml to teach functional programming and programming language design. + - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) + - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) + - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) + - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) - [CS4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) -- [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) + - 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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) + - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) - [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings -- If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. -- [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) -- [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) + - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. + - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) + - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) ------- @@ -155,179 +155,179 @@ Courses - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) -- - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes + - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) +- [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes *CUNY Hunter College* -- 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) + - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) - [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) + - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) - [CSE-373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. -- [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) + - Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal [book](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. + - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) - [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments -- 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. -- [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) -- [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) + - 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. + - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) + - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) - [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) -- [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) + - 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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) + - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) - [CS 2150](https://github.com/aaronbloomfield/pdr) **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](http://aaronbloomfield.github.io/pdr/slides/) -- [Assignments](http://aaronbloomfield.github.io/pdr/labs/) + - 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](http://aaronbloomfield.github.io/pdr/slides/) + - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) - [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes -- Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) -- [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) -- [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) + - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) + - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) + - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) - [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **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](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) -- [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) -- [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) + - This is the graduate level complement to the ECS 122A undergraduate algorithms course by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) + - [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) + - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) - [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **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](http://courses.csail.mit.edu/iap/interview/materials.php) -- [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) + - 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](http://courses.csail.mit.edu/iap/interview/materials.php) + - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) - [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* Lecture Videos Assignments Lecture Notes -- This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. -- [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. -- [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. + - This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. + - [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. + - [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. - [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). + - 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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). - [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **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](http://en.wikipedia.org/wiki/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. + - 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](http://en.wikipedia.org/wiki/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. ------- ### CS Theory - [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) -- [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) + - 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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) + - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) - [CS103](http://web.stanford.edu/class/cs103/) **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 + - 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](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. -- [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) -- [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) + - 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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. + - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) + - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) - [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **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. + - 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. - [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes -- An graduate level course on complexity theory that introduces P vs NP, the power of randomness, average-case complexity, hardness of approximation, and so on. + - An 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](https://courses.engr.illinois.edu/cs498374/fa2014/) **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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) -- [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) -- [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) + - 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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) + - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) + - [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) ------- ### Introduction to CS - [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). -- [Curriculum](http://bjc.berkeley.edu) + - 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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). + - [Curriculum](http://bjc.berkeley.edu) - [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) + - 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](https://cs50.harvard.edu/lectures) - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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. + - 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](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) -- [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) -- [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) + - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) + - [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) + - [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) - [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) -- [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) -- [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) + - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) + - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) + - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) - [CS107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) -- [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) + - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) + - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) - [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) -- [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) -- [IDE](http://www.neilvandyke.org/racket-sicp/) + - 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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) + - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) + - [IDE](http://www.neilvandyke.org/racket-sicp/) ------- ### Misc - [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **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](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) -- [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) + - An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search. + - [Lectures](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) + - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) - [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes -- Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) -- [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) + - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) + - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes -- Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) + - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) - [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes -- The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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](http://ocw.tufts.edu/Course/75/Learningunits) -- [Assignments](http://ocw.tufts.edu/Course/75/Assignments) -- [Labs](http://ocw.tufts.edu/Course/75/Labs) + - The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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](http://ocw.tufts.edu/Course/75/Learningunits) + - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) + - [Labs](http://ocw.tufts.edu/Course/75/Labs) - [CS100](https://github.com/mikeizbicki/ucr-cs100) **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](https://github.com/mikeizbicki/ucr-cs100) -- [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) + - 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](https://github.com/mikeizbicki/ucr-cs100) + - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) - [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. -- [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) -- [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) + - 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. + - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) + - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) - [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings -- Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems -- [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) + - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems + - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) - [CSE154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) -- [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) + - This course is an introduction to programming for the World Wide Web. Covers use of HTML, CSS, PHP, JavaScript, AJAX, and SQL. + - [Lectures](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) + - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) - [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* Lecture Notes Readings -- Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). -- This intensive research seminar covers foundational work and current topics in computer systems security. -- [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) + - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). + - This intensive research seminar covers foundational work and current topics in computer systems security. + - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) - [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* Assignments Lecture Notes -- Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/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 ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs) + - Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/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 ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs) - [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* Assignments Lecture Notes Readings -- Taught by [Philip Johnson](http://philipmjohnson.org/) -- Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) -- [Readings](http://philipmjohnson.github.io/ics314f13/readings/) -- [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) -- [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) + - Taught by [Philip Johnson](http://philipmjohnson.org/) + - Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) + - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) + - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) + - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) - [IGME-582](http://hfoss-fossrit.rhcloud.com) **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. + - 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](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes -- Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) -- [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) + - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) + - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) - [11-785](http://deeplearning.cs.cmu.edu/) **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. + - 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. - [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings -- Taught by one of the leading experts on Machine Learning - **Tom Mitchell** -- [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) -- [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) + - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** + - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) + - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) ----- From dbb304af5418bfa8f47e6ef61cbad6ede209ac31 Mon Sep 17 00:00:00 2001 From: Aaron Welch Date: Sun, 11 Jan 2015 19:09:00 -0600 Subject: [PATCH 089/175] A couple more spacing changes --- README.md | 130 +++++++++++++++++++++++++++--------------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 1394f8c..925bfa1 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,36 @@ Courses ### Systems +- [CS 107](http://web.stanford.edu/class/cs107/index.html) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) + - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) +- [CS 140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) + - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) +- [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) + - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) +- [CS 241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) + - [Github Page](http://angrave.github.io/sys/#) + - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) +- [CS 425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. + - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) + - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) +- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) + - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) +- [CS 5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) + - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) - [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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. @@ -39,36 +69,6 @@ Courses - [CSCI 493.75](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **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. -- [CS 107](http://web.stanford.edu/class/cs107/index.html) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) - - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) -- [CS140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) - - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) -- [CS186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) - - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) -- [CS241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - - [Github Page](http://angrave.github.io/sys/#) - - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) -- [CS425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. - - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) -- [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) - [ECE 459](http://patricklam.ca/p4p/) **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. @@ -103,56 +103,68 @@ Courses ### Programming Languages / Compilers -- [CIS194](http://www.seas.upenn.edu/~cis194/) **Introduction to Haskell** *Penn Engineering* Assignments Lecture Notes +- [CIS 194](http://www.seas.upenn.edu/~cis194/) **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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) - [Clojure](http://mooc.cs.helsinki.fi/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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) -- [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes +- [COS 326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes - Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language - [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) -- [CSE341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes - - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) -- [CS164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes +- [CS 164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes - Introduction to programming languages by designing and implementing domain-specific languages. - [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) - [Code for Assignments](https://bitbucket.org/cs164_overlord/) -- [CS173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments +- [CS 173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) -- [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes +- [CS 240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes - Building software systems in Haskell - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) -- [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **Data Structures and Functional Programming** *Cornell University* Assignments Lecture Notes +- [CS 3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) -- [CS421](https://courses.engr.illinois.edu/cs421/fa2014/) **Programming Languages and Compilers** *Univ of Illinois, Urbana-Champaign* Lecture Videos Assignments Lecture Notes +- [CS 421](https://courses.engr.illinois.edu/cs421/fa2014/) **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. - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) -- [CS4610](http://www.cs.virginia.edu/~weimer/4610/) **Programming Languages and Compilers** *University of Virginia* Assignments Lecture Notes +- [CS 4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) -- [CS5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings +- [CS 5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) +- [CSE 341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes + - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. + - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) + - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) ------- ### Algorithms +- [CS 61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments + - 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. + - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) + - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) +- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) + - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) +- [CS 2150](https://github.com/aaronbloomfield/pdr) **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](http://aaronbloomfield.github.io/pdr/slides/) + - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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. @@ -165,21 +177,9 @@ Courses *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) -- [CSE-373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* Lecture Videos Assignments Lecture Notes Readings +- [CSE 373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) -- [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments - - 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. - - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) - - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) -- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) - - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) -- [CS 2150](https://github.com/aaronbloomfield/pdr) **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](http://aaronbloomfield.github.io/pdr/slides/) - - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) - [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) @@ -212,7 +212,7 @@ Courses - 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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) -- [CS103](http://web.stanford.edu/class/cs103/) **Mathematical Foundations of Computing** *Stanford University* Assignments Lecture Notes +- [CS 103](http://web.stanford.edu/class/cs103/) **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](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **Discrete Structures** *Univ of Illinois Urbana-Champaign* Assignments Lecture Notes Readings @@ -220,9 +220,9 @@ Courses - [Textbook](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) -- [CS276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **Foundations of Cryptography** *UC Berkeley* Lecture Notes +- [CS 276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **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. -- [CS278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes +- [CS 278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes - An 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](https://courses.engr.illinois.edu/cs498374/fa2014/) **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. @@ -254,7 +254,7 @@ Courses - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) -- [CS107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **Programming Paradigms** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) @@ -272,7 +272,7 @@ Courses - An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search. - [Lectures](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) -- [CIS4930 / CIS5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes +- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) @@ -284,11 +284,11 @@ Courses - [Text Lectures](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) -- [CS100](https://github.com/mikeizbicki/ucr-cs100) **Open Source Software Construction** *UC Riverside* Assignments Lecture Notes +- [CS 100](https://github.com/mikeizbicki/ucr-cs100) **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](https://github.com/mikeizbicki/ucr-cs100) - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) -- [CS223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **Introduction to Robotics** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) @@ -298,7 +298,7 @@ Courses - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) -- [CSE154](http://courses.cs.washington.edu/courses/cse154/14au/) **Web Programming** *University of Washington* Assignments Lecture Notes +- [CSE 154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) @@ -316,7 +316,7 @@ Courses - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) -- [IGME-582](http://hfoss-fossrit.rhcloud.com) **Humanitarian Free & Open Source Software Development** *Rochester Institute of Technology* Assignments Lecture Notes +- [IGME 582](http://hfoss-fossrit.rhcloud.com) **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](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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. From c02f9ed64c9e32d7c036e100b909d10922c426d8 Mon Sep 17 00:00:00 2001 From: Aaron Welch Date: Sun, 11 Jan 2015 20:09:14 -0600 Subject: [PATCH 090/175] Added 4 courses from University of Arkansas I added CSCE 2004, CSCE 2014, CSCE 3193, and CSCE 3613, all from University of Arkansas in Fayetteville. --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 925bfa1..7756244 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,30 @@ Courses - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) +- [CSCE 2004](http://www.csce.uark.edu/~sgauch/2004/S14/index.html) **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](http://www.csce.uark.edu/~sgauch/2004/S14/syllabus.html) + - [Notes](http://www.csce.uark.edu/~sgauch/2004/S14/notes/index.html) + - [Assignments](http://www.csce.uark.edu/~sgauch/2004/S14/hw/index.html) + - [Practice Exams](http://www.csce.uark.edu/~sgauch/2004/S14/index.html) +- [CSCE 2014](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) **Programming Foundations 2** *University of Arkansas (Fayetteville)* Assignments Lecture NotesReadings + - This course continues developing problem solving techniques by focusing on fundamental data structures and associated algorithms. Topics include: abstract data types, introduction to object-oriented programming, linked lists, stacks, queues, hash tables, binary trees, graphs, recursion, and searching and sorting algorithms. Using C++ in a UNIX environment. + - [Syllabus](http://www.csce.uark.edu/~jgauch/2014/S14/handouts/syllabus.html) + - [Assignments](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) + - [Practice Exams](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) +- [CSCE 3193](http://www.csce.uark.edu/~sgauch/3193/S11/index.html) **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](http://www.csce.uark.edu/~sgauch/3193/S11/syllabus.html) + - [Notes](http://www.csce.uark.edu/~sgauch/3193/S11/notes/index.html) + - [Assignments](http://www.csce.uark.edu/~sgauch/3193/S11/hw/index.html) + - [Practice Exams](http://www.csce.uark.edu/~sgauch/3193/S11/exams/index.html) +- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. + - [Syllabus](http://comp.uark.edu/~wingning/csce3613/CSCE3613.pdf) + - [Assignments](http://comp.uark.edu/~wingning/csce3613/Homework3613.html) + - [Lecture Notes](http://comp.uark.edu/~wingning/csce3613/CourseNote3613.html) + - [Readings](http://comp.uark.edu/~wingning/csce3613/Link3613.html) - [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) From 2a827bbdba1a1ea15c4f459ebb205baa4c2eec8a Mon Sep 17 00:00:00 2001 From: Aaron Welch Date: Sun, 11 Jan 2015 20:15:27 -0600 Subject: [PATCH 091/175] Moved CSCE 3193 and 3613 to proper categories --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7756244..f7ea1ef 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,13 @@ Courses 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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) +- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. + - [Syllabus](http://comp.uark.edu/~wingning/csce3613/CSCE3613.pdf) + - [Assignments](http://comp.uark.edu/~wingning/csce3613/Homework3613.html) + - [Lecture Notes](http://comp.uark.edu/~wingning/csce3613/CourseNote3613.html) + - [Readings](http://comp.uark.edu/~wingning/csce3613/Link3613.html) - [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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. @@ -229,6 +236,12 @@ Courses - [Assignments/Exams](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) - [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) +- [CSCE 3193](http://www.csce.uark.edu/~sgauch/3193/S11/index.html) **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](http://www.csce.uark.edu/~sgauch/3193/S11/syllabus.html) + - [Notes](http://www.csce.uark.edu/~sgauch/3193/S11/notes/index.html) + - [Assignments](http://www.csce.uark.edu/~sgauch/3193/S11/hw/index.html) + - [Practice Exams](http://www.csce.uark.edu/~sgauch/3193/S11/exams/index.html) ------- @@ -269,19 +282,6 @@ Courses - [Syllabus](http://www.csce.uark.edu/~jgauch/2014/S14/handouts/syllabus.html) - [Assignments](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) - [Practice Exams](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) -- [CSCE 3193](http://www.csce.uark.edu/~sgauch/3193/S11/index.html) **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](http://www.csce.uark.edu/~sgauch/3193/S11/syllabus.html) - - [Notes](http://www.csce.uark.edu/~sgauch/3193/S11/notes/index.html) - - [Assignments](http://www.csce.uark.edu/~sgauch/3193/S11/hw/index.html) - - [Practice Exams](http://www.csce.uark.edu/~sgauch/3193/S11/exams/index.html) -- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. - - [Syllabus](http://comp.uark.edu/~wingning/csce3613/CSCE3613.pdf) - - [Assignments](http://comp.uark.edu/~wingning/csce3613/Homework3613.html) - - [Lecture Notes](http://comp.uark.edu/~wingning/csce3613/CourseNote3613.html) - - [Readings](http://comp.uark.edu/~wingning/csce3613/Link3613.html) - [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) From 8b00930e6f1387ec58241f6293458f5cb961ced5 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 12 Jan 2015 07:13:10 +0300 Subject: [PATCH 092/175] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 536c6d05b4983433c7c12cc255e41d58f1191756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKF-`+P474FdP@0sKTT&tMgC)8kQP98#P)He+ivB9z#m|x%+d@PK4H69+OZMz~ zJ-4|j&as*K>TP>twluRjoM`V1Q{y>(VrP|cARNzlu(e&=t8MRhlj`piF{5~`|u@{bs z@##Q_5db(tIt=TWC4h|yU@sgKk%4(qfl2imF+AzWx2o%fV`9?H<7PakZuXi`JZ?w6 zMY(xTRFncz;8cP0+%DPw*YF?a|5K87Qa}p)D+PQuJPj+nQuWr!%dyus_%oa}A8;Dh oK|zRi42*V+4cqZ$6lGoG8t1)mObj~mK?my30CkZ`fxlMZ2*FPlEdT%j From 4e5a3a11414a682906f98309c2edec8347e6507e Mon Sep 17 00:00:00 2001 From: Brenard Cubacub Date: Sun, 11 Jan 2015 21:24:19 -0800 Subject: [PATCH 093/175] Fixed typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f7ea1ef..d2998f5 100644 --- a/README.md +++ b/README.md @@ -304,7 +304,7 @@ management, storage management, files, distributed systems, and case studies. - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) - [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes - - The course taught by [Ming Y. Chow](http://mchow01.github.io) teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game pysics, 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 + - The course taught by [Ming Y. Chow](http://mchow01.github.io) 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](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) @@ -343,7 +343,7 @@ management, storage management, files, distributed systems, and case studies. - [IGME 582](http://hfoss-fossrit.rhcloud.com) **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](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes - - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) about the multi-disciplinary field algorithms insired 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. + - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) - [11-785](http://deeplearning.cs.cmu.edu/) **Deep Learning** *Carnegie Mellon University* Assignments Readings @@ -357,4 +357,4 @@ management, storage management, files, distributed systems, and case studies. ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. \ No newline at end of file +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. From 4379b05264bff1fff0c36fec2f33866bd39f32d8 Mon Sep 17 00:00:00 2001 From: Zhongwei Yao Date: Mon, 12 Jan 2015 14:52:24 +0800 Subject: [PATCH 094/175] Add Operating System course cs4414 from University of Virginia. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index d2998f5..f4964c2 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,10 @@ management, storage management, files, distributed systems, and case studies. - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) +- [cs4414](http://rust-class.org/index.html) **Operating Systems** *University of Virginia* Lecture Videos Assignments + - A course covers topics include: Analyzes 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](http://rust-class.org/pages/syllabus.html) + - [Lectures](http://rust-class.org/pages/classes.html) ------- From fb0b8f5b7042706cf27492e1ef017b32f80d5402 Mon Sep 17 00:00:00 2001 From: Zhongwei Yao Date: Mon, 12 Jan 2015 15:39:12 +0800 Subject: [PATCH 095/175] Update according to comments. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f4964c2..ca9beda 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ management, storage management, files, distributed systems, and case studies. - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) - [cs4414](http://rust-class.org/index.html) **Operating Systems** *University of Virginia* Lecture Videos Assignments - - A course covers topics include: Analyzes 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. + - 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](http://rust-class.org/pages/syllabus.html) - [Lectures](http://rust-class.org/pages/classes.html) From 81860a6065adb3c8701dc7394d3f952f16f521ed Mon Sep 17 00:00:00 2001 From: Tony Gaeta Date: Tue, 13 Jan 2015 10:52:13 -0500 Subject: [PATCH 096/175] Added RoR course to Misc --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d2998f5..4d32ea9 100644 --- a/README.md +++ b/README.md @@ -352,6 +352,11 @@ management, storage management, files, distributed systems, and case studies. - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) +- [Open Sourced Elective: Database and Rails](http://www.schneems.com/ut-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](http://www.schneems.com/ut-rails/) + - [Assignments](http://www.schneems.com/ut-rails/) + - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) ----- From 9e6e68947ae6c898d513e0325b3d9d1af6f88ae1 Mon Sep 17 00:00:00 2001 From: Samarjeet Date: Tue, 13 Jan 2015 23:10:51 -0500 Subject: [PATCH 097/175] CS162 updated Images+sorted --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d1b1279..0365fce 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,9 @@ Courses - 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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) +- [CS162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings + - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) + - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures - [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) From f1c00e70dc1b609e65be2b407a4f797d3e2505a5 Mon Sep 17 00:00:00 2001 From: Aaron Welch Date: Wed, 14 Jan 2015 08:58:10 -0600 Subject: [PATCH 098/175] Spacing, alphabetization (CS 4414), contributions In addition to the first two changes, which are self explanatory, I also made an addition (which you may/may not want to include) to the contribution guildelines, asking that people alphabetize their submissions. --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0365fce..125d15a 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,9 @@ Courses - 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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) -- [CS162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings - - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) - - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures +- [CS 162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings + - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) + - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures - [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) @@ -59,13 +59,16 @@ Courses - 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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) +- [CS 4414](http://rust-class.org/index.html) **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](http://rust-class.org/pages/syllabus.html) + - [Lectures](http://rust-class.org/pages/classes.html) - [CS 5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) - [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. + - An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies. - [Syllabus](http://comp.uark.edu/~wingning/csce3613/CSCE3613.pdf) - [Assignments](http://comp.uark.edu/~wingning/csce3613/Homework3613.html) - [Lecture Notes](http://comp.uark.edu/~wingning/csce3613/CourseNote3613.html) @@ -108,10 +111,6 @@ management, storage management, files, distributed systems, and case studies. - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) -- [cs4414](http://rust-class.org/index.html) **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](http://rust-class.org/pages/syllabus.html) - - [Lectures](http://rust-class.org/pages/classes.html) ------- @@ -369,4 +368,4 @@ management, storage management, files, distributed systems, and case studies. ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** \ No newline at end of file From 6e8d4b71694f7f600ba4cc8d293459115c0a749d Mon Sep 17 00:00:00 2001 From: Seyfulislam Ozdemir Date: Fri, 16 Jan 2015 01:29:36 +0200 Subject: [PATCH 099/175] +bilkent software architecture design course --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 125d15a..d46e230 100644 --- a/README.md +++ b/README.md @@ -363,9 +363,13 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) +- [CS-411](http://video.bilkent.edu.tr/course_videos.php?courseid=10) **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. + + ----- ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** \ No newline at end of file +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** From a21aff90092fbe220c46d9b0ce5305f00d08e576 Mon Sep 17 00:00:00 2001 From: Seyfulislam Ozdemir Date: Fri, 16 Jan 2015 08:54:20 +0200 Subject: [PATCH 100/175] alphabetical order didnt notice that --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d46e230..957ced3 100644 --- a/README.md +++ b/README.md @@ -325,6 +325,8 @@ Courses - [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) +- [CS 411](http://video.bilkent.edu.tr/course_videos.php?courseid=10) **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 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) @@ -363,8 +365,6 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) -- [CS-411](http://video.bilkent.edu.tr/course_videos.php?courseid=10) **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. From 428a0848e98424e5f82c401330b080ad893c74a4 Mon Sep 17 00:00:00 2001 From: Seyfulislam Ozdemir Date: Fri, 16 Jan 2015 08:55:13 +0200 Subject: [PATCH 101/175] empty line removal --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 957ced3..cf35e65 100644 --- a/README.md +++ b/README.md @@ -366,8 +366,6 @@ Courses - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) - - ----- ### Contributing From 3576810658e16dcf35aeb7d3643f87d695642e0f Mon Sep 17 00:00:00 2001 From: sairampola Date: Sat, 17 Jan 2015 17:57:37 +0530 Subject: [PATCH 102/175] Added Stanford ACM-ICPC Training Course in Algorithms --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 125d15a..900ef7e 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,10 @@ Courses *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) +- [CS 97SI](http://web.stanford.edu/class/cs97si/) **Introduction to Competitive Programming** Assignments Lecture Notes +*Stanford University* + - It contains many algorithms which are necessary for students who want to participate in ACM-ICPC. + - [Lectures and Assignments](http://stanford.edu/~liszt90/acm/notebook.html) - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes *CUNY Hunter College* - 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. @@ -368,4 +372,4 @@ Courses ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** \ No newline at end of file +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** From c77592210d12ca4b357f2841920752020eb5e8e0 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 18 Jan 2015 10:28:58 +0300 Subject: [PATCH 103/175] Updated ACM ICPC course --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 900ef7e..9020472 100644 --- a/README.md +++ b/README.md @@ -182,10 +182,6 @@ Courses *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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) -- [CS 97SI](http://web.stanford.edu/class/cs97si/) **Introduction to Competitive Programming** Assignments Lecture Notes -*Stanford University* - - It contains many algorithms which are necessary for students who want to participate in ACM-ICPC. - - [Lectures and Assignments](http://stanford.edu/~liszt90/acm/notebook.html) - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes *CUNY Hunter College* - 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. @@ -197,6 +193,9 @@ Courses - [CSE 373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) +- [CS 97SI](http://web.stanford.edu/class/cs97si/) **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](http://stanford.edu/~liszt90/acm/notebook.html) - [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) From 79778c6cf5a2bbda8b2b7837340d497a0d7a5a19 Mon Sep 17 00:00:00 2001 From: Artem Tartakynov Date: Sun, 18 Jan 2015 20:26:23 +0600 Subject: [PATCH 104/175] I think that machine learning deserves its own section --- README.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a911d06..3517919 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Table of Contents - [Algorithms](#algorithms) - [CS Theory](#cs-theory) - [Introduction to CS](#introduction-to-cs) +- [Machine Learning](#machine-learning) - [Misc](#misc) - [Contributing](#contributing) @@ -299,6 +300,20 @@ Courses ------- +### Machine Learning + +- [11-785](http://deeplearning.cs.cmu.edu/) **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. +- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings + - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** + - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) + - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) +- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes + - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) + +------- + ### Misc - [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **Computer Vision and Computational Photography** *University of Pennsylvania* Assignments Lecture Notes @@ -309,9 +324,6 @@ Courses - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) -- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) - [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes - The course taught by [Ming Y. Chow](http://mchow01.github.io) 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](http://ocw.tufts.edu/Course/75/Learningunits) @@ -357,12 +369,6 @@ Courses - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) -- [11-785](http://deeplearning.cs.cmu.edu/) **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. -- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings - - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) - [Open Sourced Elective: Database and Rails](http://www.schneems.com/ut-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](http://www.schneems.com/ut-rails/) From 8955b786eddca6e8a31e22226aad4c2488b493e6 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 19 Jan 2015 08:17:49 +0300 Subject: [PATCH 105/175] Added contribution guidelines in a separate file --- CONTRIBUTING.md | 3 +++ README.md | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e01accc --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +### Contributing + +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** diff --git a/README.md b/README.md index 3517919..aac0b54 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ Table of Contents - [Introduction to CS](#introduction-to-cs) - [Machine Learning](#machine-learning) - [Misc](#misc) -- [Contributing](#contributing) ### Legend @@ -377,6 +376,3 @@ Courses ----- -### Contributing - -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** From 7b546becf850d6e0c2256c5af4932f257bc77a62 Mon Sep 17 00:00:00 2001 From: Christos Date: Tue, 20 Jan 2015 03:07:49 +0200 Subject: [PATCH 106/175] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index aac0b54..b832b66 100644 --- a/README.md +++ b/README.md @@ -310,6 +310,12 @@ Courses - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) +- [CVX 101](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/info) **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](http://web.stanford.edu/~boyd/cvxbook/) + - [Lectures and Assignments](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/courseware/7206c57866504e83821d00b5d3f80793/) + ------- From 7d8a03c882eebe1c73d97640120d50141ae4a980 Mon Sep 17 00:00:00 2001 From: rajohns Date: Wed, 21 Jan 2015 14:56:35 -0600 Subject: [PATCH 107/175] adding cs193p stanford ios course --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b832b66..efb7ea1 100644 --- a/README.md +++ b/README.md @@ -379,6 +379,10 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) +- [CS193p](https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550) **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](https://itunes.apple.com/us/course/programming-abstractions/id495054099) ----- From e6386e5309289a7b20635aa5158ed77df54b7ab5 Mon Sep 17 00:00:00 2001 From: rajohns Date: Wed, 21 Jan 2015 15:03:15 -0600 Subject: [PATCH 108/175] alphabetizing course --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index efb7ea1..3fea316 100644 --- a/README.md +++ b/README.md @@ -338,6 +338,10 @@ Courses - 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](https://github.com/mikeizbicki/ucr-cs100) - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) +- [CS 193p](https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550) **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](https://itunes.apple.com/us/course/programming-abstractions/id495054099) - [CS 223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) @@ -379,10 +383,6 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) -- [CS193p](https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550) **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](https://itunes.apple.com/us/course/programming-abstractions/id495054099) ----- From cd59970f12981d162cc6f4839b54920c9010a4dd Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 25 Jan 2015 10:30:07 +0300 Subject: [PATCH 109/175] Updated CS193p with Swift link --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 3fea316..ffcb472 100644 --- a/README.md +++ b/README.md @@ -342,6 +342,7 @@ Courses - 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](https://itunes.apple.com/us/course/programming-abstractions/id495054099) + - [Updated courses for iOS8 - Swift](https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099) - [CS 223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) @@ -383,6 +384,3 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) - ------ - From b56fe0a091363998aab11f0201f26170ab987412 Mon Sep 17 00:00:00 2001 From: Praveen Gowda I V Date: Mon, 26 Jan 2015 13:08:03 +0530 Subject: [PATCH 110/175] Add CS109 Data Science from Harvard --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index ffcb472..8886437 100644 --- a/README.md +++ b/README.md @@ -307,6 +307,12 @@ Courses - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) +- [CS 109](http://cs109.github.io/2014/) **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](http://cm.dce.harvard.edu/2015/01/14328/publicationListing.shtml) + - [Slides](http://cs109.github.io/2014/pages/schedule.html) + - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) + - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) From 562ac93b2b8432df0c7108b281fe9cd258eb2bf8 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 26 Jan 2015 23:38:23 +0300 Subject: [PATCH 111/175] Updated link for Cs425 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8886437..cc2ee87 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Courses - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) - [CS 425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. - - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) + - [Lectures](https://courses.engr.illinois.edu/cs425/fa2014/lectures.html) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) - [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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. From 0fe47dc590651998a61cef51ba5e70e56184afa9 Mon Sep 17 00:00:00 2001 From: awelch83 Date: Thu, 29 Jan 2015 13:12:16 -0600 Subject: [PATCH 112/175] Added titles (tooltips) to each of the icons, for all courses. This will make it so that readers won't have to scroll back up to the top of the document to view the legend. --- README.md | 218 +++++++++++++++++++++++++++--------------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/README.md b/README.md index cc2ee87..d5f3972 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Awesome Courses 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 courses which make their high-quality material i.e. assignments, lectures, notes, readings & examinations available online for free. +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 courses which make their high-quality material i.e. assignments, lectures, notes, readings & examinations available online for free. Table of Contents ----------------- @@ -19,10 +19,10 @@ Table of Contents ### Legend -- Lecture Videos - Lecture Videos -- Lecture Notes - Lecture Notes -- Assignments - Assignments / Labs -- Readings - Readings +- Lecture Videos - Lecture Videos +- Lecture Notes - Lecture Notes +- Assignments - Assignments / Labs +- Readings - Readings Courses @@ -30,85 +30,85 @@ Courses ### Systems -- [CS 107](http://web.stanford.edu/class/cs107/index.html) **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. +- [CS 107](http://web.stanford.edu/class/cs107/index.html) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) - [Assignments](http://web.stanford.edu/class/cs107/assignments.html) -- [CS 140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **Operating Systems** *Stanford University* Assignments Lecture Notes +- [CS 140](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) **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](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lectures.php) - [Assignments](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/projects.php) -- [CS 162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings +- [CS 162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures -- [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* Assignments Readings Lecture Notes +- [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) -- [CS 241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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). +- [CS 241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - [Github Page](http://angrave.github.io/sys/#) - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) -- [CS 425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos Assignments Readings +- [CS 425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. - [Lectures](https://courses.engr.illinois.edu/cs425/fa2014/lectures.html) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) -- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **Real-Time Programming** *University of Waterloo* Assignments Lecture Notes +- [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) -- [CS 4414](http://rust-class.org/index.html) **Operating Systems** *University of Virginia* Lecture Videos Assignments +- [CS 4414](http://rust-class.org/index.html) **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](http://rust-class.org/pages/syllabus.html) - [Lectures](http://rust-class.org/pages/classes.html) -- [CS 5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **Cloud Computing** *Cornell University* Lecture Notes -Readings +- [CS 5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) -- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. +- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. - [Syllabus](http://comp.uark.edu/~wingning/csce3613/CSCE3613.pdf) - [Assignments](http://comp.uark.edu/~wingning/csce3613/Homework3613.html) - [Lecture Notes](http://comp.uark.edu/~wingning/csce3613/CourseNote3613.html) - [Readings](http://comp.uark.edu/~wingning/csce3613/Link3613.html) -- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **Computer Architecture 3** *CUNY Hunter College* Assignments -Lecture Notes +- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **Parallel Computing** *CUNY Hunter College* Assignments -Lecture Notes +- [CSCI 493.66](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **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. -- [ECE 459](http://patricklam.ca/p4p/) **Programming for Performance** *University of Waterloo* Lecture Notes -Assignments +- [ECE 459](http://patricklam.ca/p4p/) **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](http://patricklam.ca/p4p/notes/) -- [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **Principles of Distributed Computing** *ETH-Zurich* Assignments Readings Lecture Notes +- [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) - [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) -- [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/spac/) **Parallelism and Concurrency** *Univ of Washington* Readings +- [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/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](http://css.csail.mit.edu/6.824/2014/index.html) **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! +- [6.824](http://css.csail.mit.edu/6.824/2014/index.html) **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](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824` - [Readings](http://css.csail.mit.edu/6.824/2014/schedule.html) -- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **Operating Systems** *MIT* Assignments Lecture Notes +- [6.828](http://pdos.csail.mit.edu/6.828/2014/) **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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) -- [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **Distributed Systems** *Carnegie-Mellon University* Assignments Lecture Notes +- [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) -- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings +- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings - A project focused course on Distributed Systems with an awesome list of readings - [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) -- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **Introduction to Computer Architecture** *CMU* Lecture Videos Assignments Readings +- [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) - - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) + - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) @@ -116,48 +116,48 @@ Courses ### Programming Languages / Compilers -- [CIS 194](http://www.seas.upenn.edu/~cis194/) **Introduction to Haskell** *Penn Engineering* Assignments Lecture Notes +- [CIS 194](http://www.seas.upenn.edu/~cis194/) **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](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercises - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) -- [Clojure](http://mooc.cs.helsinki.fi/clojure) **Functional Programming with Clojure** *University of Helsinki* Assignments +- [Clojure](http://mooc.cs.helsinki.fi/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](http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html) -- [COS 326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes +- [COS 326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* Assignments Lecture Notes - Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language - [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) -- [CS 164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes +- [CS 164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* Lecture Videos Assignments Lecture Notes - Introduction to programming languages by designing and implementing domain-specific languages. - [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) - [Code for Assignments](https://bitbucket.org/cs164_overlord/) -- [CS 173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments +- [CS 173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* Lecture Videos Assignments - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) -- [CS 240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes +- [CS 240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* Assignments Lecture Notes - Building software systems in Haskell - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) -- [CS 3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **Data Structures and Functional Programming** *Cornell University* Assignments Lecture Notes +- [CS 3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) -- [CS 421](https://courses.engr.illinois.edu/cs421/fa2014/) **Programming Languages and Compilers** *Univ of Illinois, Urbana-Champaign* Lecture Videos Assignments Lecture Notes +- [CS 421](https://courses.engr.illinois.edu/cs421/fa2014/) **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. - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) -- [CS 4610](http://www.cs.virginia.edu/~weimer/4610/) **Programming Languages and Compilers** *University of Virginia* Assignments Lecture Notes +- [CS 4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) -- [CS 5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings +- [CS 5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) -- [CSE 341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes +- [CSE 341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) @@ -166,86 +166,86 @@ Courses ### Algorithms -- [CS 61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments +- [CS 61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments - 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. - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) -- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **Fundamental Algorithms** *Univ of Illinois, Urbana-Champaign* Assignments Lecture Notes +- [CS 473/573](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/) **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](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-algorithms.pdf) - - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) -- [CS 2150](https://github.com/aaronbloomfield/pdr) **Program & Data Representation** *University of Virginia* Assignments Lecture Notes + - [Labs and Exams](http://web.engr.illinois.edu/~jeffe/teaching/algorithms/all-hwex.pdf) +- [CS 2150](https://github.com/aaronbloomfield/pdr) **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](http://aaronbloomfield.github.io/pdr/slides/) - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) -- [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **Software Design and Analysis I** Assignments Lecture Notes -*CUNY Hunter College* +- [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) -- [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes -*CUNY Hunter College* +- [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes +*CUNY Hunter College* - 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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) -- [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **Software Design and Analysis III** Assignments Lecture Notes +- [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/csci335_s14.php) -- [CSE 373](http://www3.cs.stonybrook.edu/~skiena/373/) **Analysis of Algorithms** *Stony Brook University* Lecture Videos Assignments Lecture Notes Readings +- [CSE 373](http://www3.cs.stonybrook.edu/~skiena/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](http://www.algorist.com/) has been touted by many to be best for [getting that job in Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html). In addition, he's also well-known for tutoring students in competitive [programming competitions](http://www.programming-challenges.com/pg.php?page=index). If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course. - [Lecture Videos](http://www.cs.sunysb.edu/~algorith/video-lectures/) -- [CS 97SI](http://web.stanford.edu/class/cs97si/) **Introduction to Competitive Programming** *Stanford University* Assignments Lecture Notes +- [CS 97SI](http://web.stanford.edu/class/cs97si/) **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](http://stanford.edu/~liszt90/acm/notebook.html) -- [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes +- [ECS 122A](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) **Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes - Taught by [Dan Gusfield](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs122f10/syll122.pdf) - [Lecture Videos](http://web.cs.ucdavis.edu/~gusfield/cs122f10/videolist.html) - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs122f10/) -- [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **Graduate Level Algorithm Design and Analysis** *UC Davis* Lecture Videos Assignments Lecture Notes +- [ECS 222A](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) **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](http://web.cs.ucdavis.edu/~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](http://web.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html) - [Syllabus](http://web.cs.ucdavis.edu/~gusfield/cs222w11/syll11.pdf) - [Assignments](http://web.cs.ucdavis.edu/~gusfield/cs222w11/) -- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **Hacking a Google Interview** *MIT* Readings +- [6.INT](http://courses.csail.mit.edu/iap/interview/index.php) **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](http://courses.csail.mit.edu/iap/interview/materials.php) - [Topics Covered](http://courses.csail.mit.edu/iap/interview/calendar.php) -- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* Lecture Videos Assignments Lecture Notes +- [6.851](http://courses.csail.mit.edu/6.851/spring14/index.html) **Advanced Data Structures** *MIT* Lecture Videos Assignments Lecture Notes - This is an advanced DS course, you must be done with the [Advanced Algorithms](http://courses.csail.mit.edu/6.854/current/) course before attempting this one. - [Lectures](http://courses.csail.mit.edu/6.851/spring14/lectures/) Contains videos from sp2012 version, but there isn't much difference. - [Assignments](http://courses.csail.mit.edu/6.851/spring14/hmwk.html) contains the calendar as well. -- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **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. +- [6.854/18.415J](http://courses.csail.mit.edu/6.854/current/) **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](http://nb.mit.edu/subscribe?key=D3a8CYpoO2VcR1ZcfaxmR5KbyjCGXd3INNXvL3mxEakYJ7qGJw) to access the [problem set and lectures](http://nb.mit.edu/). -- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **Algorithms** *Carnegie Mellon University* Lecture Notes +- [15-451/651](http://www.cs.cmu.edu/afs/cs/academic/class/15451-f10/www/) **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](http://en.wikipedia.org/wiki/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. ------- ### CS Theory -- [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **Software Foundations** *University of Pennsylvania* Assignments Lecture Notes +- [CIS 500](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html) **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](http://www.seas.upenn.edu/~cis500/cis500-f14/index.html#schedule) - [Textbook](http://www.cis.upenn.edu/~bcpierce/sf/current/index.html) -- [CS 103](http://web.stanford.edu/class/cs103/) **Mathematical Foundations of Computing** *Stanford University* Assignments Lecture Notes +- [CS 103](http://web.stanford.edu/class/cs103/) **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](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **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. +- [CS 173](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/index.html) **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](http://web.engr.illinois.edu/~mfleck/building-blocks/) Written by the professor. Includes Instructor's Guide. - [Assignments](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Homework/index.html) - [Exams](https://courses.engr.illinois.edu/cs173/fa2014/A-lecture/Exams/index.html) -- [CS 276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **Foundations of Cryptography** *UC Berkeley* Lecture Notes +- [CS 276](http://www.cs.berkeley.edu/~sanjamg/classes/cs276-fall14/) **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](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes +- [CS 278](http://www.cs.berkeley.edu/~luca/cs278-08/) **Complexity Theory** *UC Berkeley* Lecture Notes - An 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](https://courses.engr.illinois.edu/cs498374/fa2014/) **Algorithms & Models of Computation (Fall 2014)** *University of Illinois Urbana-Champaign* Lecture Videos Assignments Lecture Notes +- [CS 374](https://courses.engr.illinois.edu/cs498374/fa2014/) **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](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) - [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) -- [CSCE 3193](http://www.csce.uark.edu/~sgauch/3193/S11/index.html) **Programming Paradigms** *University of Arkansas (Fayetteville)* Assignments Lecture Notes +- [CSCE 3193](http://www.csce.uark.edu/~sgauch/3193/S11/index.html) **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](http://www.csce.uark.edu/~sgauch/3193/S11/syllabus.html) - [Notes](http://www.csce.uark.edu/~sgauch/3193/S11/notes/index.html) @@ -256,42 +256,42 @@ Courses ### Introduction to CS -- [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **The Beauty and Joy of Computing** *UC Berkeley* Lecture Videos Assignments Lecture Notes +- [CS 10](https://inst.eecs.berkeley.edu/~cs10/fa14/) **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*!*](http://snap.berkeley.edu) (based on Scratch by MIT). - [Curriculum](http://bjc.berkeley.edu) -- [CS 50](https://cs50.harvard.edu/) **Introduction to Computer Science** *Harvard University* Lecture Videos Assignments Lecture Notes +- [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) -- [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **Computer Science 101** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **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. +- [CS 106A](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) - [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) -- [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **Programming Abstractions** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) -- [CS 107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **Programming Paradigms** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) -- [CSCE 2004](http://www.csce.uark.edu/~sgauch/2004/S14/index.html) **Programming Foundations I** *University of Arkansas (Fayetteville)* Assignments Lecture NotesReadings +- [CSCE 2004](http://www.csce.uark.edu/~sgauch/2004/S14/index.html) **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](http://www.csce.uark.edu/~sgauch/2004/S14/syllabus.html) - [Notes](http://www.csce.uark.edu/~sgauch/2004/S14/notes/index.html) - [Assignments](http://www.csce.uark.edu/~sgauch/2004/S14/hw/index.html) - [Practice Exams](http://www.csce.uark.edu/~sgauch/2004/S14/index.html) -- [CSCE 2014](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) **Programming Foundations 2** *University of Arkansas (Fayetteville)* Assignments Lecture NotesReadings +- [CSCE 2014](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) **Programming Foundations 2** *University of Arkansas (Fayetteville)* Assignments Lecture NotesReadings - This course continues developing problem solving techniques by focusing on fundamental data structures and associated algorithms. Topics include: abstract data types, introduction to object-oriented programming, linked lists, stacks, queues, hash tables, binary trees, graphs, recursion, and searching and sorting algorithms. Using C++ in a UNIX environment. - [Syllabus](http://www.csce.uark.edu/~jgauch/2014/S14/handouts/syllabus.html) - [Assignments](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) - [Practice Exams](http://www.csce.uark.edu/~jgauch/2014/S14/index.html) -- [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **Structure and Interpretation of Computer Programs** *MIT* Lecture Videos Assignments Lecture Notes +- [6.001](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm) **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](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) @@ -301,91 +301,91 @@ Courses ### Machine Learning -- [11-785](http://deeplearning.cs.cmu.edu/) **Deep Learning** *Carnegie Mellon University* Assignments Readings +- [11-785](http://deeplearning.cs.cmu.edu/) **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. -- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings +- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) -- [CS 109](http://cs109.github.io/2014/) **Data Science** *Harvard University* Assignments Lecture Notes Readings +- [CS 109](http://cs109.github.io/2014/) **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](http://cm.dce.harvard.edu/2015/01/14328/publicationListing.shtml) - [Slides](http://cs109.github.io/2014/pages/schedule.html) - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* -- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes +- [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) -- [CVX 101](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/info) **Convex Optimization** *Stanford University* Assignments Lecture Notes - Readings +- [CVX 101](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/info) **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](http://web.stanford.edu/~boyd/cvxbook/) - [Lectures and Assignments](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/courseware/7206c57866504e83821d00b5d3f80793/) - + ------- ### Misc -- [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **Computer Vision and Computational Photography** *University of Pennsylvania* Assignments Lecture Notes +- [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **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](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) -- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes +- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) -- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes +- [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes - The course taught by [Ming Y. Chow](http://mchow01.github.io) 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](http://ocw.tufts.edu/Course/75/Learningunits) - [Assignments](http://ocw.tufts.edu/Course/75/Assignments) - [Labs](http://ocw.tufts.edu/Course/75/Labs) -- [CS 100](https://github.com/mikeizbicki/ucr-cs100) **Open Source Software Construction** *UC Riverside* Assignments Lecture Notes +- [CS 100](https://github.com/mikeizbicki/ucr-cs100) **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](https://github.com/mikeizbicki/ucr-cs100) - [Assignments](https://github.com/mikeizbicki/ucr-cs100/tree/2015winter/assignments) -- [CS 193p](https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550) **Developing Applications for iOS** *Stanford University* Lecture VideosAssignments Lecture Notes +- [CS 193p](https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550) **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](https://itunes.apple.com/us/course/programming-abstractions/id495054099) - [Updated courses for iOS8 - Swift](https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099) -- [CS 223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **Introduction to Robotics** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 223A](http://see.stanford.edu/see/courseinfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) **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. - [Lectures](http://see.stanford.edu/see/lecturelist.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743) - [Assignments](http://see.stanford.edu/see/materials/aiircs223a/assignments.aspx) -- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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 +- [CS 378](https://github.com/ut-cs378-vision-2014fall/course-info) **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](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) -- [CS 411](http://video.bilkent.edu.tr/course_videos.php?courseid=10) **Software Architecture Design** *Bilkent University* Lecture Videos +- [CS 411](http://video.bilkent.edu.tr/course_videos.php?courseid=10) **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 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings +- [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) -- [CSE 154](http://courses.cs.washington.edu/courses/cse154/14au/) **Web Programming** *University of Washington* Assignments Lecture Notes +- [CSE 154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) - [Assignments](http://courses.cs.washington.edu/courses/cse154/14au/homework.shtml) -- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* Lecture Notes Readings +- [EECS 588](https://www.eecs.umich.edu/courses/eecs588/) **Computer & Network Security** *University of Michigan* Lecture Notes Readings - Taught by [J. Alex Halderman](https://jhalderm.com/) who has analyzed the security of Electronic Voting Machines in the [US](https://jhalderm.com/pub/papers/dcvoting-fc12.pdf) and [over](https://jhalderm.com/pub/papers/ivoting-ccs14.pdf) [seas](https://jhalderm.com/pub/papers/evm-ccs10.pdf). - This intensive research seminar covers foundational work and current topics in computer systems security. - [Readings](https://www.eecs.umich.edu/courses/eecs588/readings.html) -- [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* Assignments Lecture Notes +- [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* Assignments Lecture Notes - Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/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 ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs) -- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* Assignments Lecture Notes Readings +- [ICS 314](http://philipmjohnson.github.io/ics314f13/) **Software Engineering** *University of Hawaii* Assignments Lecture Notes Readings - Taught by [Philip Johnson](http://philipmjohnson.org/) - Introduction to software engineering using the ["Athletic Software Engineering" pedagogy](http://philipmjohnson.org/2013/12/16/athletic-software-engineering-education-initial-results/) - [Readings](http://philipmjohnson.github.io/ics314f13/readings/) - [Experiences](http://philipmjohnson.github.io/ics314f13/experiences/) - [Assessments](http://philipmjohnson.github.io/ics314f13/assessments/) -- [IGME 582](http://hfoss-fossrit.rhcloud.com) **Humanitarian Free & Open Source Software Development** *Rochester Institute of Technology* Assignments Lecture Notes +- [IGME 582](http://hfoss-fossrit.rhcloud.com) **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](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes +- [I485 / H400](http://www.informatics.indiana.edu/rocha/i-bic/) **Biologically Inspired Computation** *Indiana University* Assignments Lecture Notes - Course taught by [Luis Rocha](http://www.informatics.indiana.edu/rocha/lr_form.html) 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](http://www.informatics.indiana.edu/rocha/i-bic/#materials) - [Assignments](http://www.informatics.indiana.edu/rocha/i-bic/#labs) -- [Open Sourced Elective: Database and Rails](http://www.schneems.com/ut-rails/) **Intro to Ruby on Rails** *University of Texas* Lecture VideosAssignments Lecture Notes +- [Open Sourced Elective: Database and Rails](http://www.schneems.com/ut-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](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) From 41fc514911bde40192e1555bc7df928b40bd28e8 Mon Sep 17 00:00:00 2001 From: awelch83 Date: Thu, 29 Jan 2015 13:57:46 -0600 Subject: [PATCH 113/175] Added "things to keep in mind" section. --- CONTRIBUTING.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e01accc..9a65065 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,8 @@ ### Contributing -Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. **When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for.** +Have a few courses in mind that you think are awesome and would fit in this list? Feel free to send a [pull request](https://github.com/prakhar1989/awesome-courses/pulls). However, do note that I'm not keen on adding popular courses (such as MOOCs / MIT OCW) as there are services like [ClassCentral](https://www.class-central.com/) doing a great job of aggregation. This list is ideally for courses which are relatively unknown and make their material (assignments, lectures, exams etc.) available online for free. + +### A couple of things to keep in mind: + +- When adding new courses to the various categories, please ensure that alphabetization (ex. CSCE 48 should be listed after CS 240) is maintained. This makes it easier for viewers to find what they are looking for. +- Next to each course title, you'll notice a few icons. These icons serve to let readers know, at a quick glance, what materials they can expect to find at the courses' websites. The meanings of these icons are explained at the top of [README.md](https://github.com/prakhar1989/awesome-courses/blob/master/README.md), and also appear as a tooltip whenever you hover over them with your mouse arrow. The code needed to add these tags is easily found in [README.md](https://github.com/prakhar1989/awesome-courses/blob/master/README.md), so you can just copy and paste as needed. \ No newline at end of file From 164e47d03875ac8707d0c784aba7927ca86482be Mon Sep 17 00:00:00 2001 From: Matt Chan Date: Thu, 29 Jan 2015 16:50:25 -0800 Subject: [PATCH 114/175] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d5f3972..cd338ec 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,8 @@ Courses - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) +- [CS1410-2](http://www.eng.utah.edu/~cs1410-20/) and [CS2420-20](http://www.eng.utah.edu/~cs2420-20/) **Computer Science I and II for Hackers** *University of Utah* Assignments Lecture Notes Readings + - An intro course in the spirit of SICP designed Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. ------- From 94185f9042129255183ff4a9b0d65edec5610a80 Mon Sep 17 00:00:00 2001 From: Bhavdeep Sethi Date: Sat, 31 Jan 2015 11:32:53 -0500 Subject: [PATCH 115/175] Updated fork, adding Big Data Analytics --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d5f3972..214af2f 100644 --- a/README.md +++ b/README.md @@ -390,3 +390,8 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) +- [EECS E6893 & EECS E6895](http://www.ee.columbia.edu/~cylin/course/bigdata/) **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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) + - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) + - [Assignments](Assignments are present in the Course Slides) From 7ec61c38d48b985bfe91917ea44c5481c9211b6a Mon Sep 17 00:00:00 2001 From: Bhavdeep Sethi Date: Sat, 31 Jan 2015 11:34:07 -0500 Subject: [PATCH 116/175] Updated assignment text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 214af2f..e7f4438 100644 --- a/README.md +++ b/README.md @@ -394,4 +394,4 @@ Courses - 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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - - [Assignments](Assignments are present in the Course Slides) + - Assignments - Assignments are present in the Course Slides From 87d88037fabe95f67be1f55f8e49bed7434f3215 Mon Sep 17 00:00:00 2001 From: Rahul Date: Sun, 1 Feb 2015 00:52:50 +0530 Subject: [PATCH 117/175] Adding UC Berkeley's Analyzing Big Data with Twitter course. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d5f3972..da15869 100644 --- a/README.md +++ b/README.md @@ -390,3 +390,8 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) + + +- [Info 290](http://www.ischool.berkeley.edu/courses/i290-abdt) **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](http://www.ischool.berkeley.edu/newsandevents/audiovideo/webcast/21963) From 63575a63032ac8a5990be086516afca8591080e9 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 1 Feb 2015 10:59:30 +0300 Subject: [PATCH 118/175] added coursepage for Info290 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index da15869..38963b8 100644 --- a/README.md +++ b/README.md @@ -390,8 +390,7 @@ Courses - [Lectures](http://www.schneems.com/ut-rails/) - [Assignments](http://www.schneems.com/ut-rails/) - [Videos](https://www.youtube.com/playlist?list=PL7A85FD7803A8CB1F) - - - [Info 290](http://www.ischool.berkeley.edu/courses/i290-abdt) **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](http://www.ischool.berkeley.edu/newsandevents/audiovideo/webcast/21963) + - [Previous Years coursepage](http://blogs.ischool.berkeley.edu/i290-abdt-s12/) From 31f30e0b6739b587187fd122f01d94adee5d0a18 Mon Sep 17 00:00:00 2001 From: "Robert (Robby) O'Connor" Date: Thu, 29 Jan 2015 19:36:22 -0500 Subject: [PATCH 119/175] Add University of Southern California CSCI 104 class. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d5f3972..0328018 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,11 @@ Courses - 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](http://aaronbloomfield.github.io/pdr/slides/) - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) +- [CSCI 104](http://www-scf.usc.edu/~csci104/20142/lectures/) **Data Structures and Object Oriented Design** Assignments Lecture Notes *University of Southern California (USC)* + - [Lectures](http://www-scf.usc.edu/~csci104/20142/lectures) + - [Labs](http://www-scf.usc.edu/~csci104/20142/labs) + - [Assignments](http://www-scf.usc.edu/~csci104/20142/assignments/) + - [Additional Resources](http://www-scf.usc.edu/~csci104/20142/resources.html) - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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. From d0020a9cf1d6af0daac213d3aeb22a7413ec6b2b Mon Sep 17 00:00:00 2001 From: souptikji Date: Mon, 2 Feb 2015 12:36:40 +0530 Subject: [PATCH 120/175] "Distributed Systems"- VU Amsterdam by Tanenbaum & Van Steen Couldn't find any course code, so named it "VU: Distributed Systems" --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 0ad4172..e424fca 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,12 @@ Courses - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) +- [VU:Distributed Systems](http://www.distributed-systems.net/index.php?id=distributed-systems-principles-and-paradigms) **Distributed Systems: Principles and Paradigms (Fall 2012)** *Vrije Universiteit, Amsterdam* Lecture Videos Assignments Lecture Notes + - Distributed systems often appear to be highly complex and intertwined networked systems. Touching one component often affects many others in surprising ways. In this course, we aim at explaining the basics of distributed systems by systematically taking different perspectives, and subsequently bringing these perspectives together by looking at often-applied organizations of distributed systems. This course closely follows the timeless classic Distributed Systems: Principles and Paradigms by some of the pioneers in the field of Distributes systems-Andrew S. Tanenbaum and Maarten van Steen + - [Slides](http://www.distributed-systems.net/courses/ds/ds-slides/) + - [Video lectures](http://www.distributed-systems.net/courses/ds/ds-screencasts/) + - [Exams](http://www.distributed-systems.net/courses/ds/ds-exams/) + ------- ### Programming Languages / Compilers From 8d0217d7dc965b284a0e2e5fc924bd5787fc5223 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 2 Feb 2015 13:38:46 +0300 Subject: [PATCH 121/175] fixed a few spacing issues. --- README.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e424fca..5f3bd37 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,7 @@ Courses - [Assignments](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - [Github Page](http://angrave.github.io/sys/#) - [Crowd Sourced Book](https://github.com/angrave/SystemProgramming/wiki) -- [CS 425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. +- [CS 425](https://courses.engr.illinois.edu/cs425/fa2014/index.html) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* Lecture Videos 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 2014 version by Prof Indranil Gupta. - [Lectures](https://courses.engr.illinois.edu/cs425/fa2014/lectures.html) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) - [CS 452](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/) **Real-Time Programming** *University of Waterloo* Assignments Lecture Notes @@ -67,14 +66,12 @@ Courses 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](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) -- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. +- [CSCE 3613](http://comp.uark.edu/~wingning/csce3613/csce3613.html) **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. - [Syllabus](http://comp.uark.edu/~wingning/csce3613/CSCE3613.pdf) - [Assignments](http://comp.uark.edu/~wingning/csce3613/Homework3613.html) - [Lecture Notes](http://comp.uark.edu/~wingning/csce3613/CourseNote3613.html) - [Readings](http://comp.uark.edu/~wingning/csce3613/Link3613.html) -- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **Computer Architecture 3** *CUNY Hunter College* Assignments -Lecture Notes +- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **UNIX System Programming (formerly UNIX Tools)** *CUNY Hunter College* Assignments Lecture Notes @@ -103,15 +100,13 @@ Courses - [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) -- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings - - A project focused course on Distributed Systems with an awesome list of readings +- [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* Readings - A project focused course on Distributed Systems with an awesome list of readings - [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) - [18-447](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=start) **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'14 version by Prof. [Onur Mutlu ](http://users.ece.cmu.edu/~omutlu/) - [Lectures and Recitation](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=schedule) - [Homeworks](http://www.ece.cmu.edu/~ece447/s14/doku.php?id=homeworks) 7 HWs with answer set as well - [Readings] (http://www.ece.cmu.edu/~ece447/s14/doku.php?id=readings) - - [VU:Distributed Systems](http://www.distributed-systems.net/index.php?id=distributed-systems-principles-and-paradigms) **Distributed Systems: Principles and Paradigms (Fall 2012)** *Vrije Universiteit, Amsterdam* Lecture Videos Assignments Lecture Notes - Distributed systems often appear to be highly complex and intertwined networked systems. Touching one component often affects many others in surprising ways. In this course, we aim at explaining the basics of distributed systems by systematically taking different perspectives, and subsequently bringing these perspectives together by looking at often-applied organizations of distributed systems. This course closely follows the timeless classic Distributed Systems: Principles and Paradigms by some of the pioneers in the field of Distributes systems-Andrew S. Tanenbaum and Maarten van Steen - [Slides](http://www.distributed-systems.net/courses/ds/ds-slides/) From ff157dfd01f551d0a2fde73c29724ccc68ff8857 Mon Sep 17 00:00:00 2001 From: Matt Chan Date: Mon, 2 Feb 2015 04:55:53 -0800 Subject: [PATCH 122/175] Add lectures + assignments --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cd338ec..26d2201 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,8 @@ Courses - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) - [CS1410-2](http://www.eng.utah.edu/~cs1410-20/) and [CS2420-20](http://www.eng.utah.edu/~cs2420-20/) **Computer Science I and II for Hackers** *University of Utah* Assignments Lecture Notes Readings - An intro course in the spirit of SICP designed Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. + - [Lectures and Assignments 1](http://www.eng.utah.edu/~cs1410-20/schedule.html) + - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) ------- From 250b4e5e72bdef80fc744047a8800123759e1b7f Mon Sep 17 00:00:00 2001 From: Matt Chan Date: Mon, 2 Feb 2015 04:59:54 -0800 Subject: [PATCH 123/175] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 26d2201..b2a3468 100644 --- a/README.md +++ b/README.md @@ -161,10 +161,6 @@ Courses - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) -- [CS1410-2](http://www.eng.utah.edu/~cs1410-20/) and [CS2420-20](http://www.eng.utah.edu/~cs2420-20/) **Computer Science I and II for Hackers** *University of Utah* Assignments Lecture Notes Readings - - An intro course in the spirit of SICP designed Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. - - [Lectures and Assignments 1](http://www.eng.utah.edu/~cs1410-20/schedule.html) - - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) ------- @@ -300,6 +296,10 @@ Courses - [Lectures](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures) - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) - [IDE](http://www.neilvandyke.org/racket-sicp/) +- [CS1410-2](http://www.eng.utah.edu/~cs1410-20/) and [CS2420-20](http://www.eng.utah.edu/~cs2420-20/) **Computer Science I and II for Hackers** *University of Utah* Assignments Lecture Notes Readings + - An intro course in the spirit of SICP designed Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much... + - [Lectures and Assignments 1](http://www.eng.utah.edu/~cs1410-20/schedule.html) + - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) ------- From 7c1b3d0473c126044e35ea0b42b30f99ef7b0012 Mon Sep 17 00:00:00 2001 From: Matt Chan Date: Mon, 2 Feb 2015 05:01:02 -0800 Subject: [PATCH 124/175] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b2a3468..857bde8 100644 --- a/README.md +++ b/README.md @@ -300,7 +300,8 @@ Courses - An intro course in the spirit of SICP designed Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much... - [Lectures and Assignments 1](http://www.eng.utah.edu/~cs1410-20/schedule.html) - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - + - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) + - [Racket Language](http://racket-lang.org/) ------- ### Machine Learning From db9dcb5ae8ec125c739e7702910104aa8f7274e8 Mon Sep 17 00:00:00 2001 From: Matt Chan Date: Mon, 2 Feb 2015 05:01:32 -0800 Subject: [PATCH 125/175] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 857bde8..b775f58 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,7 @@ Courses - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) - [Racket Language](http://racket-lang.org/) + ------- ### Machine Learning From 97dcc38ff772fd7a64e57e5fd294db172d7e93f0 Mon Sep 17 00:00:00 2001 From: Matt Chan Date: Mon, 2 Feb 2015 05:03:29 -0800 Subject: [PATCH 126/175] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b775f58..77e191e 100644 --- a/README.md +++ b/README.md @@ -297,7 +297,7 @@ Courses - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) - [IDE](http://www.neilvandyke.org/racket-sicp/) - [CS1410-2](http://www.eng.utah.edu/~cs1410-20/) and [CS2420-20](http://www.eng.utah.edu/~cs2420-20/) **Computer Science I and II for Hackers** *University of Utah* Assignments Lecture Notes Readings - - An intro course in the spirit of SICP designed Professor Matthew Flatt (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much... + - An intro course in the spirit of SICP designed by [Professor Matthew Flatt](http://www.cs.utah.edu/~mflatt/) (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much... - [Lectures and Assignments 1](http://www.eng.utah.edu/~cs1410-20/schedule.html) - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) From 4dac989685e5d6dde6dd6a1c37032866ae3687ce Mon Sep 17 00:00:00 2001 From: Arne Neumann Date: Sat, 7 Feb 2015 14:42:30 +0100 Subject: [PATCH 127/175] add Statistical & Discrete Methods for Scientific Computing --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 4f2fb9b..8ae5227 100644 --- a/README.md +++ b/README.md @@ -328,6 +328,10 @@ Courses - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) +- [CS395T](http://www.nr.com/CS395T/) **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](http://granite.ices.utexas.edu/coursewiki/index.php/Main_Page) - [CVX 101](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/info) **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. From e072d418d3e178d849284b0640ac2a8ac7ef2d2d Mon Sep 17 00:00:00 2001 From: Arne Neumann Date: Sat, 7 Feb 2015 17:23:07 +0100 Subject: [PATCH 128/175] add Introduction to Matrix Methods --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 8ae5227..1bd232a 100644 --- a/README.md +++ b/README.md @@ -319,6 +319,12 @@ Courses - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) +- [EE103](http://stanford.edu/class/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](http://stanford.edu/~boyd/) and [Lieven Vandenberghe](http://www.seas.ucla.edu/~vandenbe/) are currently writing. Students will use a new language called [Julia](http://julialang.org/) to do computations with matrices and vectors. + - [Lectures](http://stanford.edu/class/ee103/lectures.html) + - [Book](http://stanford.edu/class/ee103/mma.html) + - [Assignments](http://stanford.edu/class/ee103/homework.html) + - [Code](http://stanford.edu/class/ee103/julia_files) - [CS 109](http://cs109.github.io/2014/) **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](http://cm.dce.harvard.edu/2015/01/14328/publicationListing.shtml) From ccc0bc592cb6d03631290832d78f4537fbc02fca Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 9 Feb 2015 08:59:01 +0300 Subject: [PATCH 129/175] Added CS231n - CNN + CV --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 1bd232a..b96ace5 100644 --- a/README.md +++ b/README.md @@ -331,6 +331,9 @@ Courses - [Slides](http://cs109.github.io/2014/pages/schedule.html) - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* +- [CS 231n](http://cs231n.stanford.edu/) **Convolutional Neural Networks for Visual Recognition** *Stanford University* Assignments Lecture Notes + - 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. + - [Github Page](http://cs231n.github.io/) - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) From 0e0e695b60b07978d548eac2a3794db082c9e956 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 9 Feb 2015 11:36:39 +0300 Subject: [PATCH 130/175] added lecture notes for cs231n --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b96ace5..d601891 100644 --- a/README.md +++ b/README.md @@ -333,6 +333,7 @@ Courses - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* - [CS 231n](http://cs231n.stanford.edu/) **Convolutional Neural Networks for Visual Recognition** *Stanford University* Assignments Lecture Notes - 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](http://cs231n.stanford.edu/syllabus.html) - [Github Page](http://cs231n.github.io/) - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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. From ba7ddca1eec2cc98697da3e10235d335dd5eb41a Mon Sep 17 00:00:00 2001 From: awelch83 Date: Tue, 27 Jan 2015 16:36:26 -0600 Subject: [PATCH 131/175] Additional CS courses from Cornell. --- README.md | 246 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 234 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d601891..7f86e27 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,19 @@ Courses - 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](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/assignments/index.html) - [Lecture notes](http://www.cgl.uwaterloo.ca/~wmcowan/teaching/cs452/s12/notes/index.html) +- [CS 2043](http://www.cs.cornell.edu/courses/CS2043/2014sp/) **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](http://www.cs.cornell.edu/courses/CS2043/2014sp/) + - [Lectures](http://www.cs.cornell.edu/courses/CS2043/2014sp/) + - [Assignments](http://www.cs.cornell.edu/courses/CS2043/2014sp/) +- [CS 3410](http://www.cs.cornell.edu/courses/CS3410/2014sp/) **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](http://www.cs.cornell.edu/courses/CS3410/2014sp/schedule.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS3410/2014sp/schedule.html) +- [CS 4410](http://www.cs.cornell.edu/courses/CS4410/2014fa/) **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](http://www.cs.cornell.edu/courses/CS4410/2014fa/slides/01-intro.pptx) + - [Lectures](http://www.cs.cornell.edu/courses/CS4410/2014fa/lectures.php) - [CS 4414](http://rust-class.org/index.html) **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](http://rust-class.org/pages/syllabus.html) @@ -83,6 +96,10 @@ Courses 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](http://patricklam.ca/p4p/notes/) +- [MAE 6740](http://verifiablerobotics.com/courses/mae6740.html) **Hybrid Systems** *Cornell University* Lecture NotesReadings + - This course will discuss the modeling of hybrid systems, the analysis and simulation of their behavior, different control methodologies as well as verification techniques. To complement the theoretical aspect, several state of the art tools will be introduced. New and emerging topics in hybrid systems research will be presented as well. As the field of hybrid systems is a truly interdisciplinary one, drawing researchers from dynamical systems, control theory, computer aided verification, automata theory and other fields, one of the goals of this course is to teach students the language that will allow them to bridge the gap between these traditionally disjoint disciplines. + - [Lectures](http://verifiablerobotics.com/courses/mae6740.html) + - [Readings](http://verifiablerobotics.com/courses/mae6740.html) - [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **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](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) @@ -140,24 +157,42 @@ Courses - Building software systems in Haskell - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) -- [CS 3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) - - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) - [CS 421](https://courses.engr.illinois.edu/cs421/fa2014/) **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. + Course that uses OCaml to teach functional programming and programming language design. - [Lectures](https://courses.engr.illinois.edu/cs421/fa2014/lectures/index.html) - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) +- [CS 3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) + - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) +- [CS 4120](http://www.cs.cornell.edu/courses/CS4120/2013fa/) **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](http://www.cs.cornell.edu/courses/CS4120/2013fa/overview.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS4120/2013fa/schedule.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS4120/2013fa/homework.html) - [CS 4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) - [Assignments](http://www.cs.virginia.edu/~weimer/4610/pa.html) +- [CS 5114](http://www.cs.cornell.edu/courses/CS5114/2013sp/index.php) **Network Programming Languages** *Cornell University* 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](http://www.cs.cornell.edu/courses/CS5114/2013sp/syllabus.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS5114/2013sp/syllabus.php) +- [CS 5142](http://www.cs.cornell.edu/courses/CS5142/2013fa/) **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](http://www.cs.cornell.edu/courses/CS5142/2013fa/) + - [Lectures](http://www.cs.cornell.edu/courses/CS5142/2013fa/#schedule) + - [Assignments](http://www.cs.cornell.edu/courses/CS5142/2013fa/#schedule) - [CS 5470](http://matt.might.net/teaching/compilers/spring-2015/) **Compilers** *University of Utah* Assignments Lecture Notes Readings - If you're a fan of Prof Matt's writing on his [fantastic blog](http://matt.might.net/articles/) 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](http://matt.might.net/teaching/compilers/spring-2015/#collaboration) the page has tons of interesting links on programming languages, parsing and compilers. - [Lecture Notes](https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y) - [Projects](http://matt.might.net/teaching/compilers/spring-2015/#projects) +- [CS 6118](http://www.cs.cornell.edu/courses/CS6118/2012fa/) **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 convential 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](http://www.cs.cornell.edu/courses/CS6118/2012fa/) + - [Lectures](http://www.cs.cornell.edu/courses/CS6118/2012fa/) - [CSE 341](http://courses.cs.washington.edu/courses/cse341/14sp/) **Programming Languages** *University of Washington* Assignments Lecture Notes - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) @@ -179,17 +214,26 @@ Courses - 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](http://aaronbloomfield.github.io/pdr/slides/) - [Assignments](http://aaronbloomfield.github.io/pdr/labs/) +- [CS 4820](http://www.cs.cornell.edu/courses/CS4820/2014sp/) **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](http://www.cs.cornell.edu/courses/CS4820/2014sp/lectures/) + - [Assignments](http://www.cs.cornell.edu/courses/CS4820/2014sp/homework/) + - [Syllabus](http://www.cs.cornell.edu/courses/CS4820/2014sp/syllabus/) - [CSCI 104](http://www-scf.usc.edu/~csci104/20142/lectures/) **Data Structures and Object Oriented Design** Assignments Lecture Notes *University of Southern California (USC)* - [Lectures](http://www-scf.usc.edu/~csci104/20142/lectures) - [Labs](http://www-scf.usc.edu/~csci104/20142/labs) - [Assignments](http://www-scf.usc.edu/~csci104/20142/assignments/) - [Additional Resources](http://www-scf.usc.edu/~csci104/20142/resources.html) +- [CS 4820](http://www.cs.cornell.edu/courses/CS4820/2014sp/) **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](http://www.cs.cornell.edu/courses/CS4820/2014sp/lectures/) + - [Assignments](http://www.cs.cornell.edu/courses/CS4820/2014sp/homework/) + - [Syllabus](http://www.cs.cornell.edu/courses/CS4820/2014sp/syllabus/) - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci135_36_fall12.php) -- [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II** Assignments Lecture Notes -*CUNY Hunter College* +- [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **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](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/csci235_f14.php) - [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **Software Design and Analysis III** Assignments Lecture Notes @@ -251,12 +295,43 @@ Courses - [Assignments/Exams](https://courses.engr.illinois.edu/cs498374/fa2014/work.html) - [Lecture Notes/Labs](https://courses.engr.illinois.edu/cs498374/fa2014/lectures.html) - [Lecture videos](http://recordings.engineering.illinois.edu/ess/portal/section/115f3def-7371-4e98-b72f-6efe53771b2a) +- [CS 3110](http://www.cs.cornell.edu/courses/CS3110/2014fa/) **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](http://www.cs.cornell.edu/courses/CS3110/2014fa/course_info.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS3110/2014fa/lecture_notes.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS3110/2014fa/index.php) +- [CS 4810](http://www.cs.cornell.edu/~dsteurer/toc13/) **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](http://www.cs.cornell.edu/~dsteurer/toc13/syllabus/) + - [Lectures](http://www.cs.cornell.edu/~dsteurer/toc13/lectures/) + - [Assignments](http://www.cs.cornell.edu/~dsteurer/toc13/homework/) +- [CS 6810](http://www.cs.cornell.edu/~dsteurer/complexity12/) **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](http://www.cs.cornell.edu/~dsteurer/complexity12/) + - [Lectures](http://www.cs.cornell.edu/~dsteurer/complexity12/#lectures) + - [Assignments](http://www.cs.cornell.edu/~dsteurer/complexity12/#homework) - [CSCE 3193](http://www.csce.uark.edu/~sgauch/3193/S11/index.html) **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](http://www.csce.uark.edu/~sgauch/3193/S11/syllabus.html) - [Notes](http://www.csce.uark.edu/~sgauch/3193/S11/notes/index.html) - [Assignments](http://www.csce.uark.edu/~sgauch/3193/S11/hw/index.html) - [Practice Exams](http://www.csce.uark.edu/~sgauch/3193/S11/exams/index.html) +- [CS 3220](http://www.cs.cornell.edu/~bindel/class/cs3220-s12/) **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](http://www.cs.cornell.edu/~bindel/class/cs3220-s12/syllabus.html) + - [Lectures](http://www.cs.cornell.edu/~bindel/class/cs3220-s12/lectures.html) + - [Assignments](http://www.cs.cornell.edu/~bindel/class/cs3220-s12/assignments.html) +- [CS 4300](http://www.cs.cornell.edu/courses/CS4300/2013fa/) **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](http://www.cs.cornell.edu/courses/CS4300/2013fa/lectures/introduction.pdf) + - [Lectures](http://www.cs.cornell.edu/courses/CS4300/2013fa/lectures.htm) + - [Assignments](http://www.cs.cornell.edu/courses/CS4300/2013fa/lectures.htm) ------- @@ -286,6 +361,47 @@ Courses - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) +- [CS 1109](http://www.cs.cornell.edu/courses/CS1109/2013su/) **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](http://www.cs.cornell.edu/courses/CS1109/2013su/syllabus.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS1109/2013su/calendar.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS1109/2013su/calendar.html) +- [CS 1110](http://www.cs.cornell.edu/courses/CS1110/2014fa/) **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](http://www.cs.cornell.edu/courses/CS1110/2014fa/about/grading.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS1110/2014fa/lectures/index.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS1110/2014fa/assignments/index.php) +- [CS 1112](http://www.cs.cornell.edu/courses/CS1112/2014fa/) **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](http://www.cs.cornell.edu/courses/CS1112/2014fa/syllabus.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS1112/2014fa/syllabus.html#schedule) + - [Assignments](http://www.cs.cornell.edu/courses/CS1112/2014fa/Exercises/exercises.html) + - [Projects](http://www.cs.cornell.edu/courses/CS1112/2014fa/Projects/projects.html) +- [CS 1115](http://www.cs.cornell.edu/courses/CS1115/2013fa/) **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](http://www.cs.cornell.edu/courses/CS1115/2013fa/syllabus.htm) + - [Lectures](http://www.cs.cornell.edu/courses/CS1115/2013fa/lecture_slides.htm) + - [Projects](http://www.cs.cornell.edu/courses/CS1115/2013fa/projects_and_exams.htm) +- [CS 1130](http://www.cs.cornell.edu/courses/CS1130/2014sp/) **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](http://www.cs.cornell.edu/courses/CS1130/2014sp/about/overview.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS1130/2014sp/web-lectures/index.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS1130/2014sp/assignments/index.php) +- [CS 1133](http://www.cs.cornell.edu/courses/CS1133/2013fa/) **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](http://www.cs.cornell.edu/courses/CS1133/2013fa/about/overview.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS1133/2013fa/lectures/index.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS1133/2013fa/assignments/index.php) +- [CS 2110](http://www.cs.cornell.edu/courses/CS2110/2014fa/index.html) **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](http://www.cs.cornell.edu/courses/CS2110/2014fa/lecturenotes.html). + - [Syllabus](http://www.cs.cornell.edu/courses/CS2110/2014fa/lecturenotes.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS2110/2014fa/lecturenotes.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS2110/2014fa/assignments.html) +- [CS 4302](http://courses2.cit.cornell.edu/info4302_2012fa/) **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](http://courses2.cit.cornell.edu/info4302_2012fa/course_information.php) + - [Lectures](http://courses2.cit.cornell.edu/info4302_2012fa/lectures.php) + - [Assignments](http://courses2.cit.cornell.edu/info4302_2012fa/homeworks.php) - [CSCE 2004](http://www.csce.uark.edu/~sgauch/2004/S14/index.html) **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](http://www.csce.uark.edu/~sgauch/2004/S14/syllabus.html) @@ -308,7 +424,7 @@ Courses - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) - [Racket Language](http://racket-lang.org/) - + ------- ### Machine Learning @@ -332,9 +448,13 @@ Courses - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* - [CS 231n](http://cs231n.stanford.edu/) **Convolutional Neural Networks for Visual Recognition** *Stanford University* Assignments Lecture Notes - - 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. + - 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](http://cs231n.stanford.edu/syllabus.html) - [Github Page](http://cs231n.github.io/) +- [CS 4780](http://www.cs.cornell.edu/courses/CS4780/2014fa/) **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](http://www.cs.cornell.edu/courses/CS4780/2014fa/) + - [Lectures](http://www.cs.cornell.edu/courses/CS4780/2014fa/) - [COMS 4771](http://www.cs.columbia.edu/~jebara/4771/index.html) **Machine Learning** *Columbia University* Assignments Lecture Notes - Course taught by [Tony Jebara](http://www.cs.columbia.edu/~jebara/resume.html) 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](http://www.cs.columbia.edu/~jebara/4771/handouts.html) @@ -348,7 +468,6 @@ Topics covered include probability theory and Bayesian inference; univariate dis - [Textbook](http://web.stanford.edu/~boyd/cvxbook/) - [Lectures and Assignments](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/courseware/7206c57866504e83821d00b5d3f80793/) - ------- ### Misc @@ -384,9 +503,112 @@ Topics covered include probability theory and Bayesian inference; univariate dis - [Lectures](https://github.com/ut-cs378-vision-2014fall/course-info/tree/master/meeting-notes) - [CS 411](http://video.bilkent.edu.tr/course_videos.php?courseid=10) **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](http://www.cs.cornell.edu/courses/CS3152/2014sp/) **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](http://www.cs.cornell.edu/courses/CS3152/2014sp/about/faq.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS3152/2014sp/lectures/index.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS3152/2014sp/assignments/index.php) +- [CS 4152](http://www.cs.cornell.edu/courses/CS4152/2014sp/) **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](http://www.cs.cornell.edu/courses/CS4152/2014sp/about/faq.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS4152/2014sp/sessions/index.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS4152/2014sp/assignments/index.php) +- [CS 4154](http://www.cs.cornell.edu/courses/CS4154/2014fa/) **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](http://www.cs.cornell.edu/courses/CS4154/2014fa/about/faq.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS4154/2014fa/lectures/index.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS4154/2014fa/assignments/index.php) +- [CS 4620](http://www.cs.cornell.edu/Courses/CS4620/2014fa/index.shtml#) **Introduction to Computer Graphics** *Cornell University* Assignments Lecture Notes Readings + - The study of creating, manipulating, and using visual images in the computer. + - [Assignments](http://www.cs.cornell.edu/Courses/CS4620/2014fa/index.shtml#asgn) + - [Exams](http://www.cs.cornell.edu/Courses/CS4620/2014fa/index.shtml#exams) +- [CS 4670](http://www.cs.cornell.edu/courses/CS4670/2013fa/) **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](http://www.cs.cornell.edu/courses/CS4670/2013fa/projects/projects.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS4670/2013fa/lectures/lectures.html) +- [CS 4700](http://www.cs.cornell.edu/courses/CS4700/2014fa/) **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](http://www.cs.cornell.edu/courses/CS4700/2014fa/) + - [Lectures](http://www.cs.cornell.edu/courses/CS4700/2014fa/) +- [CS 4786](http://www.cs.cornell.edu/courses/CS4786/2015sp/index.htm) **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](http://www.cs.cornell.edu/courses/CS4786/2015sp/assignments.htm) + - [Lectures](http://www.cs.cornell.edu/courses/CS4786/2015sp/lectures.htm) +- [CS 4812](https://courses.cit.cornell.edu/physics4481-7681_2014sp/) **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](http://www.cs.cornell.edu/~ginsparg/physics/P4481-P7681-CS4812/Fa12.html) + - [Lectures](https://courses.cit.cornell.edu/physics4481-7681_2014sp/) +- [CS 4860](http://www.cs.cornell.edu/courses/CS4860/2012fa/) **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](http://www.nuprl.org)). We will also spend two weeks on constructive type theory, the language used by the Coq and Nuprl proof assistants. + - [Syllabus](http://www.cs.cornell.edu/courses/CS4860/2012fa/schedule.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS4860/2012fa/schedule.php) + - [Assignments](http://www.cs.cornell.edu/courses/CS4860/2012fa/schedule.php) - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* Assignments Lecture Notes Readings - - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems + - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS5150/2014fa/assignments.html) +- [CS 5220](http://www.cs.cornell.edu/~bindel/class/cs5220-f11/) **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](http://www.cs.cornell.edu/~bindel/class/cs5220-f11/lectures.html) + - [Assignments](http://www.cs.cornell.edu/~bindel/class/cs5220-f11/assignments.html) +- [CS 5430](http://www.cs.cornell.edu/courses/CS5430/2013sp/) **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](http://www.cs.cornell.edu/courses/CS5430/2013sp/01.intro.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS5430/2013sp/02.outline.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS5430/2013sp/) +- [CS 5540](https://sites.google.com/site/cs5540sp2013/) **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](https://sites.google.com/site/cs5540sp2013/home/course-description) + - [Lectures](https://sites.google.com/site/cs5540sp2013/lectures) + - [Assignments](https://sites.google.com/site/cs5540sp2013/assignments) +- [CS 5724](http://courses2.cit.cornell.edu/cs5724/) **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](http://courses2.cit.cornell.edu/cs5724/) + - [Lectures](http://courses2.cit.cornell.edu/cs5724/schedule.htm) + - [Assignments](http://courses2.cit.cornell.edu/cs5724/) +- [CS 6452](http://www.cs.cornell.edu/courses/CS6452/2012sp/index.php) **Evolutionary Computation** *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](http://www.cs.cornell.edu/courses/CS6452/2012sp/lectures.php) + - [Lectures](http://www.cs.cornell.edu/courses/CS6452/2012sp/lectures.php) +- [CS 6630](http://courses2.cit.cornell.edu/cs5724/) **Realistic Image Synthesis** *Cornell University* Assignments Lecture Notes Readings + - 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](http://www.cs.cornell.edu/courses/CS6630/2012sp/about.stm) + - [Lectures](http://www.cs.cornell.edu/courses/CS6630/2012sp/schedule.stm) + - [Assignments](http://www.cs.cornell.edu/courses/CS6630/2012sp/schedule.stm) + - [Readings](http://www.cs.cornell.edu/courses/CS6630/2012sp/schedule.stm) +- [CS 6640](http://www.cs.cornell.edu/courses/CS6640/2012fa/index.shtml#) **Realistic Image Synthesis** *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](http://www.cs.cornell.edu/courses/CS6640/2012fa/index.shtml#schedule) + - [Assignments](http://www.cs.cornell.edu/courses/CS6640/2012fa/index.shtml#hw) +- [CS 6650](http://www.cs.cornell.edu/courses/CS6650/2013fa/) **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 6670](https://canvas.instructure.com/courses/904706) **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](https://canvas.instructure.com/courses/904706/assignments/syllabus) + - [Lectures](https://canvas.instructure.com/courses/904706) + - [Assignments](https://canvas.instructure.com/courses/904706/assignments) +- [CS 6700](http://www.cs.cornell.edu/courses/CS6700/2013sp/) **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](http://www.cs.cornell.edu/courses/CS6700/2013sp/lectures/CS6700-Overview_v2.pptx) + - [Lectures](http://www.cs.cornell.edu/courses/CS6700/2013sp/) + - [Readings](http://www.cs.cornell.edu/courses/CS6700/2013sp/) +- [CS 6840](http://www.cs.cornell.edu/courses/CS6840/2014sp/) **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](http://www.cs.cornell.edu/courses/CS6840/2014sp/) + - [Lectures](http://www.cs.cornell.edu/courses/CS6840/2014sp/) + - [Assignments](http://www.cs.cornell.edu/courses/CS6840/2014sp/) + - [Readings](http://www.cs.cornell.edu/courses/CS6840/2014sp/) - [CSE 154](http://courses.cs.washington.edu/courses/cse154/14au/) **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](http://courses.cs.washington.edu/courses/cse154/14au/lectures.shtml#today) @@ -424,4 +646,4 @@ Topics covered include probability theory and Bayesian inference; univariate dis - 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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - - Assignments - Assignments are present in the Course Slides + - Assignments - Assignments are present in the Course Slides From 84e69c7ae44e34a7ba9fd78c5fffebf0f27efd36 Mon Sep 17 00:00:00 2001 From: awelch83 Date: Wed, 11 Feb 2015 09:32:45 -0600 Subject: [PATCH 132/175] Removed duplicated - CS 4820. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 7f86e27..c75d8e2 100644 --- a/README.md +++ b/README.md @@ -224,11 +224,6 @@ Courses - [Labs](http://www-scf.usc.edu/~csci104/20142/labs) - [Assignments](http://www-scf.usc.edu/~csci104/20142/assignments/) - [Additional Resources](http://www-scf.usc.edu/~csci104/20142/resources.html) -- [CS 4820](http://www.cs.cornell.edu/courses/CS4820/2014sp/) **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](http://www.cs.cornell.edu/courses/CS4820/2014sp/lectures/) - - [Assignments](http://www.cs.cornell.edu/courses/CS4820/2014sp/homework/) - - [Syllabus](http://www.cs.cornell.edu/courses/CS4820/2014sp/syllabus/) - [CSCI 135](http://compsci.hunter.cuny.edu/~sweiss/courses/csci135.php) **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. From 45811cd2c9ba04b54cb6cd9851e4bd1c4868e2a6 Mon Sep 17 00:00:00 2001 From: Morgon Kanter Date: Mon, 16 Feb 2015 15:32:46 -0800 Subject: [PATCH 133/175] Add UoW Compiler Construction course --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c75d8e2..1e2bdf6 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,10 @@ Courses - Covers non-imperative paradigms and languages such as Ruby, Racket, and ML and the fundamentals of programming languages. - [Lectures](https://courses.cs.washington.edu/courses/cse341/14sp/#lecture) - [Assignments and Tests](https://courses.cs.washington.edu/courses/cse341/14sp/#homework) +- [CSE P 501](http://courses.cs.washington.edu/courses/csep501/09au/lectures/video.html) **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](http://courses.cs.washington.edu/courses/csep501/09au/lectures/video.html) + - [Assignments, Tests, and Solutions](http://courses.cs.washington.edu/courses/csep501/09au/homework/index.html) ------- From f67821f1efa3c479015c56ec1847874036e00f3c Mon Sep 17 00:00:00 2001 From: Mihir Shete Date: Wed, 25 Feb 2015 21:54:44 +0530 Subject: [PATCH 134/175] Added Fundamentals of Computer Networks from CMU INI --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e2bdf6..ec577db 100644 --- a/README.md +++ b/README.md @@ -645,4 +645,8 @@ Topics covered include probability theory and Bayesian inference; univariate dis - 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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - - Assignments - Assignments are present in the Course Slides + - Assignments - Assignments are present in the Course Slides +- [14-740](http://www.ini740.com/F14/index.html) **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. From 418a3daa91d5d96057f1627b17a0b193938d3cf8 Mon Sep 17 00:00:00 2001 From: Mihir Shete Date: Wed, 25 Feb 2015 22:00:43 +0530 Subject: [PATCH 135/175] Fix 'em tabs --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ec577db..16a8c54 100644 --- a/README.md +++ b/README.md @@ -645,8 +645,8 @@ Topics covered include probability theory and Bayesian inference; univariate dis - 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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - - Assignments - Assignments are present in the Course Slides + - Assignments - Assignments are present in the Course Slides - [14-740](http://www.ini740.com/F14/index.html) **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. + - 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. From 3f5a8ad3043944fb7af300e43f57753e89681ee4 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 28 Feb 2015 16:49:47 +0300 Subject: [PATCH 136/175] added berkeley course --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 16a8c54..e839533 100644 --- a/README.md +++ b/README.md @@ -641,6 +641,8 @@ Topics covered include probability theory and Bayesian inference; univariate dis - 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](http://www.ischool.berkeley.edu/newsandevents/audiovideo/webcast/21963) - [Previous Years coursepage](http://blogs.ischool.berkeley.edu/i290-abdt-s12/) +- [CS294](http://inst.eecs.berkeley.edu/~cs294-101/sp15/) **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. - [EECS E6893 & EECS E6895](http://www.ee.columbia.edu/~cylin/course/bigdata/) **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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) From d0a71210c30d721db170d70979ad04f1008830d0 Mon Sep 17 00:00:00 2001 From: "Robert (Robby) O'Connor" Date: Sun, 1 Mar 2015 07:07:23 -0500 Subject: [PATCH 137/175] Add CS61A course from UC Berkeley; change the school name for CS 61B to be "UC Berkeley" --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e839533..65713d8 100644 --- a/README.md +++ b/README.md @@ -206,7 +206,7 @@ Courses ### Algorithms -- [CS 61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley* Lecture Videos Assignments +- [CS 61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *UC Berkeley* Lecture Videos Assignments - 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. - [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html) - [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s) @@ -343,6 +343,13 @@ Courses - [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) +- [CS 61A](http://cs61a.org/) **Structure and Interpretation of Computer Programs** *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](http://cs61a.org/by_type.html) + - [Lecture Resources by Topic](http://cs61a.org/by_topic.html) + - [Additional Resources](http://cs61a.org/resources.html) + - [Practice Problems](http://cs61a.org/problems/) + - [Extra Lectures](http://cs61a.org/extra.html) - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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. From 84d24f5209953732b446367b843be2832a7d829f Mon Sep 17 00:00:00 2001 From: "Robert (Robby) O'Connor" Date: Wed, 4 Mar 2015 05:40:22 -0500 Subject: [PATCH 138/175] Create .gitignore Add .DS_Store to .gitignore -- this prevents it from ever happening again. --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store From f5a3e7c3851e11706211a43370c56ba448777a89 Mon Sep 17 00:00:00 2001 From: Samyak Datta Date: Sun, 8 Mar 2015 19:38:20 +0530 Subject: [PATCH 139/175] Added Computer Vision course by U.C.F. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 65713d8..5e6c55a 100644 --- a/README.md +++ b/README.md @@ -478,6 +478,10 @@ Topics covered include probability theory and Bayesian inference; univariate dis ### Misc +- [CAP 5415](http://crcv.ucf.edu/courses/CAP5415/) **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](http://crcv.ucf.edu/videos/Lecture_Videos/) + - [Assignments](http://crcv.ucf.edu/courses/CAP5415/Fall2014/index.php) - [CIS 581](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=CIS_581:_Computer_Vision_%26_Computational_Photography) **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](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) From 204dca3bae0608973180cd6d1de9252310d9614e Mon Sep 17 00:00:00 2001 From: Haochuan Liu Date: Thu, 12 Mar 2015 11:05:39 -0700 Subject: [PATCH 140/175] add 15-213: Intro to Computer System from CMU --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 65713d8..16a21ad 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,11 @@ Courses - 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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) +- [15-213](http://www.cs.cmu.edu/~213/) **Introduction to Computer Systems (ICS)** *Carnegie-Mellon University* 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 scienve 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](http://www.cs.cmu.edu/~213/schedule.html) + - [Assignments](http://csapp.cs.cmu.edu/public/labs.html) - [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **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](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) From dd6607a1b35791d8600a4010707dab69504b8461 Mon Sep 17 00:00:00 2001 From: Praveen Gowda I V Date: Sat, 14 Mar 2015 19:43:53 +0530 Subject: [PATCH 141/175] Add 6.858: Computer Systems Security from MIT --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 16a21ad..973ad43 100644 --- a/README.md +++ b/README.md @@ -660,6 +660,13 @@ Topics covered include probability theory and Bayesian inference; univariate dis - Taught by [Dr. Ching-Yung Lin](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - Assignments - Assignments are present in the Course Slides +- [6.858](http://css.csail.mit.edu/6.858/2014/) **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](http://research.microsoft.com/en-us/people/mickens/) and [Nickolai Zeldovich](http://people.csail.mit.edu/nickolai/) + - [Video Lectures and Labs](http://css.csail.mit.edu/6.858/2014/schedule.html) + - [Quizzes](http://css.csail.mit.edu/6.858/2014/quiz.html) + - [Readings](http://css.csail.mit.edu/6.858/2014/reference.html) + - [Final Projects](http://css.csail.mit.edu/6.858/2014/projects.html) - [14-740](http://www.ini740.com/F14/index.html) **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. From 1e9fe3a6130ee80354152c494fc40ecfb914b472 Mon Sep 17 00:00:00 2001 From: "Robert (Robby) O'Connor" Date: Wed, 18 Mar 2015 13:21:10 -0400 Subject: [PATCH 142/175] Add CS61C from UC Berkeley Add Great Ideas in Computer Architecture (Machine Structures). Spring 2015, UC Berkeley --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 16a21ad..546d808 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,11 @@ Courses ### Systems +- [CS 61C](http://www-inst.eecs.berkeley.edu/~cs61c/sp15/) **Great Ideas in Computer Architecture (Machine Structures)** *UC Berkeley* Lecture VideosLecture Notes Assignments Readings + - [Lecture Videos](https://www.youtube.com/playlist?list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + - [Lecture Notes](http://www-inst.eecs.berkeley.edu/~cs61c/sp15/#Calendar) + - [Resources](http://www-inst.eecs.berkeley.edu/~cs61c/sp15/#Resources) + - [Old Exams](https://hkn.eecs.berkeley.edu/exams/course/CS/61C) - [CS 107](http://web.stanford.edu/class/cs107/index.html) **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. From 9dd75558bbb981ff3be62f66aeb9ea599eb6055c Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 27 Mar 2015 10:29:20 +0300 Subject: [PATCH 143/175] new course from wheaton college --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 23a5e29..5caf680 100644 --- a/README.md +++ b/README.md @@ -211,6 +211,10 @@ Courses - 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](http://courses.cs.washington.edu/courses/csep501/09au/lectures/video.html) - [Assignments, Tests, and Solutions](http://courses.cs.washington.edu/courses/csep501/09au/homework/index.html) +- [DMFP](http://cs.wheaton.edu/~tvandrun/dmfp/) **Discrete Mathematics and Functional Programming** *Wheaton College* Lecture Videos Assignments + - A course that teaches discrete maths concepts with functional programming + - [Lecture Videos](http://cs.wheaton.edu/~tvandrun/dmfp/) + - [Assignments](http://cs.wheaton.edu/~tvandrun/dmfp/source.html) ------- From 12e327013b57f2f0d2ea1d34a452b6f98aa51587 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sun, 29 Mar 2015 07:04:03 +0300 Subject: [PATCH 144/175] Added Harvard course on monte carlo methods --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5caf680..bf206b0 100644 --- a/README.md +++ b/README.md @@ -491,7 +491,11 @@ Topics covered include probability theory and Bayesian inference; univariate dis ------- ### Misc - +- [AM 207](http://am207.org/) **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](http://cm.dce.harvard.edu/2015/02/24104/publicationListing.shtml) + - [Assignments](http://am207.github.io/2015/homework.html) + - [Lecture Notes](http://am207.github.io/2015/lectures.html) - [CAP 5415](http://crcv.ucf.edu/courses/CAP5415/) **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](http://crcv.ucf.edu/videos/Lecture_Videos/) From f2305f39f46b2aa0b85d26172b7ce8f7a6fd3346 Mon Sep 17 00:00:00 2001 From: "Robert (Robby) O'Connor" Date: Mon, 2 Mar 2015 00:51:20 -0500 Subject: [PATCH 145/175] Add Programming Languages course at NEU Add Programming Languages course at Northeastern University --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index bf206b0..721e957 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,12 @@ Courses - [Syllabus](http://www.cs.cornell.edu/courses/CS4120/2013fa/overview.html) - [Lectures](http://www.cs.cornell.edu/courses/CS4120/2013fa/schedule.html) - [Assignments](http://www.cs.cornell.edu/courses/CS4120/2013fa/homework.html) +- [CS 4400](https://pl.barzilay.org/) **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](https://pl.barzilay.org/syllabus.html) + - [Lecture Notes/Resources](https://pl.barzilay.org/resources.html) + - [Homework](https://pl.barzilay.org/homeworks.html) - [CS 4610](http://www.cs.virginia.edu/~weimer/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](http://www.cs.virginia.edu/~weimer/4610/lectures.html) From 983b35345e1cbbf1c2b554f103e386fdd0e7f17d Mon Sep 17 00:00:00 2001 From: matt-auld Date: Tue, 7 Apr 2015 02:34:06 +0100 Subject: [PATCH 146/175] Add 6.045: Great Ideas in Theoretical Computer Science from MIT --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index bf206b0..00a662c 100644 --- a/README.md +++ b/README.md @@ -345,6 +345,11 @@ Courses - [Syllabus](http://www.cs.cornell.edu/courses/CS4300/2013fa/lectures/introduction.pdf) - [Lectures](http://www.cs.cornell.edu/courses/CS4300/2013fa/lectures.htm) - [Assignments](http://www.cs.cornell.edu/courses/CS4300/2013fa/lectures.htm) +- [6.045](https://stellar.mit.edu/S/course/6/sp15/6.045/index.html) **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](https://stellar.mit.edu/S/course/6/sp15/6.045/courseMaterial/topics/topic1/syllabus/syllabus2015/syllabus2015.pdf) + - [Lecture Notes](https://stellar.mit.edu/S/course/6/sp15/6.045/materials.html) + - [Lecture Videos](http://stellar.mit.edu/S/course/6/sp15/6.045/special/videos/index.html) ------- From 58de55ca0b3b310aa9e3cb2e048cd5afbef00468 Mon Sep 17 00:00:00 2001 From: Rocky Tang Date: Sun, 12 Apr 2015 15:34:39 -0700 Subject: [PATCH 147/175] Fix minor spelling error in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 00a662c..b7c18cd 100644 --- a/README.md +++ b/README.md @@ -444,7 +444,7 @@ Courses - [Textbook](http://mitpress.mit.edu/sicp/full-text/book/book.html) ([epub](https://github.com/sarabander/sicp), [pdf](https://github.com/sarabander/sicp-pdf)) - [IDE](http://www.neilvandyke.org/racket-sicp/) - [CS1410-2](http://www.eng.utah.edu/~cs1410-20/) and [CS2420-20](http://www.eng.utah.edu/~cs2420-20/) **Computer Science I and II for Hackers** *University of Utah* Assignments Lecture Notes Readings - - An intro course in the spirit of SICP designed by [Professor Matthew Flatt](http://www.cs.utah.edu/~mflatt/) (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explainations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much... + - An intro course in the spirit of SICP designed by [Professor Matthew Flatt](http://www.cs.utah.edu/~mflatt/) (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explanations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much... - [Lectures and Assignments 1](http://www.eng.utah.edu/~cs1410-20/schedule.html) - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) From cf25fbe842d46e268907dcc2028b27431ddaedf5 Mon Sep 17 00:00:00 2001 From: David Dao Date: Sat, 9 May 2015 02:50:42 +0200 Subject: [PATCH 148/175] Adding cs224d deep learning for nlp --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index cf51405..56c444d 100644 --- a/README.md +++ b/README.md @@ -478,6 +478,10 @@ Courses - [Slides](http://cs109.github.io/2014/pages/schedule.html) - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* +- [CS 224d](http://cs224d.stanford.edu/) **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](http://cs224d.stanford.edu/syllabus.html) + - [Lectures and Assignments](http://cs224d.stanford.edu/syllabus.html) - [CS 231n](http://cs231n.stanford.edu/) **Convolutional Neural Networks for Visual Recognition** *Stanford University* Assignments Lecture Notes - 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](http://cs231n.stanford.edu/syllabus.html) From 7cfde434f794d4416e1c429184098a9bb48f69bf Mon Sep 17 00:00:00 2001 From: Arne Neumann Date: Fri, 15 May 2015 23:06:00 +0200 Subject: [PATCH 149/175] added Oxford ML class (course has no ID) --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 56c444d..cf5535e 100644 --- a/README.md +++ b/README.md @@ -502,6 +502,10 @@ Topics covered include probability theory and Bayesian inference; univariate dis - 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](http://web.stanford.edu/~boyd/cvxbook/) - [Lectures and Assignments](https://class.stanford.edu/courses/Engineering/CVX101/Winter2014/courseware/7206c57866504e83821d00b5d3f80793/) +- [**Machine Learning: 2014-2015**](https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/) *University of Oxford* Lecture Videos Lecture Notes Assignments + - The course focusses on neural networks and uses the [Torch](https://github.com/torch/torch7/wiki/Cheatsheet) 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 + - [Lecutures and Assignments](https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/) + - [Source code](https://github.com/oxford-cs-ml-2015/) ------- From b74a3f080de38443760c8dbe73d4e8ab37cb379d Mon Sep 17 00:00:00 2001 From: Arne Neumann Date: Sat, 16 May 2015 10:51:48 +0200 Subject: [PATCH 150/175] added "An Introduction to Efficient Scientific Computation" --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 56c444d..d8d9dda 100644 --- a/README.md +++ b/README.md @@ -692,6 +692,11 @@ Topics covered include probability theory and Bayesian inference; univariate dis - Taught by [Dr. Ching-Yung Lin](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - Assignments - Assignments are present in the Course Slides +- [SCICOMP](http://colorfulengineering.org/) **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](http://colorfulengineering.org/) 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](https://www.youtube.com/user/fillwithlight/videos) + - [6.858](http://css.csail.mit.edu/6.858/2014/) **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](http://research.microsoft.com/en-us/people/mickens/) and [Nickolai Zeldovich](http://people.csail.mit.edu/nickolai/) From dccc89695612eb163142d141665f593ad95dc31b Mon Sep 17 00:00:00 2001 From: root Date: Mon, 18 May 2015 23:59:11 -0500 Subject: [PATCH 151/175] cs241 video lectures no longer available i just removed the icon --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3528a4..e4452d8 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Courses - 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) - [Projects](https://sites.google.com/site/cs186fall2013/homeworks) -- [CS 241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *Univ of Illinois, Urbana-Champaign* Lecture Videos Assignments Lecture Notes +- [CS 241](https://courses.engr.illinois.edu/cs241/fa2014/index.html) **Systems Programming (Fall 2014)** *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](https://courses.engr.illinois.edu/cs241/fa2014/mp.html) - [Github Page](http://angrave.github.io/sys/#) From e5e9b3758d5bbbe8c9c3ab3e95f2de7dd9430a00 Mon Sep 17 00:00:00 2001 From: Arne Neumann Date: Fri, 22 May 2015 09:55:01 +0200 Subject: [PATCH 152/175] provided better/offical URLs for SCICOMP class --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e4452d8..ce32ead 100644 --- a/README.md +++ b/README.md @@ -696,10 +696,10 @@ Topics covered include probability theory and Bayesian inference; univariate dis - Taught by [Dr. Ching-Yung Lin](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung) - [Course Site](http://www.ee.columbia.edu/~cylin/course/bigdata/) - Assignments - Assignments are present in the Course Slides -- [SCICOMP](http://colorfulengineering.org/) **An Introduction to Efficient Scientific Computation** *Universität Bremen* Lecture Videos +- [SCICOMP](http://mlecture.uni-bremen.de/ml/index.php?option=com_content&view=article&id=233) **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](http://colorfulengineering.org/) 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](https://www.youtube.com/user/fillwithlight/videos) + - [Lecture videos on Youtube](https://www.youtube.com/user/fillwithlight/videos) and for direct [download](http://mlecture.uni-bremen.de/ml/index.php?option=com_content&view=article&id=233) - [6.858](http://css.csail.mit.edu/6.858/2014/) **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. From 3d2f4e5cf981b71faa2879e2c3b20fa8ce93f73d Mon Sep 17 00:00:00 2001 From: suppi Date: Mon, 25 May 2015 20:52:12 +0300 Subject: [PATCH 153/175] adding CS223 of University of Chicago --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index ce32ead..70fb1bb 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,10 @@ Courses - [Videos](http://recordings.engineering.illinois.edu/ess/portal/section/631edaeb-2a33-4537-b7c8-0c1cba783a4f) - [Assignments](https://courses.engr.illinois.edu/cs421/fa2014/mps/index.html) - [Exams](https://courses.engr.illinois.edu/cs421/fa2014/exams/index.html) +- [CS223](https://www.classes.cs.uchicago.edu/current/22300-1/Home.html) **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](https://www.classes.cs.uchicago.edu/current/22300-1/Schedule.html) + - [Assignments](https://www.classes.cs.uchicago.edu/current/22300-1/Schedule.html) - [CS 3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **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](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) From 539b4741fd10186951f7c90c929499350e43d0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Garc=C3=ADa?= Date: Thu, 4 Jun 2015 10:26:48 +0200 Subject: [PATCH 154/175] Add CPython internals lectures Part of CSC 253: Dynamic Languages and Software Development at the University of Rochester. Recommended by twitter from Python Language BDFL Guido Van Rossum --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 70fb1bb..a59d457 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,8 @@ Courses - A course that teaches discrete maths concepts with functional programming - [Lecture Videos](http://cs.wheaton.edu/~tvandrun/dmfp/) - [Assignments](http://cs.wheaton.edu/~tvandrun/dmfp/source.html) +- [CSC 253](http://pgbovine.net/cpython-internals.htm) **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. ------- From 96f7c630749c3a4c74e3c8d54cdb8ef0a2c6d7b0 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 19 Jun 2015 17:46:35 +0530 Subject: [PATCH 155/175] updated the CMU ML course --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a59d457..3f717b5 100644 --- a/README.md +++ b/README.md @@ -468,7 +468,7 @@ Courses - [11-785](http://deeplearning.cs.cmu.edu/) **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. -- [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings +- [10-601](http://www.cs.cmu.edu/~ninamf/courses/601sp15/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) From fdc7a163b5c91ef640d1cbb3f5a7e0a142aa483a Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 19 Jun 2015 17:49:10 +0530 Subject: [PATCH 156/175] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f717b5..4f49d07 100644 --- a/README.md +++ b/README.md @@ -468,7 +468,8 @@ Courses - [11-785](http://deeplearning.cs.cmu.edu/) **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. -- [10-601](http://www.cs.cmu.edu/~ninamf/courses/601sp15/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings +- [10-601](http://www.cs.cmu.edu/~ninamf/courses/601sp15/) **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](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) From fcce0f5c22100e1c8fab0a6a656c970d78dbc250 Mon Sep 17 00:00:00 2001 From: woodstok Date: Tue, 23 Jun 2015 11:18:07 -0400 Subject: [PATCH 157/175] Added video link for MIT 6.828 OS course Added a link to the 2011 videos page --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4f49d07..7bcb371 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,7 @@ Courses - 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](http://pdos.csail.mit.edu/6.828/2014/labguide.html) - [Lectures](http://pdos.csail.mit.edu/6.828/2014/schedule.html) + - [Videos](http://pdos.csail.mit.edu/6.828/2011/schedule.html) Note: These are student recorded cam videos of the 2011 course. The videos explain a lot of concepts required for the labs and assignments. - [15-213](http://www.cs.cmu.edu/~213/) **Introduction to Computer Systems (ICS)** *Carnegie-Mellon University* 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 scienve no matter what major are you in. Because it's CMU (The course number is as same as the zip code of CMU)! From b7a922ee425acc776186d438743747bba70bd0d9 Mon Sep 17 00:00:00 2001 From: Tuan Manh Lai Date: Mon, 29 Jun 2015 16:55:51 +0900 Subject: [PATCH 158/175] CS109 Programming Practice Using Scala KAIST --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 7bcb371..528e8d2 100644 --- a/README.md +++ b/README.md @@ -399,6 +399,10 @@ Courses - 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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) +- [CS 109] (http://otfried.org/courses/cs109/index.html) **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 commmand 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](http://www.cs.cornell.edu/courses/CS1109/2013su/) **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](http://www.cs.cornell.edu/courses/CS1109/2013su/syllabus.html) From 60229701d636b3c09c2afe8bb3eb8624a3018bf0 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Mon, 6 Jul 2015 23:31:32 +0300 Subject: [PATCH 159/175] Added CS61AS --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 528e8d2..90ab711 100644 --- a/README.md +++ b/README.md @@ -375,13 +375,17 @@ Courses - [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) -- [CS 61A](http://cs61a.org/) **Structure and Interpretation of Computer Programs** *UC Berkeley* Lecture Videos Assignments Lecture Notes +- [CS 61A](http://cs61a.org/) **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](http://cs61a.org/by_type.html) - [Lecture Resources by Topic](http://cs61a.org/by_topic.html) - [Additional Resources](http://cs61a.org/resources.html) - [Practice Problems](http://cs61a.org/problems/) - [Extra Lectures](http://cs61a.org/extra.html) +- [CS 61AS](http://berkeley-cs61as.github.io/) **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](https://www.youtube.com/course?category=University%2FEngineering%2FComputer%2520Science%2FProgramming%2520Languages&list=EC6D76F0C99A731667) + - [Assignments and Notes](http://berkeley-cs61as.github.io/textbook.html) - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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. From d23dd35236d2eaecd89feb5c0d89abd0966fd253 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Wed, 8 Jul 2015 22:33:59 +0300 Subject: [PATCH 160/175] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90ab711..bfd7033 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Courses - [Lecture Notes](http://www-inst.eecs.berkeley.edu/~cs61c/sp15/#Calendar) - [Resources](http://www-inst.eecs.berkeley.edu/~cs61c/sp15/#Resources) - [Old Exams](https://hkn.eecs.berkeley.edu/exams/course/CS/61C) -- [CS 107](http://web.stanford.edu/class/cs107/index.html) **Computer Organization & Systems** *Stanford University* Lecture Videos +- [CS 107](https://courseware.stanford.edu/pg/courses/lectures/371747) **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](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) From 36e60f26190076b77949387111cf6966407e1cdc Mon Sep 17 00:00:00 2001 From: Jennifer Shih Date: Thu, 16 Jul 2015 18:21:43 -0700 Subject: [PATCH 161/175] added CS188 --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index bfd7033..9438fe5 100644 --- a/README.md +++ b/README.md @@ -494,6 +494,11 @@ Courses - [Slides](http://cs109.github.io/2014/pages/schedule.html) - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* +- [CS 188](http://ai.berkeley.edu/home.html) **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](http://ai.berkeley.edu/lecture_videos.html) + - [Projects](http://ai.berkeley.edu/project_overview.html) + - [Exams](http://ai.berkeley.edu/exams.html) - [CS 224d](http://cs224d.stanford.edu/) **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](http://cs224d.stanford.edu/syllabus.html) From ceaa01788cca50471954ebb8daf970f29fa72164 Mon Sep 17 00:00:00 2001 From: Jennifer Shih Date: Thu, 16 Jul 2015 23:42:40 -0700 Subject: [PATCH 162/175] added 287 --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 9438fe5..5b82300 100644 --- a/README.md +++ b/README.md @@ -507,6 +507,10 @@ Courses - 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](http://cs231n.stanford.edu/syllabus.html) - [Github Page](http://cs231n.github.io/) +- [CS 287](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/) **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](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/#syllabus) + - [Assignments](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/#assignments) - [CS 4780](http://www.cs.cornell.edu/courses/CS4780/2014fa/) **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](http://www.cs.cornell.edu/courses/CS4780/2014fa/) From d3b9f02b07856765306255b85969658459caafad Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 17 Jul 2015 19:33:11 +0300 Subject: [PATCH 163/175] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5b82300..1d2dbee 100644 --- a/README.md +++ b/README.md @@ -475,6 +475,10 @@ Courses ### Machine Learning + +- [StatLearning](https://lagunita.stanford.edu/courses/HumanitiesandScience/StatLearning/Winter2015/about) **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](http://www-bcf.usc.edu/~gareth/ISL/) which is a more approachable version of the [Elements of Statistical Learning]()http://statweb.stanford.edu/~tibs/ElemStatLearn/ (or ESL) book. - [11-785](http://deeplearning.cs.cmu.edu/) **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. - [10-601](http://www.cs.cmu.edu/~ninamf/courses/601sp15/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings Lecture Videos From f972778d62aa7d83df28a273331d478f89ac3a28 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Fri, 17 Jul 2015 19:34:06 +0300 Subject: [PATCH 164/175] Added ISL course --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d2dbee..9be586f 100644 --- a/README.md +++ b/README.md @@ -478,7 +478,7 @@ Courses - [StatLearning](https://lagunita.stanford.edu/courses/HumanitiesandScience/StatLearning/Winter2015/about) **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](http://www-bcf.usc.edu/~gareth/ISL/) which is a more approachable version of the [Elements of Statistical Learning]()http://statweb.stanford.edu/~tibs/ElemStatLearn/ (or ESL) book. + - The lectures cover all the material in [An Introduction to Statistical Learning, with Applications in R](http://www-bcf.usc.edu/~gareth/ISL/) which is a more approachable version of the [Elements of Statistical Learning](http://statweb.stanford.edu/~tibs/ElemStatLearn/) (or ESL) book. - [11-785](http://deeplearning.cs.cmu.edu/) **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. - [10-601](http://www.cs.cmu.edu/~ninamf/courses/601sp15/) **Machine Learning** *Carnegie Mellon University* Assignments Lecture Notes Readings Lecture Videos From c1df18d1e55bfc1e4968749d843546d42c210924 Mon Sep 17 00:00:00 2001 From: Sumit Bhanushali Date: Sun, 19 Jul 2015 20:35:27 +0530 Subject: [PATCH 165/175] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9be586f..26edd4a 100644 --- a/README.md +++ b/README.md @@ -389,17 +389,17 @@ Courses - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **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](http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) **Programming Methodology** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 106A](https://see.stanford.edu/Course/CS106A) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111) - [Assignments](http://see.stanford.edu/see/materials/icspmcs106a/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspmcs106a/ProgrammingMethodologyAllMaterials.zip) -- [CS 106B](http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) **Programming Abstractions** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 106B](https://see.stanford.edu/Course/CS106B) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e) - [Assignments](http://see.stanford.edu/see/materials/icspacs106b/assignments.aspx) - [All materials in a zip file](http://see.stanford.edu/materials/icspacs106b/ProgrammingAbstractionsAllMaterials.zip) -- [CS 107](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) **Programming Paradigms** *Stanford University* Lecture Videos Assignments Lecture Notes +- [CS 107](https://see.stanford.edu/Course/CS107) **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](http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee) - [Assignments](http://see.stanford.edu/see/materials/icsppcs107/assignments.aspx) From 9adc8079148a86a3951a4a7eef3ffa4a2905db45 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Wed, 29 Jul 2015 16:31:40 +0530 Subject: [PATCH 166/175] Added deep learning course from Columbia --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 26edd4a..223cec6 100644 --- a/README.md +++ b/README.md @@ -535,6 +535,11 @@ Topics covered include probability theory and Bayesian inference; univariate dis - The course focusses on neural networks and uses the [Torch](https://github.com/torch/torch7/wiki/Cheatsheet) 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 - [Lecutures and Assignments](https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/) - [Source code](https://github.com/oxford-cs-ml-2015/) +- [EECS E6894](http://llcao.net/cu-deeplearning15/index.html) **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 programminging tool. GPU programming experiences are preferred although not required. Frequent paper presentations and a heavy programming workload are expected. + - [Readings](http://llcao.net/cu-deeplearning15/reading.html) + - [Assignments](http://llcao.net/cu-deeplearning15/programming_problem.html) + - [Lecture Notes](http://llcao.net/cu-deeplearning15/index.html) ------- From d272570233ba0f40f600c9a7cd59c91b5002bf7c Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Thu, 30 Jul 2015 23:55:02 +0530 Subject: [PATCH 167/175] Added the awesome badge. Thanks @sindresorhus --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 223cec6..826414c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -Awesome Courses -=============== +# Awesome Courses [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) + Introduction ------------ From 0c8c875bf2cb26ced787ccf00f7460730992b444 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Sat, 8 Aug 2015 21:00:54 +0530 Subject: [PATCH 168/175] Changed CMU course link. Fixes #126 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 826414c..9f01795 100644 --- a/README.md +++ b/README.md @@ -742,7 +742,7 @@ Topics covered include probability theory and Bayesian inference; univariate dis - [Quizzes](http://css.csail.mit.edu/6.858/2014/quiz.html) - [Readings](http://css.csail.mit.edu/6.858/2014/reference.html) - [Final Projects](http://css.csail.mit.edu/6.858/2014/projects.html) -- [14-740](http://www.ini740.com/F14/index.html) **Fundamentals of Computer Networks** *CMU* Lecture Videos Assignments Readings Lecture Notes +- [14-740](http://www.ini740.com/F15/index.html) **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. From 722a51062098be206423c728e1a9dc0646905241 Mon Sep 17 00:00:00 2001 From: Prakhar Srivastav Date: Tue, 11 Aug 2015 00:34:17 +0530 Subject: [PATCH 169/175] Added CSForAll by Harvey Mudd --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 9f01795..300c223 100644 --- a/README.md +++ b/README.md @@ -470,6 +470,9 @@ Courses - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) - [Racket Language](http://racket-lang.org/) +- [CS-for-all](http://www.cs.hmc.edu/csforall/) **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](https://www.cs.hmc.edu/twiki/bin/view/ModularCS1) ------- From 7ca296ed93477434ffb859d5291de2ec6264b07a Mon Sep 17 00:00:00 2001 From: Vinay Bhat Date: Sun, 4 Oct 2015 17:02:37 +0530 Subject: [PATCH 170/175] Added UCB course CS168: Internet Architecture and Protocols --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 300c223..baf5767 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,10 @@ Courses - [CS 162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures +- [CS 168](https://inst.eecs.berkeley.edu/~cs168/fa14/) **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](https://inst.eecs.berkeley.edu/~cs168/fa14/class.html) + - [Discussion Notes](https://inst.eecs.berkeley.edu/~cs168/fa14/) - [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) From dd241c540907c24f5bc462b013d03780708a282c Mon Sep 17 00:00:00 2001 From: Toke von Ryberg Date: Tue, 6 Oct 2015 21:12:37 +0300 Subject: [PATCH 171/175] Add PCPP from IT University of Copenhagen --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index baf5767..4442e4c 100644 --- a/README.md +++ b/README.md @@ -232,6 +232,12 @@ Courses - [Assignments](http://cs.wheaton.edu/~tvandrun/dmfp/source.html) - [CSC 253](http://pgbovine.net/cpython-internals.htm) **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. +- [PCPP](http://www.itu.dk/people/sestoft/itu/PCPP/E2015/) **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. ------- From d19b9bf957bd9e8f45d244815c60ee1eba875608 Mon Sep 17 00:00:00 2001 From: Noah Lingawakad Date: Wed, 7 Oct 2015 22:50:48 -0400 Subject: [PATCH 172/175] Update README.md --- README.md | 55 +++++++++++++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 4442e4c..8202c57 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Table of Contents - [CS Theory](#cs-theory) - [Introduction to CS](#introduction-to-cs) - [Machine Learning](#machine-learning) +- [Security](#security) - [Misc](#misc) ### Legend @@ -47,10 +48,6 @@ Courses - [CS 162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures -- [CS 168](https://inst.eecs.berkeley.edu/~cs168/fa14/) **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](https://inst.eecs.berkeley.edu/~cs168/fa14/class.html) - - [Discussion Notes](https://inst.eecs.berkeley.edu/~cs168/fa14/) - [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) @@ -232,12 +229,6 @@ Courses - [Assignments](http://cs.wheaton.edu/~tvandrun/dmfp/source.html) - [CSC 253](http://pgbovine.net/cpython-internals.htm) **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. -- [PCPP](http://www.itu.dk/people/sestoft/itu/PCPP/E2015/) **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. ------- @@ -480,9 +471,6 @@ Courses - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) - [Racket Language](http://racket-lang.org/) -- [CS-for-all](http://www.cs.hmc.edu/csforall/) **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](https://www.cs.hmc.edu/twiki/bin/view/ModularCS1) ------- @@ -553,6 +541,30 @@ Topics covered include probability theory and Bayesian inference; univariate dis - [Readings](http://llcao.net/cu-deeplearning15/reading.html) - [Assignments](http://llcao.net/cu-deeplearning15/programming_problem.html) - [Lecture Notes](http://llcao.net/cu-deeplearning15/index.html) + +------- + +###Security +- [6.857](http://courses.csail.mit.edu/6.857/2015/) **Computer and Network Security** *MIT* Lecture Notes + - Emphasis on applied cryptography and may include: basic notion of systems security, crypotographic hash functions, symmetric crypotography (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](http://courses.csail.mit.edu/6.857/2015/handouts) + [References](http://courses.csail.mit.edu/6.857/2015/references) +- [6.858](http://css.csail.mit.edu/6.858/2014/) **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](http://research.microsoft.com/en-us/people/mickens/) and [Nickolai Zeldovich](http://people.csail.mit.edu/nickolai/) + - [Video Lectures and Labs](http://css.csail.mit.edu/6.858/2014/schedule.html) + - [Quizzes](http://css.csail.mit.edu/6.858/2014/quiz.html) + - [Readings](http://css.csail.mit.edu/6.858/2014/reference.html) + - [Final Projects](http://css.csail.mit.edu/6.858/2014/projects.html) +- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes + - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) + - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) +- [CS 5430](http://www.cs.cornell.edu/courses/CS5430/2013sp/) **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](http://www.cs.cornell.edu/courses/CS5430/2013sp/01.intro.html) + - [Lectures](http://www.cs.cornell.edu/courses/CS5430/2013sp/02.outline.html) + - [Assignments](http://www.cs.cornell.edu/courses/CS5430/2013sp/) ------- @@ -570,10 +582,6 @@ Topics covered include probability theory and Bayesian inference; univariate dis - An introductory course in computer vision and computational photography focusing on four topics: image features, image morphing, shape matching, and image search. - [Lectures](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Schedule) - [Assignments](https://alliance.seas.upenn.edu/~cis581/wiki/index.php?title=Projects) -- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes - - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) - [CS 75](http://ocw.tufts.edu/Course/75) **Introduction to Game Development** *Tufts University* Assignments Lecture Notes - The course taught by [Ming Y. Chow](http://mchow01.github.io) 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](http://ocw.tufts.edu/Course/75/Learningunits) @@ -656,11 +664,6 @@ Topics covered include probability theory and Bayesian inference; univariate dis - Applications from science and engineering - [Lectures](http://www.cs.cornell.edu/~bindel/class/cs5220-f11/lectures.html) - [Assignments](http://www.cs.cornell.edu/~bindel/class/cs5220-f11/assignments.html) -- [CS 5430](http://www.cs.cornell.edu/courses/CS5430/2013sp/) **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](http://www.cs.cornell.edu/courses/CS5430/2013sp/01.intro.html) - - [Lectures](http://www.cs.cornell.edu/courses/CS5430/2013sp/02.outline.html) - - [Assignments](http://www.cs.cornell.edu/courses/CS5430/2013sp/) - [CS 5540](https://sites.google.com/site/cs5540sp2013/) **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](https://sites.google.com/site/cs5540sp2013/home/course-description) @@ -747,14 +750,6 @@ Topics covered include probability theory and Bayesian inference; univariate dis - This is a graduate course in scientific computing created and taught by [Oliver Serang](http://colorfulengineering.org/) 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](https://www.youtube.com/user/fillwithlight/videos) and for direct [download](http://mlecture.uni-bremen.de/ml/index.php?option=com_content&view=article&id=233) - -- [6.858](http://css.csail.mit.edu/6.858/2014/) **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](http://research.microsoft.com/en-us/people/mickens/) and [Nickolai Zeldovich](http://people.csail.mit.edu/nickolai/) - - [Video Lectures and Labs](http://css.csail.mit.edu/6.858/2014/schedule.html) - - [Quizzes](http://css.csail.mit.edu/6.858/2014/quiz.html) - - [Readings](http://css.csail.mit.edu/6.858/2014/reference.html) - - [Final Projects](http://css.csail.mit.edu/6.858/2014/projects.html) - [14-740](http://www.ini740.com/F15/index.html) **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. From 51d6b6e84ece4ae095890c6715831bf1c06da73c Mon Sep 17 00:00:00 2001 From: Toke von Ryberg Date: Wed, 14 Oct 2015 15:15:52 +0300 Subject: [PATCH 173/175] Re-add CS 168, PCPP and CS-for-all --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 8202c57..f46e6ef 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,10 @@ Courses - [CS 162](http://cs162.eecs.berkeley.edu/) **Operating Systems and Systems Programming** *UC Berkeley* Lecture Videos Lecture Notes Assignments Readings - Operating Systems course by the Chair of EECS, UC Berkeley [David Culler](http://www.cs.berkeley.edu/~culler/) - [Youtube Playlist](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAARFmCufZ6XeMPPgAzNSNa) Fall 2014 lectures +- [CS 168](https://inst.eecs.berkeley.edu/~cs168/fa14/) **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](https://inst.eecs.berkeley.edu/~cs168/fa14/class.html) + - [Discussion Notes](https://inst.eecs.berkeley.edu/~cs168/fa14/) - [CS 186](https://sites.google.com/site/cs186fall2013/home) **Introduction to Database Systems** *UC Berkeley* 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 Notes](https://sites.google.com/site/cs186fall2013/section-notes) @@ -229,6 +233,12 @@ Courses - [Assignments](http://cs.wheaton.edu/~tvandrun/dmfp/source.html) - [CSC 253](http://pgbovine.net/cpython-internals.htm) **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. +- [PCPP](http://www.itu.dk/people/sestoft/itu/PCPP/E2015/) **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. ------- @@ -471,6 +481,9 @@ Courses - [Lectures and Assignments 2](http://www.eng.utah.edu/~cs2420-20/schedule.html) - [Textbook](http://htdp.org/2003-09-26/Book/curriculum.html) - [Racket Language](http://racket-lang.org/) +- [CS-for-all](http://www.cs.hmc.edu/csforall/) **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](https://www.cs.hmc.edu/twiki/bin/view/ModularCS1) ------- From 9f938e4cb22ee30463e69a274b6693cc02bb473b Mon Sep 17 00:00:00 2001 From: Noah Lingawakad Date: Sun, 25 Oct 2015 14:00:26 -0400 Subject: [PATCH 174/175] Update Security Section Added courses from Stanford, Berkeley; fixed icons --- README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f46e6ef..9d2c978 100644 --- a/README.md +++ b/README.md @@ -558,26 +558,36 @@ Topics covered include probability theory and Bayesian inference; univariate dis ------- ###Security -- [6.857](http://courses.csail.mit.edu/6.857/2015/) **Computer and Network Security** *MIT* Lecture Notes +- [6.857](http://courses.csail.mit.edu/6.857/2015/) **Computer and Network Security** *MIT* Lecture Notes - Emphasis on applied cryptography and may include: basic notion of systems security, crypotographic hash functions, symmetric crypotography (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](http://courses.csail.mit.edu/6.857/2015/handouts) [References](http://courses.csail.mit.edu/6.857/2015/references) -- [6.858](http://css.csail.mit.edu/6.858/2014/) **Computer Systems Security** *MIT* Lecture Videos Lecture Notes Assignments Readings +- [6.858](http://css.csail.mit.edu/6.858/2014/) **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](http://research.microsoft.com/en-us/people/mickens/) and [Nickolai Zeldovich](http://people.csail.mit.edu/nickolai/) - [Video Lectures and Labs](http://css.csail.mit.edu/6.858/2014/schedule.html) - [Quizzes](http://css.csail.mit.edu/6.858/2014/quiz.html) - [Readings](http://css.csail.mit.edu/6.858/2014/reference.html) - [Final Projects](http://css.csail.mit.edu/6.858/2014/projects.html) -- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes +- [CIS 4930 / CIS 5930](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/) **Offensive Computer Security** *Florida State University* Lecture Videos Assignments Lecture Notes - Course taught by [W. Owen Redwood](http://ww2.cs.fsu.edu/~redwood/) and [Xiuwen Liu](http://www.cs.fsu.edu/~liux/). 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](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html) - [Assignments](http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/assignments.html) -- [CS 5430](http://www.cs.cornell.edu/courses/CS5430/2013sp/) **System Security** *Cornell University* Assignments Lecture Notes Readings +- [CS 5430](http://www.cs.cornell.edu/courses/CS5430/2013sp/) **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](http://www.cs.cornell.edu/courses/CS5430/2013sp/01.intro.html) - [Lectures](http://www.cs.cornell.edu/courses/CS5430/2013sp/02.outline.html) - [Assignments](http://www.cs.cornell.edu/courses/CS5430/2013sp/) +- [CS 161](http://www-inst.eecs.berkeley.edu/~cs161/sp15/) **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 261](http://www.icir.org/vern/cs261n-Sp14/) **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 155](https://courseware.stanford.edu/pg/courses/349991/cs155-spring-2013) **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. +- [18-636](https://courseware.stanford.edu/pg/courses/334553/18636-spring-2013) **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. +- [CS 259](https://courseware.stanford.edu/pg/courses/331628/cs259-winter-2013) **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. ------- From 137e03314c8c8ef6751cab0dab8265c9037c8da8 Mon Sep 17 00:00:00 2001 From: "J.Ching" Date: Wed, 28 Oct 2015 13:28:32 +0800 Subject: [PATCH 175/175] Added problem sets for CS50 --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9d2c978..c481aa0 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ Courses - [Lecture Videos](http://cs.wheaton.edu/~tvandrun/dmfp/) - [Assignments](http://cs.wheaton.edu/~tvandrun/dmfp/source.html) - [CSC 253](http://pgbovine.net/cpython-internals.htm) **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. + - 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. - [PCPP](http://www.itu.dk/people/sestoft/itu/PCPP/E2015/) **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. @@ -386,15 +386,16 @@ Courses - [CS 50](https://cs50.harvard.edu/) **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](https://cs50.harvard.edu/lectures) -- [CS 61A](http://cs61a.org/) **Structure and Interpretation of Computer Programs [Python]** *UC Berkeley* Lecture Videos Assignments Lecture Notes + - [Problem Sets](https://cs50.harvard.edu/psets) +- [CS 61A](http://cs61a.org/) **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](http://cs61a.org/by_type.html) - [Lecture Resources by Topic](http://cs61a.org/by_topic.html) - [Additional Resources](http://cs61a.org/resources.html) - [Practice Problems](http://cs61a.org/problems/) - [Extra Lectures](http://cs61a.org/extra.html) -- [CS 61AS](http://berkeley-cs61as.github.io/) **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 +- [CS 61AS](http://berkeley-cs61as.github.io/) **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](https://www.youtube.com/course?category=University%2FEngineering%2FComputer%2520Science%2FProgramming%2520Languages&list=EC6D76F0C99A731667) - [Assignments and Notes](http://berkeley-cs61as.github.io/textbook.html) - [CS 101](http://online.stanford.edu/course/computer-science-101-self-paced) **Computer Science 101** *Stanford University* Lecture Videos Assignments Lecture Notes @@ -491,12 +492,12 @@ Courses - [StatLearning](https://lagunita.stanford.edu/courses/HumanitiesandScience/StatLearning/Winter2015/about) **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. + - 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](http://www-bcf.usc.edu/~gareth/ISL/) which is a more approachable version of the [Elements of Statistical Learning](http://statweb.stanford.edu/~tibs/ElemStatLearn/) (or ESL) book. - [11-785](http://deeplearning.cs.cmu.edu/) **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. - [10-601](http://www.cs.cmu.edu/~ninamf/courses/601sp15/) **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. + - 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](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) @@ -512,7 +513,7 @@ Courses - [Slides](http://cs109.github.io/2014/pages/schedule.html) - [Labs and Assignments](http://cs109.github.io/2014/pages/homework.html) - [2013 Lectures](http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml) *(slightly better)* -- [CS 188](http://ai.berkeley.edu/home.html) **Introduction to Artificial Intelligence** *UC Berkeley* Lecture Videos Assignments Lecture Notes +- [CS 188](http://ai.berkeley.edu/home.html) **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](http://ai.berkeley.edu/lecture_videos.html) - [Projects](http://ai.berkeley.edu/project_overview.html) @@ -525,7 +526,7 @@ Courses - 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](http://cs231n.stanford.edu/syllabus.html) - [Github Page](http://cs231n.github.io/) -- [CS 287](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/) **Advanced Robotics** *UC Berkeley* Assignments Lecture Notes +- [CS 287](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/) **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](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/#syllabus) - [Assignments](http://www.cs.berkeley.edu/~pabbeel/cs287-fa13/#assignments) @@ -554,7 +555,7 @@ Topics covered include probability theory and Bayesian inference; univariate dis - [Readings](http://llcao.net/cu-deeplearning15/reading.html) - [Assignments](http://llcao.net/cu-deeplearning15/programming_problem.html) - [Lecture Notes](http://llcao.net/cu-deeplearning15/index.html) - + ------- ###Security @@ -763,7 +764,7 @@ Topics covered include probability theory and Bayesian inference; univariate dis - [Lecture Videos](http://www.ischool.berkeley.edu/newsandevents/audiovideo/webcast/21963) - [Previous Years coursepage](http://blogs.ischool.berkeley.edu/i290-abdt-s12/) - [CS294](http://inst.eecs.berkeley.edu/~cs294-101/sp15/) **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. + - 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. - [EECS E6893 & EECS E6895](http://www.ee.columbia.edu/~cylin/course/bigdata/) **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](http://researcher.watson.ibm.com/researcher/view.php?person=us-chingyung)