Hi /sci/ !!!
I want to intern to $BIGCOMPANY but haven't reached the Algorithms course in my university yet, so I'm taking this course in Algorithms and Data Structures.
The approach is practical: they have coded a small text editor and want students to implement extra features.
So basically they're going to explain you stuff like tree and tries and how they are used to implement, say, word completion, and then you can complete the simple text editor with such features.
I like this approach /sci/, what is your opinion?
Can you suggest me some more courses/books on interesting subjects which follow a similar approach ?
Thanks /sci/entistis
>>7795878
For reference: https://www.coursera.org/learn/data-structures-optimizing-performance
>>7795878
Can't you implement them without the extra hand holding?
For Data Structure:
>Data Structures and Algorithms in C++ by Drozdek
For Algorithms with implementation details:
>Algorithms in C++ Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms by Sedgewick
>>7795999
I learn way better by doing actual coding that by mere theoretical study.
My approach would be to take this mooc now and study all of the details of various algorithms and data structures later when i reach the algorithms and data structure course at my university.
>>7796743
>coding without understanding what's going on
You're the cancer killing the field
>>7796743
You will do almost no programming in this course. It is very near worthless. If you want to play with the big boys, look into the pair of courses titled "Design and Analysis of Algorithms" done by Tim Roughgarden at Stanford. This would be a much better use of your time. You will get both the theory and be expected to code everything you do from scratch.
>>7796743
>I learn way better by doing actual coding that by mere theoretical study.
The one phrase that ruined academia forever
>First universities: We will teach only mathematics, philosophy and art. Scientists will do math and then specialize in their field. Soft 'sciencists' will study philosophy and then specialize. Artists of all stripes will learn art and then specialize.
WHOOPS! TURNS OUT PEOPLE ARE TOO RETARDED FOR THIS
>*sweating* Okay, now we don't have such a simple organization but that is fine. Now we have expanded all faculties. For example, because people were too retarded to apply their math we will now teach math, physics, chemistry and biology so people won't have to learn to apply shit on their own. Now they will be pleased. People who want to be engineers will go through math and/or physics and then specialize.
WHOOPS! ENGINEERS TOO RETARDED!
>*tired as fuck of fixing schedules* Okay, people are too stupid to apply math and physics on their own. Behold! The engineering faculty! Here we will teach the retards how to apply shit on their own so that they don't have to put even minimal effort in understanding anything. T-this will please them, right?
--Period when science starts advancing really fast
>Worry not. People who can't to do computer science will just study mathematics and then specialize. Of course.
>Worry not, people who want to get into antrophysics will learn physics and specialize.
>Worry not, people who want to do aerospace engineering will just do mechanical engineering and then specialize
>Worry not, people who want to do statistics will just do mathematics and then specialize
>Worry not, people who want to do robotics will just learn electrical engineering and then specialize.
>Worry not, people who want to do computer engineering will just learn electrical engineering and then specialize
NO THEY CAN'T BECAUSE THEY ARE RETARDED
>Now every uni has 200 faculties with 20 different majors in
>>7795878
Word completion is going to involve prob stats. I'm genuinely curious wether or not it goes into things like n-grams, decision trees, or embedding models.
>>7795878
Ok. So looking more into that, I've decided that your curriculum is on the mid to low level of basic.
Here is an extensive list of suggested algorithms I would look into. Each delimited with what category of algo they belong to. If google ever foobars you. You'll get a handful of the more complicated ones in this list.
String Algorithms
>KnuthMorrisPratt algorithm
>Aho Corasick algorithms
>SuffixArrays O(n)
>SuffixTrees O(n)
>SuffixAutomata O(n)
>DictionaryOfBasicFactors O(nlogn)
>Manachar’s algorithm O(n)
>Multi dimensional pattern matching.
>Searching and preprocessing Regular Expressions consisting of ‘?’ , ‘*’.
Basic Graphs [beginner]
>BreadthFirstSearch.
>DepthFirstSearch
>BiconnectedComponents, Finding articulation points and bridges].
>Dijkstra algorithm
> Floyd Warshall algorithm
> MinimumSpanningTree
> Flood fill algorithm
>Topological sort
> Bellman Ford algorithm.
> EulerTour/Path.
Flow networks/matching etc etc.
>Maximum flow using Ford Fulkerson Method.
>Maximum flow using Dinics Algorithm.
>MinimumCostMaximumFlow
>Maximum weighted Bipartite Matching(KuhnMunkrasalgorithm/HungarianMethod)
>Stoer Wagner mincut algorithm.
>Hopcroft Karp bipartite matching algorithm.
>Maximum matching in general graph(blossomshrinking)
>Gomory Hu Trees.
>Chinese Postman Problem.
Basic Comp Geometry
>Graham Scan
>Online Construction of convex hull
>Bently Otman algorithm
>Rotating Calipers technique
>Line sweep/Plane sweep
>Area of union of circles
>Delayunay Triangulation of n points
>Voronoi Diagrams of n points
>Point in a Polygon problem
Dynamic Programming Approaches
>State space reduction
>Solving in reverse
>Counting/Optimizing arrangements
>DP on probability spaces
>DP on trees
>Symmetric characterization of DP state
Greedy
>Just read through Cormen's section on this.
Number Theory(Mix of algos and concepts you should understand)
>Modulus arithmetic
>Fermats theorem
>>7796975
>> Continued...
Number theory [VERY SIMPLE]
>Euler totient theorem
>Chinese remainder theorem
>Primality tests
>Prime generation(Seive of Erasthetes)
>GCD (Euclidean method)
>LogarithmicExponentiation
>IntegerFactorization(PollardRhofactorization)
>Read 2.3 from Number Theory SYYan
>Read 1.9 from Cormen
Game theory
>Sprague grundy theorem,
>Grundy numbers
>Hackenbush
Linear Algebra
>Computing determinant
>Matrix multiplication (how to determine order of operations using DP. This is explained in Cormen)
>Using Matrix exponentiation to solve recurrences
>Eigen Values and decomposition
>Latent semantic Indexing(Bonus)
>Roots of a polynomial
>Lagrange Interpolation
>Permutation Cycles
Group theory
>Bernside Lemma
>Polias theorem
>Generating functions
Basic Data Structures[what you go over in your class]
>Arrays/Stacks/Quees
>Singly/Doubly Linked List
>Hash Tables
>Circular Linked Lists
>Binary/N-ary trees
>Heaps
>Tries
>Disjoint data structures
Misc
>Interval Trees
>Fibonacci Heaps
>Fenwick Binary indexed heaps
>Range Minimum Query
>AVL trees
>Splay trees
>B / B+ trees
>Skip list
>Red Black trees.
It is overwhelming. In CS undergrad most people go through about a 1/5 of this list.