├── .gitignore └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Study Guide 2 | 3 | Two guys curate a study guide 4 | --- 5 | 6 | ## Mathematics 7 | - [Foundational Mathematics](https://www.youtube.com/playlist?list=PL2CC06557AC6512FD) 8 | - [Introduction to Algebra](https://www.youtube.com/playlist?list=PLCFC38423A00FF0BF) 9 | - [Logarithmic functions and derivatives](https://www.youtube.com/playlist?list=PLGu-XUt3xaQ9SDLNeyVpCpK1978g-wvmX) 10 | - [TecMaths](https://www.youtube.com/user/tecmath/playlists) 11 | - [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) 12 | - [Mathematics 10B - Methods of Mathematics: Calculus, Statistics and Combinatorics, Spring 2014 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iCZ8sTG0pDuBubsDfOFoY2X) 13 | - **Calculus** 14 | - [18.01 Single Variable Calculus (Fall 2006) - MIT OCW](https://ocw.mit.edu/courses/mathematics/18-01-single-variable-calculus-fall-2006/) 15 | - [Calculus Revisited: Single Variable Calculus - MIT OCW](https://ocw.mit.edu/resources/res-18-006-calculus-revisited-single-variable-calculus-fall-2010/) 16 | - [Mathematics 16A - Analytic Geometry and Calculus, Thomas Scanlon, Fall 2013 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iCCCqDD9uTufr5I3Xtr3szk) 17 | - [18.02 Multivariable Calculus (Fall 2007) - MIT OCW](https://ocw.mit.edu/courses/mathematics/18-02-multivariable-calculus-fall-2007/video-lectures/) 18 | - [Calculus Revisited: Multivariable Calculus - MIT OCW](https://ocw.mit.edu/resources/res-18-007-calculus-revisited-multivariable-calculus-fall-2011/) 19 | - [Mathematics 16B - Analytic Geometry and Calculus Professor Thomas Scanlon, Fall 2011 - UC Berkeley](https://www.youtube.com/playlist?list=PL4A471683B59198A7) 20 | - [Mathematics 53 Multivariable Calculus - UC Berkeley](https://www.youtube.com/view_play_list?p=07CF868151394FE3) 21 | - [18.03 Differential Equations (Spring 2010) - MIT OCW](https://ocw.mit.edu/courses/mathematics/18-03-differential-equations-spring-2010/) 22 | - [Highlights of Calculus, Gilbert Strang - MIT OCW](https://www.youtube.com/playlist?list=PLBE9407EA64E2C318) 23 | - [Mathematics 16A Analytic Geometry and Calculus, Fall 2011 - UCBerkeley](https://www.youtube.com/view_play_list?p=B7EDD5D491072A6E) 24 | - [Mathematics 16B Analytic Geometry and Calculus, Fall 2011 - UCBerkeley](https://www.youtube.com/view_play_list?p=4A471683B59198A7) 25 | - [Calculus I - New York University](https://www.youtube.com/course?list=EC2D50EE0B1DC5453E) 26 | - [Calculus One - Ohio State University](https://itunes.apple.com/us/course/calculus-one/id660718824) 27 | - [Calculus III: Multivariable Calculus (Princeton University)](https://www.youtube.com/playlist?list=PLGqzsq0erqU7h6_bpE-CgJp4iX5aRju28) 28 | - [Calculus - University of Houston](https://online.math.uh.edu/HoustonACT/videocalculus/) 29 | - [Calculus Revisited: Complex Variables, Differential Equations, and Linear Algebra - MIT OCW](https://ocw.mit.edu/resources/res-18-008-calculus-revisited-complex-variables-differential-equations-and-linear-algebra-fall-2011/) 30 | - [Math 31A Differential & Integral Calculus, UCLA](https://www.youtube.com/course?list=EC1BE3027EF549C7D1) 31 | - [Math 1210, Calculus 1 - University of Utah](https://www.math.utah.edu/lectures/math1210.html) 32 | - [Math 1220, Calculus 2 - University of Utah](https://www.math.utah.edu/lectures/math1220.html) 33 | - [Math 2210, Calculus 3 - University of Utah](https://www.math.utah.edu/lectures/math2210.html) 34 | - [MA 107 Precalculus I - NCSU](https://courses.ncsu.edu/ma107/common/media/MA107Lectures.html) 35 | - [MA 121 Elements of Calculus - NCSU](https://courses.ncsu.edu/ma121/common/media/MA121lectures.html) 36 | - [MA 141 Calculus I - NCSU](https://www.math.ncsu.edu/calculus/web/MA141lectures.html) 37 | - [MA 241 Calculus II - NCSU](https://www.math.ncsu.edu/calculus/web/MA241lectures.html) 38 | - [MA 242 Calculus III - NCSU](https://courses.ncsu.edu/ma242/common/media/OutlineOfLectures.html) 39 | - [MA 341 Applied Differential Equations I - NCSU](https://www.math.ncsu.edu/mmc/ma341lectures.php) 40 | - **Linear Algebra** 41 | - [18.06SC Linear Algebra (Fall 2011) - MIT OCW](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) 42 | - [Linear Algebra (Princeton University)](https://www.youtube.com/playlist?list=PLGqzsq0erqU7w7ZrTZ-pWWk4-AOkiGEGp) 43 | - [Part 1 Linear Algebra: An In-Depth Introduction with a Focus on Applications](https://www.youtube.com/playlist?list=PLlXfTHzgMRUKXD88IdzS14F4NxAZudSmv) ([Part 2](https://www.youtube.com/playlist?list=PLlXfTHzgMRULWJYthculb2QWEiZOkwTSU) [Part 3](https://www.youtube.com/playlist?list=PLlXfTHzgMRUIqYrutsFXCOmiqKUgOgGJ5)) 44 | - [A first course in Linear Algebra - N J Wildberger - UNSWelearning](https://www.youtube.com/course?list=EC44B6B54CBF6A72DF) 45 | - [MATH 3328/2318 Linear Algebra - Lamar](http://www.math.lamar.edu/faculty/maesumi/LinearAlgebra.html) 46 | - [Math 220 - Introductory Linear Algebra, Fall 2013 - WSU](http://www.math.wsu.edu/faculty/bkrishna/FilesMath220/F13/LecNotes/welcome.html) 47 | - [Basic Linear Algebra - LadislauFernandes](https://www.youtube.com/playlist?list=PLWbnIo7XnOkz1hBLdv_0LwcdwUjvoZL5s) 48 | - **Probability & Statistics** 49 | - [6.041 Probabilistic Systems Analysis and Applied Probability - MIT OCW](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041sc-probabilistic-systems-analysis-and-applied-probability-fall-2013/) 50 | - [Statistics 110: Probability - Harvard University](https://www.youtube.com/course?list=EC2SOU6wwxB0uwwH80KTQ6ht66KWxbzTIo) 51 | - [Stat 2 - Fall 2006: Introduction to Statistics - UC Berkeley](https://itunes.apple.com/us/itunes-u/stat-2-fall-2006-introduction/id461123197) 52 | - [Statistics 20, Fall 2010 - UCBerkeley](https://www.youtube.com/view_play_list?p=FCCED623A3AB020F) 53 | - [Statistics 21 - Introductory Probability and Statistics for Business, Fall 2009 - UCBerkeley](https://www.youtube.com/course?list=PL10921DED3A8BFF53) 54 | - [Introduction to Statistics and Data Analysis - University of Michigan](https://itunes.apple.com/us/course/introduction-to-statistics/id577098650) 55 | - [Math 3C Probability for Math Science - UCLA ](https://www.youtube.com/playlist?list=PL5BE09709EECF36AA) 56 | - [6.262 Discrete Stochastic Processes - MIT OCW](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-262-discrete-stochastic-processes-spring-2011/) 57 | - [DTU: Introduction to Statistics](https://www.youtube.com/playlist?list=PLaLOVNqqD-2FE31HVMLOEapRdKhXAK9gI) 58 | - [Probability & Statistics with Prof David Spiegelhalter](https://www.youtube.com/playlist?list=PLTBqohhFNBE9jRhvdtnuxj9FiOtDOnqoy) 59 | - [10-600 Math Background for ML - CMU](https://www.youtube.com/playlist?list=PL7y-1rk2cCsA339crwXMWUaBRuLBvPBCg) 60 | - [MIT 18.065 Matrix Methods in Data Analysis, Signal Processing, and Machine Learning](https://ocw.mit.edu/courses/mathematics/18-065-matrix-methods-in-data-analysis-signal-processing-and-machine-learning-spring-2018/video-lectures/) 61 | - [36-705 - Intermediate Statistics - Larry Wasserman, CMU](http://www.stat.cmu.edu/~larry/=stat705/) ([YouTube](https://www.youtube.com/playlist?list=PLcW8xNfZoh7eI7KSWneVWq-7wr8ffRtHF)) 62 | - [Combinatorics - IISC Bangalore](https://nptel.ac.in/courses/106108051/) 63 | - MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): 64 | - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) 65 | - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) 66 | - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) 67 | - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) 68 | - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) 69 | - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) 70 | - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) 71 | - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) 72 | - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) 73 | - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) 74 | - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) 75 | - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) 76 | - [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) 77 | - **General (uncategorized)** 78 | - [Math Foundations A (1-79) - Prof Wildberger](https://www.youtube.com/playlist?list=PL5A714C94D40392AB) ([B (80-149)](https://www.youtube.com/playlist?list=PLIljB45xT85DpiADQOPth56AVC48SrPLc), [C (150-- )](https://www.youtube.com/playlist?list=PLIljB45xT85AYIeGfDQwHM8i6PQEDnnTI) ) 79 | - [18.085 Computational Science and Engineering I - MIT OCW](https://ocw.mit.edu/courses/mathematics/18-085-computational-science-and-engineering-i-fall-2008/) 80 | - [18.086 Mathematical Methods for Engineers II - MIT OCW](https://ocw.mit.edu/courses/mathematics/18-086-mathematical-methods-for-engineers-ii-spring-2006/) 81 | - [Advanced Scientific Computing: Numerical Methods, Fall 2013 - Harvard University](http://iacs-courses.seas.harvard.edu/courses/am205/fall13/) 82 | - [Introduction to Numerical Analysis I - NCSU](http://www4.ncsu.edu/~ctk/ma580.html) 83 | - [Tensor Calculus and the Calculus of Moving Surfaces](https://www.youtube.com/playlist?list=PLlXfTHzgMRULkodlIEqfgTS-H1AY_bNtq) 84 | - [Abstract Algebra - Harvard University](https://www.youtube.com/playlist?list=PLelIK3uylPMGzHBuR3hLMHrYfMqWWsmx5) ([Another link](http://matterhorn.dce.harvard.edu/engage/ui/index.html#/1999/01/82345)) 85 | - [Sets, Counting, and Probability - Harvard University](https://www.youtube.com/playlist?list=PLelIK3uylPMFx0ChiZsKts8cs46wu9CJb) 86 | - [Lie Groups - Harvard University](https://www.youtube.com/playlist?list=PLelIK3uylPMG3iyQ_SJYqeyjmeNC2QC3L) 87 | - [Algebraic Topology: a beginner's course - N J Wildberger - UNSWelearning](https://www.youtube.com/course?list=EC41FDABC6AA085E78) 88 | - [Group Theory - LadislauFernandes](https://www.youtube.com/playlist?list=PLWbnIo7XnOkw7zZu6u3si3at21r534qIM) 89 | - [Group Theory - Ben Garside](https://www.youtube.com/playlist?list=PLAvgI3H-gclb_Xy7eTIXkkKt3KlV6gk9_) 90 | - [Ted Chinburg's Lectures on Algebraic Number Theory - Math 620](https://www.math.upenn.edu/~ted/620F09/hw-620SchedTab.html) ([Math 621](https://www.math.upenn.edu/~ted/620S10/hw-621SchedTab.html) [Math 720](https://www.math.upenn.edu/~ted/720F10/hw-720SchedTab.html) [Math 721](https://www.math.upenn.edu/~ted/721S11/hw-721SchedTab.html)) 91 | - [Algebraic Knot Theory - University of Toronto](http://drorbn.net/index.php?title=AKT-09) 92 | - [Geometric Representation Theory Seminar - Fall 2007 - UC Riverside](http://math.ucr.edu/home/baez/qg-fall2007/) 93 | - [Morse Theory: UGA 2012](https://www.youtube.com/playlist?list=PL48612E5AEB587038) 94 | - [Lie Groups 2012, University of Utrecht](http://webmovies.science.uu.nl/WISM414/) 95 | - [MATH 648W: Wavelet Theory and Waveform Design - University of Maryland](http://www.norbertwiener.umd.edu/Education/wavelets/index.html) 96 | - [Arithmetic geometry - Clay Mathematics Institute Summer School 2006 ](http://www.uni-math.gwdg.de/aufzeichnungen/SummerSchool/) 97 | - [12-267 Advanced Ordinary Differential Equations, Fall 2012 - University of Toronto](http://drorbn.net/index.php?title=12-267) 98 | - [15-859S / 21-801A: Analysis of Boolean Functions 2012 - CMU](http://www.cs.cmu.edu/~odonnell/aobf12/) 99 | - [Topics in Logic: Computability Theory, Sp 2011 - University of Colorado Boulder](http://kasterma.net/teach.html) 100 | - [Calculus I with Professor Richard Delaware - University of Missouri - Kansas City](https://www.youtube.com/playlist?list=PLF5E22224459D23D9) 101 | - [MATH-501 Real Analysis - I](http://courses.bilkent.edu.tr/course_videos.php?courseid=12) ([Another link](http://video.bilkent.edu.tr/regenerated_pages/Mathematics_ms.html)) 102 | - [Real Analysis - Harvey Mudd College](https://www.youtube.com/playlist?list=PL04BA7A9EB907EDAF) 103 | - [Math312 (Linear algebra) - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMJ2bO_YS1r0UFW2XRRGqUUL) 104 | - [Math340 (Homological algebra) - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMLvfY5NOfWRs55x_H4lRTpj) 105 | - [Math350 (Number theory) - UPenn](https://www.math.upenn.edu/~ted/350F14/hw-350SchedTab.html) ([YouTube](https://www.youtube.com/playlist?list=PLS3WLIIQXmMJ5Dd-vu_ST6ll3PH7Co2S8)) 106 | - [Math371 (Algebra II), 2011 - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmML4mJgnP9q6EaL8sBTg7I3p) 107 | - [Math371 (Algebra II), 2014 - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMIM2UqSvLGnE-sbUPkDF4Bu) 108 | - [Math602 (Graduate algebra 1), 2011 - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMIbqujCLRMYL4Dqe46c_dss) 109 | - [Math602 (Graduate algebra 1), 2013 - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMITfZqYjSS5AJHIZM2lequR) 110 | - [Math603 (Graduate algebra 2), 2014 - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMKzNNgSSJqyJocKY7vIcD8o) 111 | - [Math702 (Algebraic number theory) - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMJU2wh0WDLsyMh_evP8m7os) 112 | - [Math703 (Algebraic number theory II) - UPenn](https://www.youtube.com/playlist?list=PLS3WLIIQXmMLEvNfav1QVRhIKJcBslI7F) 113 | - [Number Theory of 2015, James Cook - Liberty University](https://www.youtube.com/playlist?list=PLBY4G2o7DhF3dBX7vxpS6b119SyM3S7WJ) 114 | - [UCCS Video Course Archive](http://www.uccs.edu/~math/vidarchive.html) - requires free registration 115 | - [History of Mathematics - N J Wildberger - UNSWelearning](https://www.youtube.com/course?list=EC34B589BE3014EAEB) 116 | - [Hyperbolic Geometry - N J Wildberger - UNSWelearning](https://www.youtube.com/course?list=ECC37ED4C488778E7E) 117 | - [Rational Trigonometry--- N J Wildberger - UNSWelearning](https://www.youtube.com/course?list=ECD6BAC8FA4287A3DD) 118 | - [Trigonometry - Harrisburg Area Community College](https://itunes.apple.com/us/course/trigonometry/id495049749) 119 | - [Vector Calculus @ UNSW Sydney. Dr Chris Tisdell - UNSWelearning](https://www.youtube.com/course?list=EC283CA2107AD503A3) 120 | - [Videos of Probability and Statistics Courses - compiled by Dr. M. Hlynka, University of Windsor](http://web2.uwindsor.ca/math/hlynka/statcourses.html) 121 | - [EE261 - The Fourier Transform and its Applications](https://see.stanford.edu/Course/EE261) 122 | - [EE263 - Introduction to Linear Dynamical Systems](https://see.stanford.edu/Course/EE263) 123 | - [EE364A - Convex Optimization I](https://see.stanford.edu/Course/EE364A) 124 | - [EE364B - Convex Optimization II](https://see.stanford.edu/Course/EE364B) 125 | - [EE230 - Probability and Random Variables, METUOpenCourseWare](https://www.youtube.com/playlist?list=PLuiPz6iU5SQ8ra5kjxx770vk_famaeuvz) 126 | - [Advanced Complex Analysis - Part 1:Zeros of Analytic Functions,Analytic continuation, Monodromy, Hyperbolic Geometry and the Reimann Mapping Theorem - IIT Madras](http://nptel.ac.in/courses/111106084/) 127 | - [Advanced Complex Analysis - Part 2: Compactness of Meromorphic Functions in the Spherical Metric, Spherical Derivative, Normality, Theorems of Marty-Zalcman-Montel-Picard-Royden-Schottky - IIT Madras](http://nptel.ac.in/courses/111106094/) 128 | - [A Basic Course in Real Analysis - IIT Kharagpur](http://nptel.ac.in/courses/111105069/) 129 | - [Advanced Engineering Mathematics - IIT Kharagpur](http://nptel.ac.in/courses/111105035/) 130 | - [Advanced Matrix Theory and Linear Algebra for Engineers - IISC Bangalore](http://nptel.ac.in/courses/111108066/) 131 | - [An Introduction to Riemann Surfaces and Algebraic Curves: Complex 1-Tori and Elliptic Curves - IIT Madras](http://nptel.ac.in/courses/111106044/) 132 | - [Applied Multivariate Analysis - IIT Kanpur](http://nptel.ac.in/courses/111104024/) 133 | - [Basic Algebraic Geometry : Varieties, Morphisms, Local Rings, Function Fields and Nonsingularity - IIT Madras](http://nptel.ac.in/courses/111106097/) 134 | - [Calculus of Variations and Integral Equations - IIT Kanpur](http://nptel.ac.in/courses/111104025/) 135 | - [Complex Analysis - IIT GUWAHATI](http://nptel.ac.in/courses/111103070/) 136 | - [Convex Optimization - IIT Kanpur](http://nptel.ac.in/courses/111104068/) 137 | - [Discrete Mathematics - IIT Roorkee](http://nptel.ac.in/courses/111107058/) 138 | - [Dynamic Data Assimilation: an introduction - IIT Madras](http://nptel.ac.in/courses/111106082/) 139 | - [Elementary Numerical Analysis - IIT Bombay](http://nptel.ac.in/courses/111101003/) 140 | - [Foundations of Optimization - IIT Kanpur](http://nptel.ac.in/courses/111104071/) 141 | - [Functional Analysis - IIT Kharagpur](http://nptel.ac.in/courses/111105037/) 142 | - [Linear Algebra - IIT Madras](http://nptel.ac.in/courses/111106051/) 143 | - [Linear programming and Extensions - IIT Kanpur](http://nptel.ac.in/courses/111104027/) 144 | - [Mathematical Logic - IIT Madras](http://nptel.ac.in/courses/111106052/) 145 | - [Measure and Integration - IIT Bombay](http://nptel.ac.in/courses/111101005/) 146 | - [Applied Multivariate Statistical Modeling - IIT Kharagpur](http://nptel.ac.in/courses/111105091/) 147 | - [An invitation to mathematics - IIT Madras](http://nptel.ac.in/courses/111106083/) 148 | - [Basic Calculus for Engineers, Scientists and Economists - IIT Kanpur](http://nptel.ac.in/courses/111104085/) 149 | - [Curves and Surfaces - IIT Kanpur](http://nptel.ac.in/courses/111104095/) 150 | - [Differential Calculus in Several Variables - IIT Kanpur](http://nptel.ac.in/courses/111104092/) 151 | - [Discrete Mathematics - IIT Madras](http://nptel.ac.in/courses/111106086/) 152 | - [Partial Differential Equations (PDE) for Engineers: Solution by Separation of Variables - IIT Kharagpur](http://nptel.ac.in/courses/111105093/) 153 | - [Probability and Statistics - IIT Kharagpur](http://nptel.ac.in/courses/111105090/) 154 | - [Probability and Stochastics for finance - IIT Kanpur](http://nptel.ac.in/courses/111104089/) 155 | - [Stochastic Processes - 1 - IIT Bombay](http://nptel.ac.in/courses/111102096/) 156 | - [Numerical methods of Ordinary and Partial Differential Equations - IIT Kharagpur](http://nptel.ac.in/courses/111105038/) 157 | - [Optimization - IIT Kharagpur](http://nptel.ac.in/courses/111105039/) 158 | - [Ordinary Differential Equations and Applications - IISC Bangalore](http://nptel.ac.in/courses/111108081/) 159 | - [Probability and Statistics - IIT Kharagpur](http://nptel.ac.in/courses/111105041/) 160 | - [Probability Theory and Applications - IIT Kanpur](http://nptel.ac.in/courses/111104079/) 161 | - [Real Analysis - IIT Madras](http://nptel.ac.in/courses/111106053/) 162 | - [Regression Analysis - IIT Kharagpur](http://nptel.ac.in/courses/111105042/) 163 | - [Statistical Inference - IIT Kharagpur](http://nptel.ac.in/courses/111105043/) 164 | - [Stochastic Processes - IIT Bombay](http://nptel.ac.in/courses/111102014/) 165 | - [Statistical Methods for Scientists and Engineers - IIT Kharagpur](http://nptel.ac.in/courses/111105077/) 166 | - [Mathematics 128A - Numerical Analysis, Spring 2014 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBVDF1yWNfVhrGF5584gXTz) 167 | - [Algebraic Lie Theory - Cambridge University](https://itunes.apple.com/us/itunes-u/algebraic-lie-theory/id598586973) 168 | - [Analysis on Graphs and its Applications - Cambridge University](https://itunes.apple.com/us/itunes-u/analysis-on-graphs-and-its-applications/id602063546) 169 | - [Combinatorics and Statistical Mechanics - Cambridge University](https://itunes.apple.com/us/itunes-u/combinatorics-and-statistical-mechanics/id598588398) 170 | - [GRASP Lecture Series: Geometry, Representations, and some Physics - The University of Texas at Austin](https://itunes.apple.com/us/itunes-u/grasp-lecture-series-geometry-representations-some/id544303106) 171 | - [Lectures on Topology and Field Theories - University of Notre Dame](https://itunes.apple.com/us/itunes-u/lectures-on-topology-and-field-theories/id550461916) 172 | - [Mathematical Analysis - University of Nottingham](https://itunes.apple.com/us/itunes-u/mathematical-analysis/id396420858) ([YouTube](https://www.youtube.com/playlist?list=PL58984C080F2B0575)) 173 | - [Math 1010 (Intermediate Algebra) - University of Utah](https://www.math.utah.edu/lectures/math1010.html) 174 | - [Math 1050, College Algebra - University of Utah](https://www.math.utah.edu/lectures/math1050.html) 175 | - [Math 1090, Business Algebra - University of Utah](https://www.math.utah.edu/lectures/math1090.html) 176 | - [Math 1030, Introduction to Quantitative Reasoning - University of Utah](https://www.math.utah.edu/lectures/math1030.html) 177 | - [Math 1060, Trigonometry - University of Utah](https://www.math.utah.edu/lectures/math1060.html) 178 | - [Math 646 - Mathematical Problems II - TAMU](http://www.math.tamu.edu/~mpilant/math646/videos.html) 179 | - [Applied Complex Variables (Math 3160) - UoU](https://www.youtube.com/playlist?list=PLkfmuPOLLntiM_HjG-FSUTyINMfgVszca) 180 | - [Differential Equations and Linear Algebra (Math 2250) - UoU](https://www.youtube.com/playlist?list=PLkfmuPOLLntiLBCHDCHWFtLaz-P94Iwe3) 181 | - [Partial Differential Equations (Math 3150) - UoU](https://www.youtube.com/playlist?list=PLkfmuPOLLntjZFL7lH75U4jQeUJznduqL) 182 | - [Vector Calculus and Partial Differential Equations (Math 3140) - UoU](https://www.youtube.com/playlist?list=PLkfmuPOLLnthHE9ICNdGgdgIi16-M80ZS) 183 | - [01325 Mathematics 4 Real Analysis F13](http://www2.mat.dtu.dk/education/01325/overview.htm) 184 | - [MATH 676: Finite element methods in scientific computing - TAMU](http://www.math.colostate.edu/~bangerth/videos.html) 185 | - [Mathematics - Foundations of Pure Mathematics - University of Nottingham](https://www.youtube.com/playlist?list=PLpRE0Zu_k-BzsKBqQ-HEqD6WVLIHSNuXa) 186 | - [Mathematics - Functional Analysis - University of Nottingham](https://www.youtube.com/playlist?list=PL554B877A872B4F94) 187 | - [Topology & Geometry by Dr Tadashi Tokieda](https://www.youtube.com/playlist?list=PLTBqohhFNBE_09L0i-lf3fYXF5woAbrzJ) 188 | - [Lecture Series on Bing topology and Casson handles - Max Planck Institute for Mathematics](http://www.mpim-bonn.mpg.de/node/4436) 189 | - [Classification of Topological 4-manifolds (Semester on 4-manifolds) - Max Planck Institute for Mathematics](http://www.mpim-bonn.mpg.de/node/4617) 190 | - [Holistic Numerical Methods](http://nm.mathforcollege.com/videos/) 191 | - [Tim Gowers - Computational Complexity and Quantum Compuation](https://www.sms.cam.ac.uk/collection/545358) 192 | - [Topology - ThoughtSpaceZero](https://www.youtube.com/playlist?list=PLF94A6F65866F3F31) 193 | - [Lectures on Basic Algebraic Geometry by Miles Reid (WCU project)](http://www.mathnet.or.kr/new_VOD/sub1.php?key_s_title=Lectures+on+Basic+Algebraic+Geometry+by+Miles+Reid+%28WCU+project%29) 194 | - [Lectures on Algebraic Surfaces by Miles Reid (WCU project)](http://vod.mathnet.or.kr/sub1.php?key_s_title=Lectures+on+Algebraic+Surfaces+by+Miles+Reid+%28WCU+project%29) 195 | - [Math 240 - Linear algebra and differential equations (Fall 2018) - Ted Chinburg - UPenn](https://www.math.upenn.edu/~ted/240F18/hw-240SchedTab.html) 196 | - [Math 720 - Advanced Number Theory (Fall 2018)](https://www.math.upenn.edu/~ted/720F18/hw-720SchedTab.html) 197 | - [Math 210 - Mathematics in the information age (Spring 2018)](https://www.math.upenn.edu/~ted/210S18/math210.html) 198 | - [Math 702 - Topics in Algebra (Spring 2018)](https://www.math.upenn.edu/~ted/702S18/hw-702SchedTab.html) 199 | - [Math 603 - Graduate Algebra (Spring 2017)](https://www.math.upenn.edu/~ted/603S17/hw-603SchedTab.html) 200 | - [Math 350 - Number theory (Fall 2014)](https://www.math.upenn.edu/~ted/350F14/math350.html) 201 | - [Math 371 - Second semester undergraduate abstract algebra (Fall 2014)](https://www.math.upenn.edu/~ted/371F14/hw-371SchedTab.html) 202 | - [Math 602 - Abstract Algebra (Fall 2013)](https://www.math.upenn.edu/~ted/602F13/hw-602SchedTab.html) 203 | - [Math 603 - Abstract Algebra (Spring 2014)](https://www.math.upenn.edu/~ted/603S14/hw-603SchedTab.html) 204 | 205 | 206 | ## Physics 207 | - [3Blue2Brown Physics Playlist](https://www.youtube.com/playlist?list=PLZHQObOWTQDPHLHBuY0nPbAQ_WGEjtzLW) 208 | - **General (uncategorized)** 209 | - [8.01 Physics I: Classical Mechanics, Fall 1999, Walter Lewin](http://academictorrents.com/details/f231c62635aadfb0e4d1f45ddc7b5b6c5592b275) ([YouTube](https://www.youtube.com/playlist?list=PLUdYlQf0_sSsb2tNcA3gtgOt8LGH6tJbr)) 210 | - [8.02 Physics II: Electricity and Magnetism, Spring 2002, Walter Lewin](http://academictorrents.com/details/7010163eae33fbac6c065095e908c2c49550b931) ([YouTube](https://www.youtube.com/playlist?list=PLUdYlQf0_sSsfcNOPSNPQKHDhSjTJATPu)) 211 | - [8.03 Physics III: Vibrations and Waves, Fall 2004, Walter Lewin](http://academictorrents.com/details/724648552d517756117b47b3a7f5f62962f2629e) ([YouTube](https://www.youtube.com/playlist?list=PLUdYlQf0_sSsdOhQ_8jfrAGzbGbJ7MXGe)) 212 | - [Collection of Physics video lectures](https://futurism.com/ultimate-collection-free-physics-videos/) 213 | - [The Mechanical Universe - Caltech](https://www.youtube.com/playlist?list=PL8_xPU5epJddRABXqJ5h5G0dk-XGtA5cZ) 214 | - [8.421 Atomic and Optical Physics I, MIT OCW](https://ocw.mit.edu/courses/physics/8-421-atomic-and-optical-physics-i-spring-2014/video-lectures/) 215 | - [8.422 Atomic and Optical Physics II, MIT OCW](https://ocw.mit.edu/courses/physics/8-422-atomic-and-optical-physics-ii-spring-2013/video-lectures/) 216 | - [8.821 String Theory and Holographic Duality, MIT OCW](https://ocw.mit.edu/courses/physics/8-821-string-theory-and-holographic-duality-fall-2014/) 217 | - [8.851 Effective Field Theory, MIT OCW](https://ocw.mit.edu/courses/physics/8-851-effective-field-theory-spring-2013/video-lectures/) 218 | - [The Theoretical Minimum, Leonard Susskind, Stanford University](http://theoreticalminimum.com/courses) ([YouTube - All lectures in order](https://www.youtube.com/playlist?list=PLQrxduI9Pds1fm91Dmn8x1lo-O_kpZGk8)), courses: 219 | - Classical Mechanics 220 | - Quantum Mechanics 221 | - Special Relativity and Electrodynamics 222 | - General Relativity 223 | - Cosmology 224 | - Statistical Mechanics 225 | - Advanced Quantum Mechanics 226 | - Higgs Boson 227 | - Quantum Entanglement 228 | - Relativity 229 | - Particle Physics 1: Basic Concepts 230 | - Particle Physics 2: Standard Model 231 | - Particle Physics 3: Supersymmetry and Grand Unification 232 | - String Theory 233 | - Cosmology and Black Holes 234 | - [Richard Feynman's Lectures on Physics](https://www.youtube.com/playlist?list=PL_6G_2_0gFDqFjq4gZbmDvJT4bnvnNwr-) 235 | - [PHYS 200: FUNDAMENTALS OF PHYSICS I, Yale University](http://oyc.yale.edu/physics/phys-200) 236 | - [PHYS 201: FUNDAMENTALS OF PHYSICS II, Yale University](http://oyc.yale.edu/physics/phys-201) 237 | - [Physics 3A: Basic Physics (English), UC Irvine](http://ocw.uci.edu/courses/physics_3a_basic_physics.html) 238 | - [Physics 3B: Basic Physics II (English)](http://ocw.uci.edu/courses/physics_3b_basic_physics_ii.html) 239 | - [Physics 3C: Basic Physics III (English), UC Irvine](http://ocw.uci.edu/courses/physics_3c_basic_physics_iii.html) 240 | - [Physics 255: General Relativity, UC Irvine](http://ocw.uci.edu/courses/einsteins_general_relativity_and_gravitation.html) 241 | - [Physics 20B: Cosmology (English), UC Irvine](http://ocw.uci.edu/courses/physics_20b_cosmology.html) 242 | - [Physics 8B - Introductory Physics - Melvin Pomerantz, Spring 2015 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iDLzEJt081W3hahBzuTX7An) 243 | - [Physics 10, 001 - Spring 2006 - UC Berkeley](https://www.youtube.com/playlist?list=PL095393D5B42B2266) 244 | - [Physics C10 - Descriptive Introduction to Physics, Spring 2014 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAKxxGD1tIWLS0DcieGLHh0) 245 | - [Physics 111 - Advanced Experimentation Lab - UC Berkeley](https://www.youtube.com/playlist?list=PL18E88897D2310BD5) 246 | - [Physics 151 - Physics for Future Physicists, Fall 2013 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iDR8yysdRyQ0NNxdRgnNBNl) 247 | - [Physics 253: Quantum Field Theory Lectures by Sidney R. Coleman, Harvard University](https://www.physics.harvard.edu/events/videos/Phys253) 248 | - [Quantum Field Theory II, Tata Institute of Fundamental Research](http://theory.tifr.res.in/~minwalla/qft2/) 249 | - [Quantum Field Theory (University of Cambridge)](https://www.youtube.com/playlist?list=PLGqzsq0erqU4nc3E6Ot1bhSYkAUL6xe9u) 250 | - [Neutrino Physics (Amol Dighe), Tata Institute of Fundamental Research](https://www.youtube.com/playlist?list=PL28B95E11276C75F6) 251 | - [Quantum Space Time Series](https://www.youtube.com/playlist?list=PL3PVFGnaPl_v9hqbPyYWuwfzMKTCzmzZ1) 252 | - [Lectures on Geometrical Anatomy of Theoretical Physics, Fredric Schuller](https://www.youtube.com/playlist?list=PLPH7f_7ZlzxTi6kS4vCmv4ZKm9u8g5yic) 253 | - [Lectures on Quantum Theory, Fredric Schuller](https://www.youtube.com/playlist?list=PLPH7f_7ZlzxQVx5jRjbfRGEzWY_upS5K6) 254 | - [Quantum Field Theory, String Theory and Beyond, Israel Institute for Advanced Studies](https://www.youtube.com/playlist?list=PLTn74Qx5mPsT7TKprAtNKZmulHs0qXB1K) 255 | - [Physics 121 Spring 2015, Santa Barbara City College](https://www.youtube.com/playlist?list=PLpMn6V7JuggHkn1Jlt0104uNPmpnLFl-G) 256 | - [Physics 122 Fall 2013, Santa Barbara City College](https://www.youtube.com/playlist?list=PLpMn6V7JuggHTQfh0aBM5OD4RObeyndsP) 257 | - [SBCC Physics 123 Spring 2014, Santa Barbara City College](https://www.youtube.com/playlist?list=PLpMn6V7JuggFnfsb8RMxrwGugD7APF6d9) 258 | - [Supersymmetry (University of Cambridge)](https://www.youtube.com/playlist?list=PLGqzsq0erqU44oUApLJPG7stYS6mToTjt) 259 | - [Introduction to Nuclear Physics MIT](https://www.youtube.com/playlist?list=PLOarn8QL6W_LOBTvWwLac5VCxJpkiHa-e) 260 | - [Tensor Calculus, Multilinear Algebra and Differential Geometry (General Relativity Prerequisites)](https://www.youtube.com/playlist?list=PLtku678e9yj725K6hjLqKhJ854nTWWR5e) 261 | - [Phys 237: Gravitational Waves with Kip Thorne - Caltech](https://www.youtube.com/playlist?list=PLaLOVNqqD-2H-fiiL5Lxmmuhquem-zNIC) 262 | - [The WE-Heraeus International Winter School on Gravity and Light](https://www.youtube.com/playlist?list=PLFeEvEPtX_0S6vxxiiNPrJbLu9aK1UVC_) 263 | 264 | - **Quantum Physics** 265 | - [8.04 Quantum Physics I, MIT OCW](https://ocw.mit.edu/courses/physics/8-04-quantum-physics-i-spring-2013/lecture-videos/) 266 | - [8.05 Quantum Physics II, MIT OCW](https://ocw.mit.edu/courses/physics/8-05-quantum-physics-ii-fall-2013/video-lectures/) 267 | - [Quantum Mechanics - Oxford University](https://www.youtube.com/playlist?list=PLOarn8QL6W_ImlqPOMluvxIUx9hkWMiTY) 268 | - [Relativistic Quantum Mechanics](https://www.youtube.com/playlist?list=PLOarn8QL6W_L1T2soxwuWNy6XJxrLAG4A) 269 | 270 | - **Relativity** 271 | - [General Relativity (Sunil Mukhi), Tata Institute of Fundamental Research](https://www.youtube.com/playlist?list=PLB11E80403FB98CFF) 272 | 273 | - **Astronomy/Astrophysics/Cosmology** 274 | - [ASTR 160: FRONTIERS AND CONTROVERSIES IN ASTROPHYSICS, Yale University](http://oyc.yale.edu/astronomy/astr-160) 275 | - [Astronomy 7B - Introduction to Astrophysics - Professor Joshua Simon Bloom, Spring 2011 - UC Berkeley](https://www.youtube.com/playlist?list=PL69F56882DF6F04B3) 276 | - [Astronomy 10 - Introduction to General Astronomy, Fall 2011 - UC Berkeley](https://www.youtube.com/playlist?list=PL2AC754AEB6E21150) 277 | - [Astronomy C12 - The Planets - Geoffrey W. Marcy, Fall 2014 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iAWhNzFKIy-KkqCcSPKG426) 278 | - [Astronomy C13 - Origins: from the Big Bang to the Emergence of Humans, Fall 2014 - UC Berkeley](https://www.youtube.com/playlist?list=PL-XXv-cvA_iClVCQCE7QTTyI6HsA7ikza) 279 | - [Astronomy 250 - Scientific Research Computing with Python, Spring 2012 - UC Berkeley](https://www.youtube.com/playlist?list=PL45D5CCBB5073FDB4) 280 | - [8.286 The Early Universe](https://ocw.mit.edu/courses/physics/8-286-the-early-universe-fall-2013/video-lectures/) 281 | 282 | - **String Theory** 283 | - [LHC for String Theorists, Sunil Mukhi, Tata Institute of Fundamental Research](http://theory.tifr.res.in/~mukhi/Physics/LHC4ST/lhc4st.html) 284 | - [String Theory, Shiraz Minwalla, Tata Institute of Fundamental Research](http://theory.tifr.res.in/~minwalla/) 285 | - [Strings2 (2016) - By Prof. Shiraz Minwalla](https://www.youtube.com/playlist?list=PL3PVFGnaPl_vVwZtJiBkTlKAAjJEfuIaO) 286 | 287 | - **Statistical Mechanics** 288 | - [Physics 12c Statistical Mechanics - Caltech](https://www.youtube.com/playlist?list=PL0ojjrEqIyPzgJUUW76koGcSCy6OGtDRI) 289 | - [8.333 Statistical Mechanics I: Statistical Mechanics of Particles, MIT OCW](https://ocw.mit.edu/courses/physics/8-333-statistical-mechanics-i-statistical-mechanics-of-particles-fall-2013/video-lectures/) 290 | - [8.334 Statistical Mechanics II: Statistical Physics of Fields, MIT OCW](https://ocw.mit.edu/courses/physics/8-334-statistical-mechanics-ii-statistical-physics-of-fields-spring-2014/video-lectures/) 291 | - [Physics 112 - Introduction to Statistical and Thermal Physics, Spring 2012 - UC Berkeley](https://www.youtube.com/playlist?list=PL4986431EE5B122D1) 292 | 293 | ## Programming Languages 294 | ### C++ 295 | 296 | ### Java 297 | 298 | ### Python 299 | 300 | 301 | ## Data Structures && Algorithms 302 | ### Algorithmic complexity / Big-O / Asymptotic analysis 303 | #### Algorithmic complexity / Big-O / Asymptotic analysis 304 | 305 | - Nothing to implement 306 | - There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. 307 | - If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. 308 | - [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) 309 | - [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) 310 | - [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) 311 | - Skiena: 312 | - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 313 | - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) 314 | - [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) 315 | - [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) 316 | - [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) 317 | - [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) 318 | - [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) 319 | - [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) 320 | - [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) 321 | - TopCoder (includes recurrence relations and master theorem): 322 | - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) 323 | - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) 324 | - [Cheat sheet](http://bigocheatsheet.com/) 325 | 326 | ### Data Structures 327 | - #### Arrays 328 | - Implement an automatically resizing vector. 329 | - Description: 330 | - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) 331 | - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) 332 | - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) 333 | - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) 334 | - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) 335 | - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) 336 | - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) 337 | - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) 338 | - Implement a vector (mutable array with automatic resizing): 339 | - Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing. 340 | - new raw data array with allocated memory 341 | - can allocate int array under the hood, just not use its features 342 | - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 343 | - size() - number of items 344 | - capacity() - number of items it can hold 345 | - is_empty() 346 | - at(index) - returns item at given index, blows up if index out of bounds 347 | - push(item) 348 | - insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right 349 | - prepend(item) - can use insert above at index 0 350 | - pop() - remove from end, return value 351 | - delete(index) - delete item at index, shifting all trailing elements left 352 | - remove(item) - looks for value and removes index holding it (even if in multiple places) 353 | - find(item) - looks for value and returns first index with that value, -1 if not found 354 | - resize(new_capacity) // private function 355 | - when you reach capacity, resize to double the size 356 | - when popping an item, if size is 1/4 of capacity, resize to half 357 | - Time 358 | - O(1) to add/remove at end (amortized for allocations for more space), index, or update 359 | - O(n) to insert/remove elsewhere 360 | - Space 361 | - contiguous in memory, so proximity helps performance 362 | - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) 363 | 364 | - #### Linked Lists 365 | - Description: 366 | - [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) 367 | - [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) 368 | - [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) 369 | - [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) 370 | - not the whole video, just portions about Node struct and memory allocation. 371 | - Linked List vs Arrays: 372 | - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) 373 | - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) 374 | - [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) 375 | - Gotcha: you need pointer to pointer knowledge: 376 | (for when you pass a pointer to a function that may change the address where that pointer points) 377 | This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. 378 | - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) 379 | - implement (I did with tail pointer & without): 380 | - size() - returns number of data elements in list 381 | - empty() - bool returns true if empty 382 | - value_at(index) - returns the value of the nth item (starting at 0 for first) 383 | - push_front(value) - adds an item to the front of the list 384 | - pop_front() - remove front item and return its value 385 | - push_back(value) - adds an item at the end 386 | - pop_back() - removes end item and returns its value 387 | - front() - get value of front item 388 | - back() - get value of end item 389 | - insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index 390 | - erase(index) - removes node at given index 391 | - value_n_from_end(n) - returns the value of the node at nth position from the end of the list 392 | - reverse() - reverses the list 393 | - remove_value(value) - removes the first item in the list with this value 394 | - Doubly-linked List 395 | - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) 396 | - No need to implement 397 | 398 | - #### Stack 399 | - [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) 400 | - [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) 401 | - Will not implement. Implementing with array is trivial. 402 | 403 | - #### Queue 404 | - [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) 405 | - [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) 406 | - [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) 407 | - [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) 408 | - Implement using linked-list, with tail pointer: 409 | - enqueue(value) - adds value at position at tail 410 | - dequeue() - returns value and removes least recently added element (front) 411 | - empty() 412 | - Implement using fixed-sized array: 413 | - enqueue(value) - adds item at end of available storage 414 | - dequeue() - returns value and removes least recently added element 415 | - empty() 416 | - full() 417 | - Cost: 418 | - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) 419 | because you'd need the next to last element, causing a full traversal each dequeue 420 | - enqueue: O(1) (amortized, linked list and array [probing]) 421 | - dequeue: O(1) (linked list and array) 422 | - empty: O(1) (linked list and array) 423 | 424 | - #### Hash table 425 | - Videos: 426 | - [Hashing with Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) 427 | - [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 428 | - [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 429 | - [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) 430 | - [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) 431 | - [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) 432 | 433 | - Online Courses: 434 | - [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) 435 | - [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) 436 | - [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) 437 | - [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) 438 | - [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) 439 | - [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) 440 | - [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) 441 | - distributed hash tables: 442 | - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) 443 | - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) 444 | 445 | - implement with array using linear probing 446 | - hash(k, m) - m is size of hash table 447 | - add(key, value) - if key already exists, update value 448 | - exists(key) 449 | - get(key) 450 | - remove(key) 451 | 452 | ### More Knowledge 453 | - #### Binary search 454 | - [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) 455 | - [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) 456 | - [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) 457 | - Implement: 458 | - binary search (on sorted array of integers) 459 | - binary search using recursion 460 | 461 | - #### Bitwise operations 462 | - [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) 463 | - Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << 464 | - [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) 465 | - Good intro: 466 | [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) 467 | - [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) 468 | - [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) 469 | - [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) 470 | - [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) 471 | - [The Bit Twiddler](https://bits.stephan-brumme.com/) 472 | - [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) 473 | - 2s and 1s complement 474 | - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) 475 | - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) 476 | - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) 477 | - count set bits 478 | - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) 479 | - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) 480 | - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) 481 | - round to next power of 2: 482 | - [Round Up To Next Power Of Two](https://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) 483 | - swap values: 484 | - [Swap](https://bits.stephan-brumme.com/swap.html) 485 | - absolute value: 486 | - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) 487 | 488 | ### Trees 489 | - #### Trees - Notes & Background 490 | - [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) 491 | - [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) 492 | - basic tree construction 493 | - traversal 494 | - manipulation algorithms 495 | - [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) 496 | - BFS notes: 497 | - level order (BFS, using queue) 498 | - time complexity: O(n) 499 | - space complexity: best: O(1), worst: O(n/2)=O(n) 500 | - DFS notes: 501 | - time complexity: O(n) 502 | - space complexity: 503 | best: O(log n) - avg. height of tree 504 | worst: O(n) 505 | - inorder (DFS: left, self, right) 506 | - postorder (DFS: left, right, self) 507 | - preorder (DFS: self, left, right) 508 | 509 | - #### Binary search trees: BSTs 510 | - [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) 511 | - [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) 512 | - starts with symbol table and goes through BST applications 513 | - [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) 514 | - [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) 515 | - C/C++: 516 | - [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) 517 | - [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) 518 | - [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 519 | - [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) 520 | - [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) 521 | - [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 522 | - [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 523 | - [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 524 | - [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) 525 | - [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 526 | - Implement: 527 | - insert // insert value into tree 528 | - get_node_count // get count of values stored 529 | - print_values // prints the values in the tree, from min to max 530 | - delete_tree 531 | - is_in_tree // returns true if given value exists in the tree 532 | - get_height // returns the height in nodes (single node's height is 1) 533 | - get_min // returns the minimum value stored in the tree 534 | - get_max // returns the maximum value stored in the tree 535 | - is_binary_search_tree 536 | - delete_value 537 | - get_successor // returns next-highest value in tree after given value, -1 if none 538 | 539 | - #### Heap / Priority Queue / Binary Heap 540 | - visualized as a tree, but is usually linear in storage (array, linked list) 541 | - [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) 542 | - [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) 543 | - [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) 544 | - [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) 545 | - [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) 546 | - [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) 547 | - [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) 548 | - [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) 549 | - [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) 550 | - [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) 551 | - [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) 552 | - [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 553 | - [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) 554 | - [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) 555 | - Implement a max-heap: 556 | - insert 557 | - sift_up - needed for insert 558 | - get_max - returns the max item, without removing it 559 | - get_size() - return number of elements stored 560 | - is_empty() - returns true if heap contains no elements 561 | - extract_max - returns the max item, removing it 562 | - sift_down - needed for extract_max 563 | - remove(i) - removes item at index x 564 | - heapify - create a heap from an array of elements, needed for heap_sort 565 | - heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap 566 | - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). 567 | 568 | ### Sorting 569 | - Notes: 570 | - Implement sorts & know best case/worst case, average complexity of each: 571 | - no bubble sort - it's terrible - O(n^2), except when n <= 16 572 | - stability in sorting algorithms ("Is Quicksort stable?") 573 | - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) 574 | - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) 575 | - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) 576 | - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) 577 | - Which algorithms can be used on linked lists? Which on arrays? Which on both? 578 | - I wouldn't recommend sorting a linked list, but merge sort is doable. 579 | - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) 580 | 581 | - For heapsort, see Heap data structure above. Heap sort is great, but not stable. 582 | 583 | - [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) 584 | - [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) 585 | - [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) 586 | - [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) 587 | - [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) 588 | - [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) 589 | 590 | - [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) 591 | - [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) 592 | - [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) 593 | - [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) 594 | - [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) 595 | 596 | - UC Berkeley: 597 | - [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) 598 | - [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) 599 | - [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) 600 | - [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) 601 | 602 | - [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) 603 | - [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) 604 | - [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 605 | - [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) 606 | - [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) 607 | - [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) 608 | - [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) 609 | 610 | - Merge sort code: 611 | - [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) 612 | - [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) 613 | - [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) 614 | - Quick sort code: 615 | - [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) 616 | - [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) 617 | - [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) 618 | 619 | - Implement: 620 | - Mergesort: O(n log n) average and worst case 621 | - Quicksort O(n log n) average case 622 | - Selection sort and insertion sort are both O(n^2) average and worst case 623 | - For heapsort, see Heap data structure above. 624 | 625 | - Not required, but I recommended them: 626 | - [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) 627 | - [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) 628 | - [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) 629 | - [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) 630 | - [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) 631 | - [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) 632 | - [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) 633 | - [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) 634 | - [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) 635 | - [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 636 | - [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 637 | - [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) 638 | 639 | As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). 640 | If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) 641 | 642 | ### Graphs 643 | Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. 644 | 645 | - Notes: 646 | - There are 4 basic ways to represent a graph in memory: 647 | - objects and pointers 648 | - adjacency matrix 649 | - adjacency list 650 | - adjacency map 651 | - Familiarize yourself with each representation and its pros & cons 652 | - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code 653 | - When asked a question, look for a graph-based solution first, then move on if none. 654 | 655 | - MIT(videos): 656 | - [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) 657 | - [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) 658 | 659 | - Skiena Lectures - great intro: 660 | - [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) 661 | - [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) 662 | - [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) 663 | - [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 664 | - [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 665 | - [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 666 | 667 | - Graphs (review and more): 668 | 669 | - [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 670 | - [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 671 | - [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) 672 | - [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) 673 | - [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 674 | - [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) 675 | - [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) 676 | - [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) 677 | - ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ 678 | - [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) 679 | - [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 680 | - [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) 681 | 682 | - Full Coursera Course: 683 | - [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) 684 | 685 | - I'll implement: 686 | - DFS with adjacency list (recursive) 687 | - DFS with adjacency list (iterative with stack) 688 | - DFS with adjacency matrix (recursive) 689 | - DFS with adjacency matrix (iterative with stack) 690 | - BFS with adjacency list 691 | - BFS with adjacency matrix 692 | - single-source shortest path (Dijkstra) 693 | - minimum spanning tree 694 | - DFS-based algorithms (see Aduni videos above): 695 | - check for cycle (needed for topological sort, since we'll check for cycle before starting) 696 | - topological sort 697 | - count connected components in a graph 698 | - list strongly connected components 699 | - check for bipartite graph 700 | 701 | ### Even More Knowledge 702 | - #### Recursion 703 | - Stanford lectures on recursion & backtracking: 704 | - [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) 705 | - [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) 706 | - [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) 707 | - [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) 708 | - when it is appropriate to use it 709 | - how is tail recursion better than not? 710 | - [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) 711 | - [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) 712 | 713 | - #### Dynamic Programming 714 | - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. 715 | - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. 716 | - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. 717 | - Videos: 718 | - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see 719 | - [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) 720 | - [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) 721 | - [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) 722 | - [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) 723 | - [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) 724 | - [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 725 | - [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) 726 | - List of individual DP problems (each is short): 727 | [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) 728 | - Yale Lecture notes: 729 | - [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) 730 | - Coursera: 731 | - [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) 732 | - [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) 733 | - [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) 734 | - [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) 735 | - [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) 736 | - [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) 737 | - [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) 738 | 739 | - #### Object-Oriented Programming 740 | - [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) 741 | - Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): 742 | - Can skip this if you have a great grasp of OO and OO design practices. 743 | - [OOSE: Software Dev Using UML and Java (video)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) 744 | - SOLID OOP Principles: 745 | - [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) 746 | - [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) 747 | - S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) 748 | - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) 749 | - O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) 750 | - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) 751 | - L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) 752 | - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) 753 | - I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use 754 | - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) 755 | - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) 756 | - D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. 757 | - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) 758 | - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) 759 | 760 | - #### Design patterns 761 | - [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) 762 | - Learn these patterns: 763 | - strategy 764 | - singleton 765 | - adapter 766 | - prototype 767 | - decorator 768 | - visitor 769 | - factory, abstract factory 770 | - facade 771 | - observer 772 | - proxy 773 | - delegate 774 | - command 775 | - state 776 | - memento 777 | - iterator 778 | - composite 779 | - flyweight 780 | - [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) 781 | - [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) 782 | - [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) 783 | - [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) 784 | - [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) 785 | - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. 786 | - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) 787 | - [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) 788 | 789 | 790 | - #### Combinatorics (n choose k) & Probability 791 | - [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) 792 | - [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) 793 | - [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) 794 | - Khan Academy: 795 | - Course layout: 796 | - [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) 797 | - Just the videos - 41 (each are simple and each are short): 798 | - [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) 799 | 800 | - #### NP, NP-Complete and Approximation Algorithms 801 | - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, 802 | and be able to recognize them when an interviewer asks you them in disguise. 803 | - Know what NP-complete means. 804 | - [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) 805 | - Simonson: 806 | - [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) 807 | - [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 808 | - [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 809 | - [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) 810 | - Skiena: 811 | - [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) 812 | - [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 813 | - [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 814 | - [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) 815 | - [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) 816 | - [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 817 | - Peter Norvig discusses near-optimal solutions to traveling salesman problem: 818 | - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) 819 | - Pages 1048 - 1140 in CLRS if you have it. 820 | 821 | - #### Caches 822 | - LRU cache: 823 | - [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) 824 | - [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) 825 | - [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) 826 | - CPU cache: 827 | - [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) 828 | - [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) 829 | 830 | - #### Processes and Threads 831 | - Computer Science 162 - Operating Systems (25 videos): 832 | - for processes and threads see videos 1-11 833 | - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) 834 | - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) 835 | - Covers: 836 | - Processes, Threads, Concurrency issues 837 | - difference between processes and threads 838 | - processes 839 | - threads 840 | - locks 841 | - mutexes 842 | - semaphores 843 | - monitors 844 | - how they work 845 | - deadlock 846 | - livelock 847 | - CPU activity, interrupts, context switching 848 | - Modern concurrency constructs with multicore processors 849 | - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) 850 | - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) 851 | - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) 852 | - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) 853 | - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) 854 | - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. 855 | - Context switching 856 | - How context switching is initiated by the operating system and underlying hardware 857 | - [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) 858 | - concurrency in Python (videos): 859 | - [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) 860 | - [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) 861 | - [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) 862 | - [reference](http://www.dabeaz.com/GIL) 863 | - [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) 864 | - [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) 865 | - [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) 866 | 867 | - #### Testing 868 | - To cover: 869 | - how unit testing works 870 | - what are mock objects 871 | - what is integration testing 872 | - what is dependency injection 873 | - [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) 874 | - [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) 875 | - [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) 876 | - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) 877 | - [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) 878 | - [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) 879 | - [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) 880 | - [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) 881 | - Dependency injection: 882 | - [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) 883 | - [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) 884 | - [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) 885 | 886 | - #### Scheduling 887 | - in an OS, how it works 888 | - can be gleaned from Operating System videos 889 | 890 | - #### String searching & manipulations 891 | - [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) 892 | - [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) 893 | - [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) 894 | - [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) 895 | - [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) 896 | - [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) 897 | - [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) 898 | - [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) 899 | 900 | If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) 901 | 902 | - #### Tries 903 | - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits 904 | to track the path. 905 | - I read through code, but will not implement. 906 | - [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) 907 | - [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) 908 | - [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) 909 | - [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) 910 | - [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) 911 | - Short course videos: 912 | - [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) 913 | - [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) 914 | - [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) 915 | - [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) 916 | - [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) 917 | - [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) 918 | - [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) 919 | 920 | - #### Floating Point Numbers 921 | - simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) 922 | - 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) 923 | 924 | - #### Unicode 925 | - [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) 926 | - [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) 927 | 928 | - #### Endianness 929 | - [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) 930 | - [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) 931 | - [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) 932 | - Very technical talk for kernel devs. Don't worry if most is over your head. 933 | - The first half is enough. 934 | 935 | - #### Networking 936 | - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** 937 | - otherwise, this is just good to know 938 | - [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) 939 | - [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) 940 | - [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) 941 | - [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) 942 | - [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) 943 | - [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) 944 | - [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) 945 | - [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) 946 | - [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) 947 | - [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) 948 | - Sockets: 949 | - [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) 950 | - [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) 951 | 952 | ## Systems Design 953 | 954 | 955 | ## Coding exercises/challenges 956 | - [How to Find a Solution](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) 957 | - [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) 958 | 959 | Coding Interview Question Videos: 960 | - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) 961 | - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) 962 | 963 | Challenge sites: 964 | - [LeetCode](https://leetcode.com/) 965 | - [TopCoder](https://www.topcoder.com/) 966 | - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) 967 | - [Codewars](http://www.codewars.com) 968 | - [HackerEarth](https://www.hackerearth.com/) 969 | - [HackerRank](https://www.hackerrank.com/) 970 | - [Codility](https://codility.com/programmers/) 971 | - [InterviewCake](https://www.interviewcake.com/) 972 | - [Geeks for Geeks](http://www.geeksforgeeks.org/) 973 | - [InterviewBit](https://www.interviewbit.com/invite/icjf) 974 | - [Sphere Online Judge (spoj)](http://www.spoj.com/) 975 | - [Codechef](https://www.codechef.com/) 976 | 977 | Challenge repos: 978 | - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) 979 | 980 | Mock Interviews: 981 | - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) 982 | - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) 983 | - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) 984 | --------------------------------------------------------------------------------