plan.txt 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. ##########################################################################################
  2. ## How to read this
  3. ##########################################################################################
  4. Everything below is an outline, and you should tackle the items in order from top to bottom.
  5. I put an asterisk * at the beginning of a line when I'm done with it. When all sub-items are done,
  6. I put a * at the top level, meaning the entire block is done. Sorry you have to remove all my *
  7. to use this the same way. If you search/replace, there are a couple of places to look out for.
  8. ##########################################################################################
  9. ## Interview Prep:
  10. ##########################################################################################
  11. * - Videos:
  12. * - https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be
  13. * - https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be
  14. * - https://www.youtube.com/watch?v=8npJLXkcmu8
  15. * - Articles:
  16. * - http://www.google.com/about/careers/lifeatgoogle/hiringprocess/
  17. * - http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
  18. - all the things he mentions that you need to know are listed below
  19. * - (very dated) http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html
  20. * - http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions
  21. Additional (not suggested by Google but I added):
  22. * - https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4
  23. * - https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx
  24. * - https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1
  25. * - http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture
  26. * - http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/
  27. - https://www.youtube.com/watch?v=rEJzOhC5ZtQ
  28. - https://www.youtube.com/watch?v=aClxtDcdpsQ
  29. - https://www.youtube.com/watch?v=2cf9xo1S134
  30. - https://www.youtube.com/watch?v=YJZCUhxNCv8
  31. ##########################################################################################
  32. ## Knowledge:
  33. ##########################################################################################
  34. You need to know C, C++, or Java to do the coding part of the interview.
  35. They will sometimes make an exception and let you use Python or some other language, but the language
  36. must be mainstream and allow you write your code low-level enough to solve the problems.
  37. You'll see some C, C++ learning included below.
  38. There are a few books involved, see the bottom
  39. * - how computers process a program:
  40. * - https://www.youtube.com/watch?v=42KTvGYQYnA
  41. * - https://www.youtube.com/watch?v=Mv2XQgpbTNE
  42. * - Computer Arch Intro:
  43. (first video only - interesting but not required) https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=1
  44. * - Parity & Hamming Code:
  45. Parity:
  46. https://www.youtube.com/watch?v=DdMcAUlxh1M
  47. Hamming Code:
  48. https://www.youtube.com/watch?v=1A_NcXxdoCc
  49. https://www.youtube.com/watch?v=JAMLuxdHH8o
  50. Error Checking:
  51. https://www.youtube.com/watch?v=wbH2VxzmoZk
  52. * - C
  53. * - K&R C book (ANSI C)
  54. - C++
  55. * - basics
  56. * - pointers
  57. * - functions
  58. * - references
  59. * - templates
  60. * - compilation
  61. * - scope & linkage
  62. * - namespaces
  63. * - OOP
  64. * - STL
  65. * - functors: http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html
  66. * - C++ at Google: https://www.youtube.com/watch?v=NOCElcMcFik
  67. * - Google C++ Style Guide: https://google.github.io/styleguide/cppguide.html
  68. - Google uses clang-format (Google setting)
  69. - C++ Core Guidelines: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
  70. * - Efficiency with Algorithms, Performance with Data Structures: https://youtu.be/fHNmRkzxHWs
  71. - review of C++ concepts: https://www.youtube.com/watch?v=Rub-JsjMhWY
  72. * - compilers:
  73. * - https://class.coursera.org/compilers-004/lecture/1
  74. * - https://class.coursera.org/compilers-004/lecture/2
  75. * - C++: https://www.youtube.com/watch?v=twodd1KFfGk
  76. * - Understanding Compiler Optimization (C++): https://www.youtube.com/watch?v=FnGCDLhaxKU
  77. ----------------------------------------------------------------
  78. The Gauntlet:
  79. Each day I take one subject from the list below, watch videos about that subject, and write an implementation in:
  80. C - using structs and functions that take a struct * and something else as args.
  81. C++ - without using built-in types
  82. C++ - using built-in types, like STL's std::list for a linked list
  83. Python - without using built-in types
  84. and write tests to ensure I'm doing it right, keep it simple with just assert() statements
  85. Each subject does not require a whole day to be able to understand it fully.
  86. Why code in all of these?
  87. Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember)
  88. Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python))
  89. Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production)
  90. ----------------------------------------------------------------
  91. arrays
  92. No need to spend a whole day on this.
  93. * - Description:
  94. - https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
  95. - https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays
  96. - Implement:
  97. - Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing.
  98. * - new raw data array with allocated memory (can allocate int array under the hood, just not use its features)
  99. * - size() - number of items
  100. * - capacity() - number of items it can hold
  101. * - is_empty()
  102. - at(index) - returns item at given index
  103. - cannot append or move if full - will not tackle allocating and copying to new memory
  104. - append(item)
  105. - insert(index, item)
  106. - prepend(item) - can use insert above at index 0
  107. - delete(index)
  108. - remove(item)
  109. - find(item)
  110. - Time
  111. - O(1) to add/remove at end (amortized for allocations for more space), index, or update
  112. - O(n) to insert/remove elsewhere
  113. - Space
  114. - contiguous in memory, so proximity helps performance
  115. - space needed = size of object * number of items to store
  116. linked lists
  117. - singly-linked
  118. * - Description: https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
  119. * - Lynda.com:
  120. - https://www.lynda.com/Developer-Programming-Foundations-tutorials/Introduction-lists/149042/177115-4.html
  121. - https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-basic-list-implementations/149042/177116-4.html
  122. - https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-singly-doubly-linked-lists/149042/177117-4.html
  123. - https://www.lynda.com/Developer-Programming-Foundations-tutorials/List-support-across-languages/149042/177118-4.html
  124. * - C Code: https://www.youtube.com/watch?v=QN6FPiD0Gzo
  125. - not the whole video, just portions about Node struct and memory allocation.
  126. * - why you should avoid linked lists:
  127. - https://www.youtube.com/watch?v=YQs6IC-vgmo
  128. - implement (with tail pointer), item is the data item in a node:
  129. - push_front
  130. - get_front
  131. - pop_front
  132. - push_back
  133. - get_back
  134. - pop_back
  135. - insert_before(node, item)
  136. - insert_after(node, item)
  137. - size()
  138. - is_empty()
  139. - find(item) - assume each item is unique
  140. - remove(item) - assume each item is unique
  141. - doubly-linked list
  142. - Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
  143. - reverse a singly-linked list
  144. stacks
  145. - see: https://class.coursera.org/algs4partI-010/lecture
  146. - https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks
  147. queues
  148. - see: https://class.coursera.org/algs4partI-010/lecture
  149. - https://www.coursera.org/learn/data-structures/lecture/EShpq/queues
  150. Vectors
  151. - Vector calculus ?
  152. heaps
  153. - https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
  154. - min heap
  155. - max heap
  156. Priority Queue
  157. - https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction
  158. - see: https://class.coursera.org/algs4partI-010/lecture
  159. - https://class.coursera.org/algs4partI-010/lecture/39
  160. - https://en.wikipedia.org/wiki/Priority_queue
  161. Disjoint Sets:
  162. - https://www.coursera.org/learn/data-structures/lecture/JssSY/overview
  163. - https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees
  164. hashtables
  165. - https://www.youtube.com/watch?v=C4Kc8xzcA68
  166. - https://class.coursera.org/algs4partI-010/lecture/52
  167. - https://www.coursera.org/learn/data-structures/home/week/3
  168. - see: https://class.coursera.org/algs4partI-010/lecture
  169. - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables
  170. - test: implement with only arrays
  171. tries
  172. - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries
  173. Circular buffer/FIFO:
  174. - https://en.wikipedia.org/wiki/Circular_buffer
  175. Bit operations
  176. - count on bits
  177. - https://youtu.be/Hzuzo9NJrlc
  178. - max run of off bits
  179. - bit shifting
  180. binary search
  181. Sorting
  182. - no bubble sort - it's terrible
  183. - at least one n*log(n) sorting algorithm, preferably two (say, quicksort and merge sort)
  184. - Which algorithms can be used on lists? Which on arrays? Which on both? Is Quicksort stable?
  185. - algos:
  186. - mergesort
  187. - quicksort
  188. Caches
  189. - LRU cache
  190. Trees
  191. - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees
  192. - see: https://class.coursera.org/algs4partI-010/lecture
  193. - basic tree construction
  194. - traversal
  195. - manipulation algorithms
  196. - binary search trees BSTs
  197. - https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction
  198. - applications:
  199. - https://class.coursera.org/algs4partI-010/lecture/57
  200. - n-ary trees
  201. - trie-trees
  202. - at least one type of balanced binary tree (and know how it's implemented):
  203. - red/black tree
  204. - https://class.coursera.org/algs4partI-010/lecture/50
  205. - splay trees
  206. - https://www.coursera.org/learn/data-structures/lecture/O9nZ6/splay-trees
  207. - AVL trees
  208. - https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees
  209. - https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation
  210. - https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge
  211. - 2-3 Search Trees
  212. - https://class.coursera.org/algs4partI-010/lecture/49
  213. - B-Trees:
  214. - https://class.coursera.org/algs4partI-010/lecture/51
  215. - BFS (breadth-first search)
  216. - DFS (depth-first search)
  217. - know the difference between
  218. - inorder
  219. - postorder
  220. - preorder
  221. Graphs:
  222. There are three basic ways to represent a graph in memory:
  223. - objects and pointers
  224. - matrix
  225. - adjacency list
  226. - familiarize yourself with each representation and its pros & cons
  227. - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code
  228. - If you get a chance, try to study up on fancier algorithms:
  229. - Dijkstra
  230. - A*
  231. - when asked a question, look for a graph-based solution first, then move on if none.
  232. Other data structures:
  233. - You should study up on as many other data structures and algorithms as possible
  234. - You should especially know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise.
  235. - Know what NP-complete means.
  236. Recursion
  237. - when it is appropriate to use it
  238. Algorithmic complexity
  239. open-ended problems
  240. - manipulate strings
  241. - manipulate patterns
  242. design patterns:
  243. - strategy
  244. - singleton
  245. - adapter
  246. - prototype
  247. - decorator
  248. - visitor
  249. - factory
  250. Combinatorics (n choose k)
  251. Probability
  252. Dynamic Programming
  253. Processes, Threads, Concurrency issues
  254. - difference: https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread
  255. - threads: https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M
  256. - stopped here: https://www.youtube.com/watch?v=_N0B5ua7oN8&list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M&index=4
  257. - locks
  258. - mutexes
  259. - semaphores
  260. - monitors
  261. - how they work
  262. - deadlock
  263. - livelock
  264. Process resource needs
  265. Thread resource needs
  266. Modern concurrency constructs with multicore processors
  267. Context switching
  268. - How context switching is initiated by the operating system and underlying hardware
  269. Scheduling
  270. Weighted random sampling
  271. Implement system routines
  272. Distill large data sets to single values
  273. Transform one data set to another
  274. Handling obscenely large amounts of data
  275. System design:
  276. - features sets
  277. - interfaces
  278. - class hierarchies
  279. - designing a system under certain constraints
  280. - simplicity and robustness
  281. - tradeoffs
  282. Performance analysis and optimization
  283. Familiarize yourself with unix-based souped-up code editor: emacs & vi(m)
  284. vi(m):
  285. - https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr
  286. - set of 4:
  287. - https://www.youtube.com/watch?v=SI8TeVMX8pk
  288. - https://www.youtube.com/watch?v=F3OO7ZIOaJE
  289. - https://www.youtube.com/watch?v=ZYEccA_nMaI
  290. - https://www.youtube.com/watch?v=1lYD5gwgZIA
  291. emacs:
  292. - https://www.youtube.com/watch?v=hbmV1bnQ-i0
  293. - set of 3:
  294. - https://www.youtube.com/watch?v=ujODL7MD04Q
  295. - https://www.youtube.com/watch?v=XWpsRupJ4II
  296. - https://www.youtube.com/watch?v=paSgzPso-yc
  297. - https://www.youtube.com/watch?v=JWD1Fpdd4Pc
  298. Testing
  299. -------------------------------------------------------------------
  300. Extras that can't hurt:
  301. Information theory:
  302. - Markov processes:
  303. - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation
  304. - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation
  305. - https://www.khanacademy.org/computing/computer-science/informationtheory/moderninfotheory/v/symbol-rate-information-theory
  306. - includes Markov chain
  307. Bloom Filter
  308. - https://www.youtube.com/watch?v=-SuTGoFYjZs
  309. - http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/
  310. Fast Fourier Transform
  311. - http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/
  312. C (for basis of C)
  313. C++ (for interview answers)
  314. Machine Learning:
  315. - http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/
  316. - review videos
  317. - intro in Goodreader on iPad
  318. - http://www.dataschool.io/
  319. ---
  320. Be thinking of for when the interview comes:
  321. Think of about 20 interview questions you'll get, along the lines of the items below:
  322. have 2-3 answers for each
  323. Have a story, not just data, about something you accomplished
  324. Why do you want this job?
  325. What's a tough problem you've solved?
  326. Biggest challenges faced
  327. Best/worst designs seen
  328. Ideas for improving an existing Google product
  329. How do you work best, as an individual and as part of a team?
  330. Which of your skills or experiences would be assets in the role and why?
  331. ##########################################################################################
  332. ## Videos:
  333. ##########################################################################################
  334. 6.042: Math for CS (25 videos):
  335. - https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B
  336. 6.006: Intro to Algorithms (47 videos):
  337. - https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False
  338. 6.033: Computer System Engineering (22 videos):
  339. - https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484
  340. 6.046: Design and Analysis of Algorithms (34 videos):
  341. - https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
  342. 6.851: Advanced Data Structures (22 videos):
  343. - https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
  344. Stanford: Programming Paradigms (17 videos)
  345. - https://www.youtube.com/watch?v=jTSvthW34GU&list=PLC0B8B318B7394B6F&nohtml5=False
  346. ##########################################################################################
  347. ## Articles:
  348. ##########################################################################################
  349. - https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/
  350. - http://highscalability.com/blog/2016/4/4/how-to-remove-duplicates-in-a-large-dataset-reducing-memory.html
  351. - http://highscalability.com/blog/2016/3/23/what-does-etsys-architecture-look-like-today.html
  352. - http://highscalability.com/blog/2016/3/21/to-compress-or-not-to-compress-that-was-ubers-question.html
  353. - http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html
  354. - http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html
  355. - http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html
  356. - http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html
  357. - http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html
  358. - http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html
  359. - http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html
  360. - http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html
  361. - http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html
  362. - http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html
  363. - http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html
  364. - http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html
  365. ##########################################################################################
  366. ## Papers:
  367. ##########################################################################################
  368. Computing Weak Consistency in Polynomial Time
  369. - http://delivery.acm.org/10.1145/2770000/2767407/p395-golab.pdf?ip=104.200.154.80&id=2767407&acc=OA&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E5945DC2EABF3343C&CFID=769944592&CFTOKEN=71654301&__acm__=1460506755_42d28e3f230cc8e733e2e9ed1ebe3605
  370. How Developers Search for Code: A Case Study
  371. - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf
  372. Borg, Omega, and Kubernetes
  373. - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf
  374. Continuous Pipelines at Google
  375. - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf
  376. AddressSanitizer: A Fast Address Sanity Checker
  377. - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf
  378. ##########################################################################################
  379. ## Books:
  380. ##########################################################################################
  381. Mentioned in Coaching:
  382. The Algorithm Design Manual
  383. http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202
  384. Algorithms and Programming: Problems and Solutions:
  385. http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474
  386. Read first:
  387. Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition:
  388. http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html
  389. Read second:
  390. Cracking the Coding Interview, Fourth Edition:
  391. - http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/
  392. Additional (not suggested by Google but I added):
  393. * - C Programming Language, Vol 2
  394. * - C++ Primer Plus, 6th Edition
  395. Programming Pearls:
  396. - http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880
  397. If you see people reference "The Google Resume", it was replaced by "Cracking the Coding Interview".
  398. Clean Code
  399. Code Complete
  400. Introduction to Algorithms
  401. ##########################################################################################
  402. ## Coding exercises/challenges:
  403. ##########################################################################################
  404. - https://courses.csail.mit.edu/iap/interview/materials.php
  405. Recommended: LeetCode: https://leetcode.com/
  406. TopCoder: https://www.topcoder.com/
  407. More:
  408. HackerRank: https://www.hackerrank.com/
  409. Codility: https://codility.com/programmers/
  410. Project Euler: https://projecteuler.net/index.php?section=problems
  411. InterviewCake: https://www.interviewcake.com/
  412. InterviewBit: https://www.interviewbit.com/invite/icjf
  413. ##########################################################################################
  414. ## Code References:
  415. ##########################################################################################
  416. For review questions in C book:
  417. https://github.com/lekkas/c-algorithms
  418. ##########################################################################################
  419. ## Once you've got the job (this is mainly for me):
  420. ##########################################################################################
  421. C++ Talks at CPPCon:
  422. - https://www.youtube.com/watch?v=hEx5DNLWGgA&index=2&list=PLHTh1InhhwT75gykhs7pqcR_uSiG601oh
  423. Compilers:
  424. - https://class.coursera.org/compilers-004/lecture
  425. Computer and processor architecture:
  426. - https://class.coursera.org/comparch-003/lecture
  427. Long series of C++ videos:
  428. - https://www.youtube.com/playlist?list=PLfVsf4Bjg79Cu5MYkyJ-u4SyQmMhFeC1C
  429. ##########################################################################################
  430. ## Done. ##
  431. ##########################################################################################