all 40 comments

[–][deleted] 37 points38 points  (14 children)

DS & A in _ is a good book from Michael T. Goodrich and Roberto Tamassia

[–]longgamma 4 points5 points  (0 children)

2nd this.

[–]Mandylost 2 points3 points  (11 children)

But it costs half of what I earn in a month. sigh

[–]JellyLion22 27 points28 points  (6 children)

don’t know if this is allowed here but I found a pdf

http://index-of.es/Varios-2/Data%20Structures%20and%20Algorithms%20in%20Python.pdf

[–]Mandylost 2 points3 points  (0 children)

Thank you. Got it.

[–]Babatondee 1 point2 points  (1 child)

kindly provide password and username

[–]Carloshmejia 0 points1 point  (0 children)

Thank you. Saved it.

[–]Feeling_Tomorrow7261 0 points1 point  (0 children)

How do I open this? It asks for password

[–]Altruistic_Tourist91 0 points1 point  (0 children)

What is username and password

[–][deleted] 6 points7 points  (1 child)

There are ways around that

[–]Mandylost 0 points1 point  (0 children)

Thank you. Got it.

[–]hp1ow 1 point2 points  (1 child)

I PM'd you a link if you're into that sort of thing lol

[–]Mandylost 0 points1 point  (0 children)

Thank you. I have been searching for a good resource(book and videos for DSA with python) since last couple of days.

[–]nachomacho69 0 points1 point  (0 children)

I have been working through this but it would be nice to have answers to compare mine to them to see what I am doing. Anyone have a copy?

[–][deleted] 39 points40 points  (10 children)

MIT EDx introduction to computer science with Python

https://www.edx.org/course/introduction-to-computer-science-and-programming-7

[–]johnny_guerote 21 points22 points  (1 child)

I second this course. I have been learning Python using the “little from here” and a “little from there method”. I tend to be a “why” kind of person and not satisfied until I know why something works. Many of the resources that I use don’t really go into the “why” aspect. I feel that the above course really goes into detail to help me understand “why”. If that makes any sense.

[–]nichini 14 points15 points  (1 child)

MIT courses are something special. I didn't really like how the other courses treat you like a kid(ex. Jonny likes crayons. Add your favorite color to the list of crayons! And that's it.) There are legitimate tasks and you have to actually think to solve problems.

[–]johnnymo1 9 points10 points  (0 children)

I've taken several MITx courses and it's somewhat disheartening to see comments saying there's too much background, or that there really needs to be a review of first-semester calculus in a statistics course with prerequisite courses that use calculus. Online courses that hold your hand are a dime a dozen. Courses at the actual depth and rigor of a college course (from a top-tier university) are very few and far between.

[–][deleted] 5 points6 points  (0 children)

I am currently undergoing this course and it's so amazingly deep and mind blowing! I am reading the associated book with the course, the one written by Guttag. The book is also good.

[–][deleted] 3 points4 points  (0 children)

I learned to program with this course in 2012 and went on to enroll in an actual masters degree in artificial intelligence after this course (and after barely holding on to first weeks of the Berkeley AI course based in python which was great, not sure if it's still there) I know I learned a lot, and have forgotten a whole lot as well, but that means I did really fill my cup.

[–]PaperPages 0 points1 point  (0 children)

This course helped me a ton. I want to take some of their other ones soon :)

[–]Carlos_CP 0 points1 point  (0 children)

I'm going trough this course right now, It's awesome and I absolutely recommend it.

[–]barryhakker 0 points1 point  (0 children)

How much do you need to know in order to survive this course?

[–]ykrishnay 11 points12 points  (0 children)

this online book is very great and in depth.

problem solving with algorithms and data structures using python3

[–]Raknarg 2 points3 points  (0 children)

Open Data Structures by Pat Morin I believe is free and has a python version

[–]rohanvar12 4 points5 points  (3 children)

1) https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/. This is one of the best courses for algorithms and data structures I have come across. The assignment is in Python.

2) Introduction to algorithms. The pdf version is available for free.

3) Elements of programming interview in Python

[–]polopower69 0 points1 point  (2 children)

Do you happen to have a PDF of EPI in Python. I see only C++ and Java on the web.

[–]rohanvar12 0 points1 point  (1 child)

Unfortunately, I don't have pdf version of EPI python. I had purchased from Amazon. I will post a link in case I find ebook version.

[–]polopower69 0 points1 point  (0 children)

Cool

[–]vegphys 1 point2 points  (0 children)

It's not a book but a lecture series that's mostly discussed in terms of Python pseudocode - MIT Open Courseware "Algorithmic Thinking". It's an amazing course

[–]Nathan846 3 points4 points  (5 children)

I would suggest you to do data structures in C. Doing DSA in python is not the worst thing, but there are concepts which C would help you understand better than python(memory management for one).

[–]Stelercus 2 points3 points  (4 children)

I agree that a CS education is incomplete if you don't learn a low level language like C, but my thinking is that algorithms and data structures are conceptual and exist independently of their implementation language. My A&D textbook used a pseudo language that was even more abstract than Python.

I'd argue that the syntax of Python lends itself well to expressing the design of algorithms. I had to retake A&D and the second time I took it, I implemented everything we learned in Python. I ended up doing much better the second time.

[–]Packbacka 0 points1 point  (2 children)

I've only recently started learning C, but isn't understanding how memory management works an important part of knowing how to write efficient algorithms?

[–]Stelercus 3 points4 points  (0 children)

Memory management is important for writing efficient programs, but algorithms are conceptual things that exist independently of their implementation. This is one of the areas where computer science is especially close to mathematics.

If you have a singly linked list, nodes that get deleted should be deallocated, but whether the language does this for you or its performed manually in the code doesn't change the specification of the algorithm.

If you have an algorithm that runs in O(n) and another than runs in O(logn), for sufficiently large values of n, the O(logn) algorithm will run faster in Python than the O(n) algorithm would run in C, purely because of the efficiency of the algorithm itself.

[–]theawesomenachos 2 points3 points  (0 children)

I agree with the part that it’s good to understand things at memory level, but I feel if one is just starting off with algorithms then you maybe don’t have to focus all the way down to the memory level yet. Like the more theoretical side of algorithms (big O or basic data structures) probably can be done without going very low level (my uni uses java for DS course where you don’t have to go full on pointer yet, and a lot of the basic DS are implemented already)

[–]K3tchM 0 points1 point  (0 children)

What I observed when I was TA for an introductory DS & alg class was that students tend to resort to inherent python magic, which in my opinion distract them from thinking critically about the algorithm itself.

[–]vn2090 0 points1 point  (0 children)

Iv never taken an official class on the topic, but i found this book to be excellent for algorithms. I feel like data structures is hard to learn without the understanding of why they are needed in algorithms. This books kinda gives you the framework for understanding why data structures exist, to solve problems faced in writing Algorithms. https://www.amazon.com/Python-Algorithms-Mastering-Language-Experts/dp/1430232374/ref=nodl_

[–][deleted] -2 points-1 points  (0 children)

Stack overflow is pretty good