Algorithms are the heart of computer science, and the subject has countless practical applications as well as intellectual depth.
Algorithms Dynamic Programming Greedy Algorithm Divide And Conquer Algorithms Randomized Algorithm Sorting Algorithm Graphs Data Structure Hash Table Spanning Tree Np-Completeness
Accessible for free. Completion certificates are offered.
Affiliate disclosure: Please use the blue and green buttons to visit Coursera if you plan on enrolling in a course. Commissions Reddsera receives from using these links will keep this site online and ad-free. Reddsera will not receive commissions if you only use course links found in the below Reddit discussions.
This specialization includes these 4 courses.
Reddit Posts and Comments
1 posts • 189 mentions • top 105 shown below
22 points • rjray
Recommendation for new Clojure learners: the Coursera Algorithms Specialization
I just finished the 4-class (16 weeks total) Algorithms Specialzation from Coursera. Prior to this, the only real Clojure I had written was in solving Project Euler problems. I felt like this would give me something more substantive to learn, and I was right (more so than I expected).
I found it very challenging, figuring out how to implement algorithms like QuickSort or Dijkstra's shortest path in a functional paradigm with immutable data structures. I have a B.Sci. in software engineering, but I've been out of school for nearly 30 years. I assumed (!) that this would be mostly a review of the algorithms study I had done in college. It turned out to be much more in-depth than what I had done so long ago. So not only did I get to push myself into more substantive Clojure development, I also learned a lot of material that was new to me. As a bonus, there were several of the programming assignments that ended up being flat-out EASY to implement in Clojure, given that maps, sets, etc. are all first-class types. And most of the Clojure solutions were very short and compact.
Overall, I feel like I got a lot out of this series of classes, and really extended my grasp of FP in general and Clojure in particular.
(Note: the classes do require a monthly subscription fee. I am not affiliated with Coursera in any way or form, and I do not benefit from anyone subscribing to these classes.)
13 points • 14ashray
Try this course by Stanford University https://www.coursera.org/specializations/algorithms it's worth it. Excellent instructor
10 points • Eufrasia_
Has anyone done the Algorithms course from stanford ? Is it worth doing it ?
here's the link for it.
9 points • stellar678
Help set up or join a local study group for algorithms and data structures ?
Hi all -
I'm looking at signing up for the Algorithms Specialization on Coursera (https://www.coursera.org/specializations/algorithms).
As a self-taught programmer, I have a gap in my computer science fundamentals that I'm trying to fill, and this set of courses seems like a good way.
Are you interested in doing the same and setting up a weekly local study group? I'm thinking up to around 5 people who could get together for two hours, two times per week at a cafe, library, coworking space, something like that.
I know that I'm more likely to complete the courses, and have an easier time getting through them, if I'm doing it with some peers. The course takes 4 months if you're doing 7 hours a week - we might move more quickly if the group is up for it.
7 points • pieter_steenekamp
I recommend Tim RoughGarden's Stanford series of MOOCs on algorithms @ www.coursera.org/specializations/algorithms .
8 points • unknownuserNs
Which Specialization is more suitable?
Which coursera specialization is better for algorithms and data structures (Standford's or UCSD's)
I'm currently a first year computer engineering student, almost finished my first year though, I took two programming languages courses this year (I had no prior knowledge), I took both MATLAB and C++ both courses that had some advanced concepts like OOP,Polymorphism ,I didn't take separate algorithms or data structures courses,they aren't taught in my college as separate courses -I guess- I might be unaware of the syllabi though, I prefer self learning anyways, however I'm planning to study them this summer, so I found two coursera specializations and I'm hesitated which one would be more suitable.
However those are the links for reference, and advice is always appreciated! , And thanks in advance! :)
12 points • DIYjackass
I think that this course would be a great introduction:
It is a very involved course and covers a lot of ground, but it has more focus on the things are important to building strong foundations when compared to CS50. CS50 does things like throws external sources at you and says here this is web development and this is cyber security. When they introduce it to you, you don't have the background to understand the context of what you are reading, and you keep yourself busy without effectively learning. One of the pitfalls of being a beginner is mistaking being busy for being productive.
After I learned basic programming I went through this MOOC series: Algorithms from Tim Roughgarden on coursera.
It was super challenging but really built my programming chops because I had to learn how to "think like a computer scientist" by mastering control flow, imperative programming, and the effective representation of data. Then you need to learn how to deal with larger software projects. That's the stage I am on.
3 points • driscoll42
I took the Stanford one before applying for OMSCS and I think it helped me get accepted. Good set of classes: https://www.coursera.org/specializations/algorithms
3 points • handsomejack777
Is this the one?
I can't seem to enroll without giving credit card information.
3 points • tomekanco
I really liked this series by Tim Roughgarden.
3 points • BB611
My recommendation is Tim Roughgarden's Algorithms Specialization at Coursera. It's structured, Roughgarden is a very good teacher, and you'll actually learn the fundamentals you need to solve problems. It's about ~160 hours total if you're a total beginner, so it's 1-2 months if you're working hard.
A lot of people here are recommending CLRS. I wouldn't use it even though I've worked through it at various points over the last year and my algorithms course was taught in it. It's focused on the mathematical analysis rather than practical understanding and implementation of algorithms. You can use it for that, but that's not the intended audience of the book.
6 points • RainwaterTrap
CPEN 221 is very similar to MIT’s Software Construction course. You can get a headstart if you work through some of that. Bonus: it’s also one of the most applicable courses to actually working as a software engineer, so you can get a small sense of whether you might like that career path.
I’d also recommend looking at an algorithms class. Stanford’s is good. This will help you in software interviews and CPSC 221.
In general CPEN is a lot of learning how to learn. You’re not expected to know Java before 221 but you should be okay with it by the end of September. You don’t need to know anything about hardware but you’ll have built a toy processor in Verilog by the end of second year. This is also the way it is on the job: you don’t need to know any of them before you start, but you might work in 4 different languages in the span of a 4 month co-op.
2 points • Dogopusss
Maybe getting started with Algorithms and Data Structures would be the best way to go. Since you already know the basics of Python, you can start by doing this Stanford University Algorithms course from Coursera.
Coupled with these, starting out with solving basic algorithmic problems at Hackerrank / Codechef should be a good way to go.
All the best!
2 points • NFLAddict
do you have a solid math background? not that you 'need' it persay, but it would make it a little easier. this is prob the best course ive ever taken, but it gets a little math heavy at times, some people like learning the actual proofs of the algorithms. not just learning the algorithm but why it works the way it does, why its correct etc...you can always skip those videos though
4 courses. different paradigms in each. divide and conquer / greedy/ dynamic programming...also teaches many diff data structures. its challenging, but give it a try. see how you like it. hes an excellent teacher.
2 points • danielroseman
Depends what kind of thing you want. For an actual course, I definitely recommend Tim Roughgarden's one on Coursera: https://www.coursera.org/specializations/algorithms - it looks like another session of this has just begun this week so an ideal time to sign up.
5 points • deliberatelymistaken
What is the difference between Stanford's paid algorithms specialization on Coursera and the free algorithms course by Stanford on their own website?
I am referring to these courses https://www.coursera.org/specializations/algorithms
23 points • RambaFoxRal
Programmers of r/India , I need advice on which Algorithms courses to recommend to a friend(I have a list of em)
This two part course from MIT OCW
The NPTEL course by Naveen Garg
These two Princeton courses from coursera.
These two Stanford Algorithms courses.
So which of these should I ask him to complete? He said he is learning some python(I don't know how proficient he is in it) and wants to learn machine learning.(I think he is being bit naive in thinking learning ML without a good DSA base)
I also want to know the websites where you can do code challenges that may or may not get you a Job interview(I know about Hackerrank but nothing else).
He has asked me some advice on this as I was interested in learning programming a while back(I have given up on it for now).
What are the things he should learn at the very least to get a entry level job. He has been in TCS for nearly 3 years as a support guy. Two main things.
1) Anything else you guys recommend he should do?(as in like an intro to programming like CS50 or the MIT intro to programming with python)
2) How should he progress?(as in the sequences of courses one should do)
3) How long would it reasonable take to cover said courses?(as he is working right now)
39 points • ChuckStrange
Algorithms courses - prep for Graduate Algorithms
There are some good online algorithms that explore algorithms, including graphs (Coursera - Stanford and Princeton algorithms courses). They are good courses, and you can download the slides for offline reading - I recommend them when you have spare time.
The Princeton course has two parts:
The Stanford algorithms specialization has four courses:
4 points • iusedtoloveavltrees
How do I prepare for 373?
Not so good mark in 263 (66, check my history), want to rise from the ashes in csc373.
Assuming I have a summer to prepare, what are the best things to go through to ensure I ace 373?
I heard good things about these;
Advice please? RemindMe! December 2017 for redemption story
4 points • leungleoqin
Algorithms Part 2 still not open - any alternatives?
The course page was created in Coursera more than two months ago. Originally it is said to be starting in October 2016 but still hasn't after two months. Now the page says it will start in December 2016, but again, still waiting. I have completed Part 1, and some classmates said the constant delay is due to Coursera's policy of shifting to purchase-only courses. So I am not even sure if the course will ever begin.
Are there any good alternatives to learn about algorithms? I heard about the Stanford course but unfortunately it is now purchase-only.
Or should I just wait and start the next course on Functional Programming/Scala first? I assume it won't require specific knowledge from that particular Algorithm course?
6 points • CompSciSelfLearning
10 points • ConnorMcLaud
Practice makes perfect.
Incomplete list of what can help you
- Topcoder tutorials
- Cormen. Introduction to Algorithms book
- Skiena. Algorithm design manual book
- Princeton's Algorithms two part course at Coursera
- Stanford's Algorithm Specialization at Coursera
- MIT Algorithms course at OCW (completely free)
With deliberate practice knowledge above will be enough to land you a job at Google or whatever you want.
1 points • NFLAddict
anyone interested in an algo and datastructure course:
the Stanford specialization on coursera is incredible. I finished a couple of the courses but they get increasingly difficult. if somebody wants to take this on with me. ive looked into a lot of courses, have taken hardvard cs50, this Stanford course is without question the single greatest course ive ever taken. its certainly challenging though. makes cs50 feel like a legit cakewalk for comparison but i mean who doesn't love a challenge. assignments can be pretty brutal. not taught in any specific language. people can use whichever they prefer. the focus is on the principles which apply universally across all languages. whats pretty neat, is many assignments will work with datasets that are intentionally so large, that trying to obtain a solution through just brute force isn't even possible as its beyond the limits of computer processing power. from what I understand at least (one ex, was trying to run a triple nested forloop over a 3D matrix of 1000,1000,1000) the only way to even get a solution is to cleverly figure out what algorithm can be used, and what data structures might compliment the chosen algo to make it run even faster; one example being Dijkstra's algorithm and using heaps)
I would gladly redo some old assignments, relearn things for another to catch up... if somebody wants to join...or if rather we just work at our own speeds and can discuss every so often.
1 points • NFLAddict
I believe so. any course Ive come across on coursera, theres an option to audit rather then enroll. If you hit the link I posted, navigate to the top and hit the tab 'courses'
ill just link hopefully this takes you right there
4 courses obviously take in order. click on the first. there should be an option 'enroll for free...7 day free trial' or something. but there should also be another option 'audit'...the difference is pretty much just the official certification. if somebody pays for it, once they complete it they'll get a certification that shows they did it. if you don't care for that, and just want to learn for the sake of learning, audit should give access to everything. its possible you might not be able to do the do the assignments though, if such is the case, that you cant open the assignment feel free to pm. they don't require you to enter any code. just a solution. youll be given a dataset. (which is what I can help provide). the actual coding is up to you. use whichever language you like, write a program that returns the result. etc
whats really neat about the way he structures it, not at first, but down the line he intentionally makes the files large enough that simple brute force wouldn't even be possible as it would require too much memory on somebodys computer. this forces somebody to properly implement algorithms and other skills taught to speed up their programs
lemme know if that works.
1 points • NFLAddict
I know its not a book but I honestly can't recommend this enough
spread across 4 courses. easily the best course(s) Ive taken online, learned a tremendous amount
One thing that's great about it, and sounds like it can certainly help you: the course is not taught in any particular language. the focus is on truly grasping the concepts. the actual coding is the easy part (and he'll provide/discuss pseudocode) the challenge, is being able to come up with a solution. once you can mentally map out what needs to actually be done, and can determine a good strategy then its just a matter of putting those ideas into code. and of course doing this, will help you practice your python. with assignments its irrelevant what language you use, as he just wants the correct answer.
you could also take it for free, but I think that blocks out the ability to do assignments, if you're truly interested, pm me and I can send you them.
final thoughts: I have no doubt there are plenty of books and other resources that teach data structures/ algorithms well. from what ive seen, most will approach it by introducing an algorithm. and walking you through how it works. goal being to understand it...but then it will just move on to the next. maybe youll do a practice assignment or two
The thing is, if you are given a problem and are told which algorithm to use, its not really all that challenging once you know the algorithm. its certainly not that helpful in the larger scheme. sure its nice to know, but contrast that to being given a problem, with no guideline. its fully on you to think about how youll tackle it. is their an algorithm that can tackle this problem? if so, which should I use. what type of data structure might work best for a problem like this. what type of data structure can further speed up the algorithm Ive decided on. these are ultimately the questions you want to be able to answer im sure, as anything outside a textbook, wont have context. im sure youd agree that being able to this, would suggest a far greater understanding of algorithms compared to just learning them one at a time. this is one of the main objectives of the course, and why its viewed as one of the best resources. tremendous teacher. challenging. but youll learn a lot. and...theres a pdf to a textbook that you can refer to.
1 points • roastvarren
Go for UCL course. The Queen Mary one doesn't offer a DS&A module (which is a pretty big omission)
However, if you do go for Queen Mary, there are online courses out there to get yourself familiarised with those concepts. I'd personally recommend this one
1 points • not_a_theorist
I recommend https://www.coursera.org/specializations/algorithms
1 points • chinacat2002
There is one from Stanford and another from Princeton.
Both are excellent.
You'll have to look at the topics list.
1 points • IserlohnArchmage
He also has algorithms courses on Coursera, which I assume may have the similar content.
1 points • llamagish
This one? https://www.coursera.org/specializations/algorithms?
1 points • BeMyPenPalPlease
Since you already have a BE in Computer Science, you should be good with the basics. To build on top of what you already know, I would recommend this: https://www.coursera.org/specializations/algorithms
I was in a similar situation as you till very recently. Took this course, prepared, started my new job 3 weeks ago. :)
1 points • Crislips
I'm looking at the (Stanford Coursera algorithms course right now.)[https://www.coursera.org/specializations/algorithms] Does this look like it covers the right prerequisite material or should I review something else?
1 points • find_my_path01
Try to look into data structures and algorithm design. No matter which way tou decide to take your career as a developer. This will help you.
This is the one that i have tried out. Really helpful.
1 points • Redducer
C’est une forme de développement. Quand je parle d’algorithmique je pense par exemple à ça: https://www.coursera.org/specializations/algorithms C’est une introduction au sujet, et à mon humble avis, à moins d’etre un authentique génie, on n’apprend pas tout ce qui est dedans par la seule pratique. Il y a de la théorie, pas triviale.
15 points • CoderMonkey123
Here's a list of a few free and good Algo & DS courses:
1 points • zeValkyrie
Thanks - I did the Khan academy algorithms course a while back. I don't think it was as in depth (or it has too much hand holding) as I would like (it was interesting to code up merge sort, quicksort, etc but I retained very little of the details). I decided to start working through this https://www.coursera.org/specializations/algorithms which so far looks good and covers things I definately don't know yet.
1 points • 14ashray
Try this https://www.coursera.org/specializations/algorithms
1 points • hextree
Nah, it was Tim Roughgarden: https://www.coursera.org/specializations/algorithms
I did it back when the course was free. Looks like it's no longer free.
1 points • tomekanco
Wouldn't start learning CS just for an interview. If you are interested for the topic on it's own, i'd suggest these courses. Takes about 2-3 months if you focus on it.
Think it might also make a bad impression on the interviewer if he notices you're a pretender. Better explain what you can. I'd prefer somebody showing interest in complexity above one pretending to know it.
1 points • DargeBaVarder
I was looking at: https://www.coursera.org/specializations/algorithms Does that look any good?
What about data structures?
1 points • crosswindzz
What about the Stanford Algorithms specialization on Coursera? I haven't taken it, but it has some great reviews: https://www.coursera.org/specializations/algorithms
1 points • WebNChill
Like to ask, what made you decide on the Princeton one versus the Stanford algorithm class? Stanford Algorithm Class
1 points • I_Am_Become_Dream
Coursera has several Stanford-run courses on this. Here's a sequence on algorithms https://www.coursera.org/specializations/algorithms Browse through those and check them out. You usually don't need much more than videos and assignments.
1 points • austinzheng
Coursera has classes from both Princeton and Stanford that cover the material to a level expected from a CS undergrad (e.g. their Algorithms track).
I took the Stanford courses some time ago and they were extremely helpful for someone with no formal CS background. They do represent quite a bit of time commitment (if you want to do more than just watch the lecture videos), but they are free.
1 points • Alaharon123
I don't know how you did 106A, but it's followed by 106B and 161. Note that 161 has a Coursera version (each individual course is free, don't buy the specialization) simply called Algorithms and that although on-campus it requires 103 and 109 beforehand, you can likely get away with not taking a Discrete Math course because the Coursera version covers necessary math as needed.
1 points • NFLAddict
This is awesome! incredible work man!
you're definitely right about it being difficult to get into a CS masters program without a bachelors in cs but depending on the program, if you can illustrate that you have the knowledge, it can go a really long way
I imagine you explored many different routes, but Ill also mention, I have a friend who like you, did not have a undergrad in cs. not even in math or anything stem related. but he started to really love computer science. He aimed for what I guess you can consider a 'middle step' by working his ass off to get into a bootcamp called Galvanize. to be honest I don't know too much about bootcamps, obviously some are better than others. I also couldn't tell you exactly how online bootcams differ, as this was a real in person program. was in Denver Colorado. I think it was like 13weeks (~3months). he came out of it, knowing a ridiculous amount.
In fact, not even a month after finishing, he had multiple offers at a few startup tech companies.
he worked at one, but realized he wanted to go further and pursue a masters. he got accepted to Georgia-Tech which I is literally a top5-10 school for a ms in compsci.
what Im getting at, is I wish you the best of luck in getting accepted into the masters program. I don't know where you're from - but some of these bootcamps can exist all around the world, and are usually a bit easier to get into than a full masters program, as their goal is to prep you for one, (or people often just work right after) obviously some are more recognized than others. so its a very solid back up plan is my point.
but in anycase, sounds like you're doing quite a bit. the more you build up your portfolio and have projects to show for it, the better.
lastly: if you're really interested in some of the theory behind the algorithms and datastructures I highly recommend stanfords specialization it is taught at a very high level, the only coursera course/online course ive considered 'advanced'. if you can understand the math behind your understanding of the concepts will skyrocket, and youll be banging out leetcode problems by the time you finish. goes really into the concepts and math behind the different algorithms, and its taught in pseudocode not a single language in particular. up to you to implement it. its not easy, and some assignments will literally not be possible to submit if you're code isn't optimized enough, but that's the point. excellent teacher too
but just a suggestion- I imagine you already are working on a course. motivating post man. keep at it!
1 points • klexomat3000
Verstehe. Also ich will dir auch nicht C++ aufschwatzen. Es kommt natürlich darauf an, was du so lernen möchtest. Sprachen wie C++ bieten sich gut dafür an so Datenstrukturen und Algorithmen zu lernen, weil sie dich relativ nah an den Speicher lassen. Wenn dich das interessiert, kann ich sie dir empfehlen. (Wobei es auch nicht unmöglich ist das mit anderen Sprachen zu lernen.)
Was die Länge der Bücher angeht hast du natürlich recht. Das wirkt erst mal ernüchternd. Aber wie gesagt, es ließt sich schneller als man denkt. Die hohe Seitenanzahl kommt schon allein deswegen zusammen, weil viel Code gedruckt ist. In dem ersten Buch sind nach jedem Kapital (ca. 50 Seiten) auch Übungen mit dabei, die machen solltest. (Der Author sagt eindeutig, wer die Übungen nicht macht, hat das Buch nicht gelesen.) Das lockert das ganze sehr auf und macht Spaß. Ich habe damals im Studium jeden Abend ein Kapital gelesen und danach die Übungen gemacht. War nach 6 Wochen oder so durch. Danach hast du halt ein solides Fundament. Soweit ich mich erinnere war auch kein Kapitel überflüssig oder zu komprimiert geschrieben.
Für Algorithmen kann ich den Kurs von Tim Roughgarden empfehlen. Ansonsten lohnt es sich wirklich auf Websites wie HackerRank die Probleme zu lösen. (Du schreibst ein Programm und die Website checkt dann ob es anständig und effizient läuft.) Das ist ein super Spaß und Coding Interviews sind danach ein Witz.
1 points • NFLAddict
how proficient are you with python
do you have a decent math background?
my favorite class is the Stanford algorithm specialization but its certainly pretty advanced heres the link
1 points • NFLAddict
sounds like you might enjoy this course:
algorithm /datastructure class from Stanford.
easily my favorite class ive taken online (all 4) . if you're looking for a challenge, this absolutely is. I think the first couple assignments weren't too bad, but the pace definitely picks up, and the problems to solve become quite difficult. to the point, that if your code isn't optimized, you actually wont be able to get a solution, out of memory errors aren't uncommon (I think that was the case at like halfway through but don't remember exactly)
give it a shot. see how you like
1 points • NFLAddict
Stanford algorithm specialization on coursera is quite math intensive, if that's what you're looking for. the first course is more general intro to algorithmic type concepts like time complexity and sorting algorithms, but the courses certainly get more and more advanced. pretty rigorous proofs added in as well, as the teacher is passionate about that. its all taught in pseudocode, as the emphasis is on learning the concepts, as well as the math behind them.