Algorithms, Part I
This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations.
Data Structure Algorithms Java Programming
Next cohort starts June 8. 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.
Phillip Y. Goldman '86 Senior Lecturer
and 1 more instructor
Reddit Posts and Comments
1 posts • 385 mentions • top 129 shown below
271 points • xerxes3117
Best path to learn data structures and algorithms as a beginner
Apologies if this has been asked a lot of times but i wanted some advice in my particular situation.
I'm trying to learn back end web development, starting with Go as my first language (no experience with back-end so far). I've been really enjoying it so far but just like concepts of back-end i am also totally new to concepts like data structures, algorithms etc.
What would be a good path for me to learn these? I explored the sub-reddit and found a lot of suggestions like:
But i'm really confused which one to choose because this is the first time i'm learning these concepts and I need to also learn about different data structures, big o notation etc. from the beginning. Also a lot these require knowledge of Java.
Could someone help me with this? Also, is there any other better path that I can follow as a beginner?
Note: If it's of any use, I currently have 1 year of experience with front end development in JS, Angular.
437 points • ThatTurmoil
[Re-upload] I've compiled a list of free online Data Structure and Algorithm courses.
Earlier today I posted a similar thread that was removed, "It [was] inappropriate for [this] subreddit"
I've have received several messages in my inbox today from people asking what happened to the post and requesting specific links. Due to the amount of requests I have decided to re-upload the list. If this thread gets removed I will not be re-uploading this list. Therefore, I suggest saving or bookmarking the course websites below.
- Berkley: CS 61B: Data Structures YouTube Lectures
- MIT: Introduction to Algorithms
- Princeton: Algorithms, Part 1
- Princeton: Algorithms, Part 2
- Princeton: COS 226
- Stanford: Algorithms: Design and Analysis, Part 1
- edX: Introduction to Programming with Java -Part 3: Fundamental Data Structures and Algorithms
Additional thanks to u/slayersource for the following link:
Apparently there is also a compiled list on github of all the available courses online on Data Structures & Algorithms, thanks to u/baltimore for finding this:
70 points • deskwebs
How do I spend summer productively so that I'll be ready for interviews / become a better programmer?
Aside from that, what can I do to spend the summer productively? My goal is to eventually get into a BIG4 company, but ultimately be knowledgeable enough to differentiate between an inefficient code and an efficient code, be confident in whiteboard coding.
I have some candidates to show you guys:
Other books I've considered are Clean Code and CTCI - but those I will be doing over slowly for the next year or year and a half.
There was a data structures / algorithm course that used C++ in coursera but that seems to be gone =(
I'm mainly going to concentrate on C++ and Java because these are languages that I'm most exposed to and I will be using it for the courses in upcoming Fall semester.
My level of programming is in between beginner and an intermediate.
tl;dr: level of programming = between beginner and intermediate, trying to get into BIG4, perform well in interviews and become a better programmer. What do you recommend I do?
I know it is a lot to ask only within 2 months and a half (about), I'm just trying to get to the intermediate level with decent knowledge of data structures and algorithms.
Recommendations welcome, thanks in advance!
35 points • Us3r311
I believe that cost is decided entirely on a per-course basis. Some courses make all information and assignments free (e.g. Princeton's Algorithms Courses), others will restrict grading of assignments to paid learners, and some courses are only open to those who pay. Where any course falls on this spectrum is answered (sometimes poorly, usually clearly) in the FAQ section on course information page before you register. I have never been asked to provide payment information to coursera.
For those looking for free courses, try this link or just search for "coursera free courses" in your search engine of choice.
edit: I'd like to mention that I don't have experience with their "specializations" which tend to comprise multiple courses.
68 points • Nottherealaron
Can we get a online course recommendation thread going?
Hi, since there are a lot of great free online courses, which in many cases are much better than what they teach at your university I thought it would be nice to get some recommendations.
So what online courses are you currently doing? Which are on your to do list? And which do you recommend?
I just started Algorithms Part 1 by Princeton University to prepare for the algorithms course I'm taking in fall.
I just finished part one of Object-Oriented programming with Java by University of Helsinki, good course, I would definitely recommend it if you're getting in to coding or are about to start your first year at uni.
I also just finished Elements of AI by University of Helsinki. It's a bit high level and I already knew a lot of what they talked about, but if you're not familiar with AI it could be a fun intro to Artificial Intelligence.
I haven't done this course yet, but a few friends have recommended and it's on my to do list.
31 points • DirdCS
14 points • 3Erots
Better yet, those same videos are all available on Coursera for free. You can enroll, watch the videos, and take advantage of the course material that comes along with it.
11 points • Ativerc
How committed are you? Because I'm starting algorithms too. I would love to team up.
BTW Do you have any good sources for Algorithms' MOOCs which use Python?
I'm thinking of starting https://www.coursera.org/learn/algorithms-part1/ (This starts on June 11) and I can handle it if they teach through Java but the worst thing is they accept programming assignments in Java only.
I will use Khanacademy and Commonlounge for reference.
222 points • Lechickensoul
I'm 34 and I got my first programming job after about a year of self learning! Here are my main resources
Hello! I'm here to thank this community for the great time and the inspiration it gave in the last months of hardworking. Also, to share some of my humble tips. Feel free to msg and ask for any help. I'm working as a front end developer after a year and a few months trying to learn by myself webdev. I had more details about my personal journey on this freecodecamp post: https://forum.freecodecamp.org/t/one-year-of-fcc-gave-me-my-first-job-as-a-front-end-developer/151669
Here's a list of online resources that helped me along my journey through the zero webdev to employeed-TI-guy For frontenders, most of it...
Free: 1- Udacity have a great Git course: https://www.udacity.com/course/how-to-use-git-and-github--ud775 If you are new around the computer science world dont forget to grab some basics of data structure, algorithms and some logic at Havard https://cs50.harvard.edu/
2 - More data Structure at Coursera! This is a pretty tough one, be prepared. The language is Java but dont worry, the trees, liked list and the other stuffs are the same for every language - https://www.coursera.org/learn/algorithms-part1 and https://www.coursera.org/learn/algorithms-part2
Cheap: Go for the Udemy discount coupons(a quick search on google will do) and get some of the best online courses for 15 bucks or less
Expensive: Nope. I'm just too broken
- Daniel Shiffman's Code Train(former Rainbow-Code) - https://www.youtube.com/user/shiffman
- Sarah Drasner is all over Youtube teaching the SVG art
- MPJ's Funfunfunction - https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q
- Look Lea Verou CSS expert talks
Travis Neilson's DevTips - https://www.youtube.com/user/DevTipsForDesigners
https://codepen.io/ of course lol
I hope you find something useful. Just let me know if guys need any help! Thanks!
10 points • hitherto_insignia
9 points • ClashRoyaleTourney
ASU courses are pathetically easy compared to the schools you mentioned above. For example, take a look at this course made by Princeton. This would be an intro level course at any top school but a 300+ level course at ASU. In fact, I don't even remember covering some of the topics in the syllabus of this course. If you want to be competitive, you need to learn a lot on your own. CS was not meant to be easy and ASU should stop catering to the people who frankly should have no business studying CS
8 points • omnomnommies
- Algorithms/Data Structures
- Time Complexity of Algorithms
- When to use certain data structures for what kinds of problems.
At its core, programming is simply some algorithms using some kind of data structure(s) no matter how small the problem is. Design of your algorithms is important as well. Highly suggest Princeton's Alg/Data Structures course on [coursera] (https://www.coursera.org/learn/algorithms-part1/home/welcome)
8 points • cs50questions
More advanced algorithms & data structure courses after CS50?
Hey everyone! CS50 was a complete game changer for me. I particularly loved that its foundation was in C.
I've checked the archives for this question but didn't find anything from the past 12 months. It's 2017 now... does anyone have good recommendations for (preferably free) follow-up courses on more advanced algorithms and data structures?
I'm currently signed up for the next round of Princeton's algorithms course on Coursera but it's completely in Java. Is there anything that, like CS50, is in C? Or does anyone with experience know whether or not the Java requirement for Princeton's course is an issue if you don't know any Java at all (outside of what it naturally shares with a language like C)?
Thanks for any input you might have!
7 points • damnburglar
I’m very interested in this as well.
I know that the coursera courses on algorithms from...Princeton, I believe (with Sedgewick) are de facto. Beyond that I haven’t looked too far.
Edit: Here it is :)
14 points • Alphendo
Forming study group for Coursera Princeton Algorithms
Discord Group https://discord.gg/KU68AHH I hope it's okay that its in discord, slack didn't have an option to send out a link for anyone to join, you had to send out individual invites through email which is a pain.
Updated the discord link Sorry about that I didn't refresh the link so it just used its default settings..it should be good now!
20 points • gobbledygoop
You shouldn't openly trivialize other people's struggles with a subject. And you should provide resources to those online videos and books. I would recommend these two Coursera classes
as well as the free Python data structures book
5 points • cheekyyucker
people who have taken higher level algorithms courses might tell you not to, because they are not cognizant enough to realize that they had the context to work through problems even if they didn't first get it. Just a heads up on the type of responses you might get on reddit
my personal advice: do problems through an actual algorithms course like this one:
or a similar course that caters to your language of choice. This way, the likelihood of needing to look up the answers is slim, because you'll actually have the context prior to attempting the problem. Otherwise, you're just spending time reinventing the wheel in your head with the poor guide of leetcode solutions.
5 points • vodico
Online Algorithms course with C++ or C as base language?
I am looking for an online course (preferably hosted on Coursera or edX) which teaches Algorithms and Data Structures with C++ or C as the base language. I enrolled in this Algorithms I course but it teaches with Java.
Any recommendation would be appreciated.
27 points • AltairAC
Kako do prvog posla? (programiranje, student)
Položio sam nekoliko kolegija vezanih uz programiranje (osnove programiranja u C-u, osnove strukture podataka i algoritama, osnove objektnog programiranja u C++-u, malo assemblera (Motorola 68k), malo mrežnog programiranja u C-u) i samostalno sam malo učio Python no nemam osjećaj da bih se s tim igdje mogao zaposliti pa sam ovdje došao pitati za pomoć.
Trenutno se borim kroz knjigu Demistificirani C++ (4. izdanje) no ta knjiga se bavi jezikom C++, a ne nekim konkretnim tehnologijama koje koriste C++ pa nisam siguran je li to najefikasniji put.
Konačni cilj je posao vezan uz računalnu sigurnost (ovako nešto: https://www.infoworld.com/article/2656634/malware-dissection-101.html), ali put to toga je vjerojatno dug, a volio bih ipak nešto programirati za novce za vrijeme studiranja. Malo sam i zbirljiv tj. ne želim se baviti razvojem mobilnih aplikacija. Sve ostalo je ok.
Sad se stalno priča o AI-u pa sam razmišljao da prođem kroz ovo: https://www.deeplearning.ai/ https://www.coursera.org/learn/algorithms-part1 https://www.coursera.org/learn/algorithms-part2
Ili da se primim Pythona? (npr. knjige Learning Python i Programming Python - Mark Lutz (https://www.oreilly.com/pub/au/446))
Da posao tražim preko student servisa ili se bolje priključiti nekoj stranici za freelancere (upwork)? Koja je neka realna plaća koju bih mogao očekivati za rad preko student servisa? (ne bih radio puno radno vrijeme da studij ne trpi)
4 points • udi_baaba
You have to go to each individual course and click on audit this course or something similar. This one by Tim is more theoretical and covers no code or programming language. It is well structured but at the end you will definitely improve your problem solving skills.
The other course by Princeton is in Java. If you want to code along or want to understand implementation better you can enroll in this. https://www.coursera.org/learn/algorithms-part1
I'd recommend doing both because this would vastly change your outlook from programs being syntax to problem solving tools.
4 points • suzytmohanty
Will you recommend a newbie programmer to learn Core Java & SQL in parallel?
I am currently taking University of Helsinki's Java Course (mooc.fi) and at Week #2 right now.
I wanted to start learning SQL from sqlzoo, but bearing in mind the fact that java is my first programming language (even though I am CS grad), I am in a dilemma whether I should take the plunge or not.
I am really looking at getting the most out of my 3 months learning time before I start applying for jobs. I am open to any alternative suggestions you might have.
Also can anybody tell me how many weeks into this course can I start learning Algorithms & data structures from this Coursera MOOC by Princeton University?
4 points • osuonlinehelp
Considering learning Algorithms from Coursera a little bit before taking actual course here. Anyone done that/know how it works? Or are there better options?
So, basically, I am considering taking this course from searching on this subreddit:
However, I notice you have to "enroll" to take the course. Well, what if I don't sign up for the one on Aug. 07? When will the next course open up? Also, am I expected to complete the class within a certain timeframe?
Beyond that, would it prepare me for what is to come in Algorithms? Or is there a better class out there to take?
Anyways, thanks for any help with this as I want to prepare for Algorithms the best I can.
8 points • RockerJegos
Am sa iti recomand Algorithms, Part1 si Algorithms, Part2. Sunt explicate fenomenal de bine si poti pune intrebari prin intermediul forumului (sunt sanse mari ca intrebarea ta sa fie raspunsa deja). Cursurile sunt 'predate' de Robert Sedgewick, un om cu greutate in algoritmica.
O carte pe care as recomanda-o oricui vrea sa se apuce de programare este 'Donald Knuth - The Art of Computer Programming', gasesti in ea algoritmii disecati si explicati.
8 points • P_E_B_K_A_C
8 points • runner2012
Anyone know why is Coursera's Algorihtms part II not accessible?
Anybody knows what's going on? Also, anybody knows of an Algorithms class as good and in depth as this one? Especially in Java or Python.
32 points • whatevernuke
Wasn't this one, was it? :
I've seen it posted here a few times.
Also, https://teachyourselfcs.com might be worth a look.
Specifically for Data Structures & Algorithms, since that's what I've been looking for recently:
https://www.coursera.org/learn/algorithms-part1 - Seems to be the most generally well regarded I've seen.
https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms1+SelfPaced/about - Not sure about this one, but I think I've seen it praised a few times.
Hope that's useful.
3 points • Wiggin028
If you're willing to do the work, I highly recommend the Princeton University Algorithms, Part I class on Coursera.
I used this class to supplement my universities DS and algorithm classes and could not have spent my time better.
It's a free class, and each weeks material is short enough that you can cover it in your spare time. The projects can take a bit of work, but in your situation I'd skip these and instead practice problems in CTCI as you cover each section.
The next class (self-paced, and you can work ahead) starts today if you were interested.
11 points • ViditM15
I would highly recommend that you take Harvard's CS50 course first which is a phenomenal introduction to the world of computer science: https://www.youtube.com/watch?v=y62zj9ozPOM&list=PLhQjrBD2T3828ZVcVzEIhsHVgjANGZveu
Then, learn the basics of a beginner friendly language like Python from here: https://learnpythonthehardway.org (Don't worry, its "the hard way" because the author strictly wants you to code along with each and all of his lessons so that you do not just read it like a story book and learn nothing in the end).
Then, when you've familiarized yourself with language basics, do a algorithms and data structures course (I'd highly recommend this one by Princeton: https://www.coursera.org/learn/algorithms-part1/)
This will make you proficent enough so start out with a starter project (keep checking /r/beginnerprojects/ if you can't come up with your own) and learn along the way from then on.
Hope this helps you get a kickstart!
3 points • NeoStarSky97
This algorithms course, by the authors of the best Algorithms textbook out there, Robert Sedgewick and Kevin Wayne. This requires a bit of mind stretching, and will take a fair bit of time to get through, but is totally worth it.
PS: You need to have your programming basics thorough with, and the course is primarily taught in Java.
3 points • firecopy
You should not feel the need to "unlearn" material. Use the information you do know to help learn material in the future.
If you want to learn data structures properly, all you need is https://www.coursera.org/learn/algorithms-part1, Princeton's course about Data Structures and Algorithms.
3 points • arkhitekton
S/he might've meant this: https://www.coursera.org/learn/algorithms-part1
3 points • qna1
A quick search of this sub, for algorithms classes will overwhelmingly show that the Coursera course, by Princeton University is the highest recommendation, with good reason. Yes, this has been recommended in this thread, but I am perplexed why the youtube lectures are recommended over the direct source, which most importantly has very very challenging assignments, along with interview questions that help to reinforce what you have learned, along with a wealth of other resources, I am currently on week 3, and would like a parter to collab on the assignments on if you are available.
3 points • JavaMoocfiCS50Androi
It may be worth checking out this [algorithms course by princeton] (https://www.coursera.org/learn/algorithms-part1). It's free, 2 parts, and is recommended quite often on this sub.
3 points • rm711
Skipping CS 400
Due to unresolvable scheduling conflicts in the fall, I'm looking to get into CS577 (Intro to Algos) directly and skipping CS400 by self-learning it over the summer. I did this with CS200 by showing the CS advisors some of my previous work in Java. Does anyone have any recommendations on how one could do the same here? I've looked into a relevant Coursera course that looks like it covers roughly the same topics, but I'm not sure how I'd go about proving that since it offers no completion certificate. Thoughts?
22 points • idol2k
Investment banker completes CS50: new destination? + thank you staff!
Last week, I’ve finally completed all the problem sets! It was a bit of a struggle (although an extremely pleasant one!) since my investment banking job means I had at most 2 days to focus on CS50 (I usually work entire weekends too, logging 80-100 hours per week). Might sound trivial but I feel very pleased to have completed the course in these circumstances and without CS background.
I also wanted to thank CS50 staff! Your enthusiasm is absolutely inspiring, and I felt touched despite not being on H/Y campus. Tremendous thanks for your continuous efforts in making computer science available to all!
At university, I did one of the best economics degrees in the world so I am familiar with linear algebra, calculus and statistics - feel free to recommend more mathematically rigorous courses.
Personally, the most obvious candidates for me are: 1. MITx Introduction to Computer Science and Programming Using Python https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-9 2. https://www.coursera.org/learn/algorithms-part1 as recommended by David J. Malan himself 3. https://www.edx.org/course/artificial-intelligence-ai-columbiax-csmm-101x#! 4. https://internetingishard.com/html-and-css/ 5. https://www.coursera.org/learn/object-oriented-java (this is intermediate, what could should I take to learn basics first – CS50 won’t suffice, I guess?) 6. https://www.coursera.org/learn/machine-learning
Courses, books, blogs are all welcome.
Many thanks and happy coding!
10 points • qna1
6 points • akame_21
Despite their age, the MIT lectures were great. If you're good at math and enjoy proofs this is the class for you. Same thing with the CLRS book. One of the best books on DS & Algos out there, but it's so dense it'll make your eyes glaze over, unless you love proofs and highly technical reading.
To get your feet wet, Grokking Algorithms is a good book.
A lot of people recommend Princeton's Algorithm Course. I took Algorithms in school already, but I'm probably going to take this course to round out my knowledge.
6 points • monsieurlazarus
This course session is started today.
This is the often recommended Algorithm and Data Structures course in this sub. Better to start the course right away since the material is quite packed and the assignments take some time to finish.
The companion website
Maybe you'll also want to grab the book.
9 points • JohnGaltAWALT
I have completed 300 applications since the very beginning of May. I used AirTable to track the status of them.
The result has been 6 on sites -> 4 offers.
I did this 7 days per week without taking any days off. I made this my mission. No excuses. I am not a victim. I own the outcome.
My daily schedule:
- I would schedule any of my calls or screens for the morning
- The rest of my "workday" would be watching lectures from these three sources: Skiena, Sedgewick, MIT 6.006
- and then doing 2-4 leetcode questions from the lecture material per day
The result is I passed every code-screen, HackerRank, take-home project, phone technical screen, etc. except one (some timed multiple choice quiz from Bolt).
If I decided to take an initial call, I would end up converting it to an on site interview. Sometimes, after applying, I would get an email from a company and then ultimately decide based on Glassdoor or their product that I wasn't interested.
I completed over 150 leetcode questions (using Python3). It has improved the way I think. It has improved the way I write code. I'm glad I did all of this.
I filled 2 Rhodia notebooks from those three lecture playlists--I actually sat and took notes while pausing and replaying each video as needed.
If anyone would like tips or suggestions, I am happy to help as being in the "job hunt" is all I've been doing for almost three months. DM me.
35 points • Aleriya
WGU CS Free Study Resources
I'm putting together a list of free resources for WGU CS students, especially for those looking to study ahead before starting the program. Please let me know if you'd recommend any resources to add to the list.
- Official WGU: Zybooks with OpenStax textbook
- Official WGU: Link to Free Textbook Download
- Unofficial: Supplementary videos that show a visual/intuitive understanding of calculus from ThreeBlueOneBrown
- Unofficial: YouTube lectures from Professor Trefor Bazett
Discrete Math 1
- Unofficial: YouTube lectures from Professor Trefor Bazett
Data Structures and Algorithms
Unofficial textbook: Problem Solving with Algorithms and Data Structures using Python
Unofficial: Coursera Algorithms by Robert Sedgewick. An extremely thorough (but extremely difficult) Algorithms course from a highly renowned professor. This course is in Java and the WGU course is in Python, but I'm including it because this is the gold-standard algorithms course
Software 1-2 (Java)
- Unofficial: Coursera: Princeton Computer Architecture
2 points • firecopy
Are you working as a software engineer currently working in the industry, or are you a student (self taught/college)?
Edit: Going out to lunch, but if you are a student, would recommend checking out Algorithms, Part 1 by Princeton University taught by Robert Sedgewick and Kevin Wayne https://www.coursera.org/learn/algorithms-part1. Although focused on Data Structures, it will catch you up to speed with Java.
2 points • edelweiss675
I actually made the exact same move from embedded to server-side/backend-ish development. At 4 years into your first job, your career is super-fresh, people can see you as malleable. But you have to show them you are eager and willing.
Because I wasn't a traditional CS major, I had to spend a few weeks studying basic algorithms and data structures. Specifically I took the Algorithms 1 class on Coursera - https://www.coursera.org/learn/algorithms-part1
I also coded up solutions to projecteuler.net problems and researched the companies/products I was being interviewed for.
Your brain is mush, but the only way to fix that is to study and practice coding on your own time.
And like someone else said, definitely get rid of "embedded" on your resume. I put down "Software Engineer".
2 points • n4ppyn4ppy
Not a book but the Coursera courses are good
2 points • Karimo_
i think it started very recently but you can still enroll
2 points • ceed0z4
2 points • csblows7
Just reread the top post recommendations on how to pass interviews around here - I promise you, there are no better resources catered to you specifically.
Algorithm Design Manual by Skiena - Great read
CLRS by Cormen, Algorithm Design by Tardos & Kleinberg - Solid undergraduate course texts on algos
https://www.coursera.org/learn/algorithms-part1 - Sedgewick's course + textbook has a great reputation, haven't looked much at the content though
Following this work through Leetcode, don't give up when it's hard!!
2 points • firecopy
The book Algorithms 4th Edition by Robert Sedgwick, or his course on Coursera.
2 points • an_actual_human
> so they can focus more on the content, rather than the language...
What do you mean by that? In any case, the language should not be the focus of this kind of course.
Sedgewick's course is excellent.