Hacker News Comments on
University of Michigan
Programming for Everybody (Getting Started with Python)
Hacker News Stories and CommentsAll the comments and stories posted to Hacker News that reference this url.
I've been learning Python as it seems to be the preferred language in education at the moment in UK and I'm expecting my kids to be using it. I work in arts & craft but have a strong hobby background in computers.
I started with a Coursera course https://www.coursera.org/learn/python which was pretty easy (you can run the videos at 1.5 or 2x).
That course is based on a free gratis book by the lecturer (there a chapter on regex that covers re; with examples too).
I took a good few hours trying different IDEs and settled on PyCharm community edition, it has very easy doc lookup. (http://alicious.com/editors-ides-python-code/ is a brief summary of most of my IDE-for-python search.)
Currently I'm doing the Web Data course (using Beautiful Soup) and the only problem but is that by choice I'm using Python 3 when the course is written for 2. It covers regex pretty well.
One great video-course I can think of that fits your question is perhaps "Programming for everybody", by Dr. Chuck. I followed one of his other courses on language theory, and enjoyed it a lot. You can find it for free @ https://www.coursera.org/learn/python
I'm basically on the same boat as you (except that I am learning because I enjoy it), and with one other difference, I had no previous experience except for tinkering with things I didn't understand and didn't lead to any meaningful insights.
To get a good feel on how to write simple scripts in python, you can take the class on coursera: Programming for Everybody (Python). If you don't care about the grade, there is a class currently going. The people in the forums for that class are fantastic. There is another class starting on october 5. https://www.coursera.org/course/pythonlearn
A good follow up course which will get more in depth is Introduction to Computer Science and Programming Using Python over at edx. This class is a bit more demanding than the previous one that I mentioned. https://www.edx.org/course/introduction-computer-science-mit...
The first time around I dropped out, it was too much for me. So I took a few other classes, including Introduction to Algebra at edx to give my brain some exercise. https://www.edx.org/course/introduction-algebra-schoolyourse...
If, you are interested in learning for the love of it, I would recommend Systematic Program Design (which is divided in three parts - the first part just finished last week but the materials will remain open for people to catch up) https://www.edx.org/course/systematic-program-design-part-1-...
This class will teach a design process that can be applied to any programming language, using a simple programming language to help teach the design process. The book can be found at: http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html
There are a few other classes over at udacity that I'm planning on taking but can't recommend them yet as I haven't seen them.
Lastly, a few months ago a friend asked me about programming, so I wrote a quick and dirty blog post that has a little bit more information. Keep in mind that I'm a beginner as well - so take it with a grain of salt. http://teichopsia.svbtle.com/how-to-get-started-in-programmi...
Note: There is a paragraph about a class called Intro to computer Science over at udacity. The class mentioned in this post at edx is a better class.
I'm still learning so take my advice with a grain of salt. That being said, first we ought to applaud you for taking the interest in understanding what goes on behind the scenes and better communicate with the engineers.
If I may, there are three courses you could look into. I've only taken the last one, which is fantastic for people that don't have a CS background. You'll learn about data structures.
The other two I just came across them today.
Now, the intent of this is only to give you a general idea of the amount of information these people deal with. If you happen to be a P.M. and deal with clients, this will help you avoid making promises for x feature to be ready x day due to lacking an understanding of what must be done to get it working. And so forth... Once again, I'm just starting, so take my advice with a grain of salt.
⬐ rantyOh god, really. It's not that hard. If you're into it and enjoy learning about it, then your head just fills up. It's like moving to a new town and getting used to the place.⬐ avni000⬐ avni000I agree with that - I've blown through a number of codeacademy and code school courses just because I've found it so interesting. But now I feel like I have this floating knowledge of some coding without a foundation of context to set it on. So would love to get recommendations of where to start with the real basics (like data structure etc).⬐ lacusCan you be a little more specific about what you're ultimately hoping to build, or learn? I'd generally agree with the commenter who suggested you pick a simple problem and then try to solve it. That's the only way to understand where these bits and pieces you've learned fit into the broader picture. I'm getting the sense that that's what you're after here, at least initially -- a general understanding/overview of how this stuff all comes together in the real world? Is that right, or no?⬐ avni000Ultimately, I would love if I could build a very basic prototype (of a web app) so that I can scrappily build a product to test. I recognize that that is not an easy task and would take a significant investment to get to proficiency, let alone mastery. But as someone that is analytical but not "technical", it can be exceedingly frustrating to have an idea that you want to implement and create but you don't have the know-how to do so. So I'm trying to find a way to teach myself to fish without becoming a master fisherman. And in the process I also hope that I can become a more effective entrepreneur because I will be able to communicate not only intent and design to the engineers, but appreciate the feasibility and development path.⬐ TeichopsiaIt is quite unfortunate that I know how daunting it can be to venture into this world.
If you already have some experience (as you mentioned in another comment) in whatever language it is, stick to that language. Find a good introductory book / tutorial that explains data structures. Whichever introductory book you find (I'm biased towards books - but each person learns a different way, whatever works for you, go with that) will teach you enough to UNDERSTAND what you are coding.
You'll learn how each line relates to the other. You'll learn how to manipulate that which you are building. How one thing relates to the other within the constraints of certain laws which were created to be able to communicate with the machine.
As you progress, you'll see how other people have already done certain things so that they won't need to repeat themselves later on. These functions, whenever available, can be used by anyone.
When you learn data structures, you can grab these functions to ease your own coding. But to be able to use them, you'll need to know how to manipulate the instructions that are contained within them.
I digress. As I mentioned earlier, I'm new at this. If I'm wrong I am wrong. If I explained stuff you already know, oh well. But it does help myself get a firmer grasp of what I may or may not know.⬐ lacusIt's hard to offer more specific direction without having at least a vague idea of what type of web app you're trying to build. If you're looking for a "read X book" or "do Y tutorial" type of answer, there simply isn't one, not for what you're trying to achieve. The answer is, learn as much as you need to in order to start building stuff, even if you don't know what the hell you're doing at first. When you get stuck, search around on StackOverflow and elsewhere; if that doesn't work, seek out help from your local Python/Ruby/whatever Meetup and try to find other people willing to teach (you seem genuinely curious and respectful so that should make things a little easier). Just remember that you're a smart person, so when (not if) you're made to feel like an idiot for not knowing some silly basic thing, don't back down. Keep searching, keep building, keep asking questions until you get there.
I'm far from an expert but I've been through this. I was in a very similar position to you less than a year ago and have since then gone from absolute zero technical knowledge to becoming a shitty-but-enthusiastic self-taught hacker. I'm happy to chat more specifically if you want to message me directly (first name: Linda; last name: last 4 letters in my HN username; email: [email protected]).⬐ avni000Thank you for the thoughtful response - that's in fact the type of direction I was looking for - even just learning of StackOverflow has been helpful... and I may take you up on the offer to connect further.Thanks for sharing these courses - I'll check them out. My hopes are to be a more effective marketer/product designer by understanding what it takes to bring it to life, as you mention.
'Newbie' covers many experience levels - from afraid to turn the computer on to moving beyond Excel pivot table macros. People need different degrees of handholding.
Not necessarily my favorite, Coursera's Programming for Everybody  moves forward very very slowly. Great for some people, drying paint for others. It is taught in Python.
A course I think is great is Coursera's Introduction to Systematic Program Design  based on Felleisen's How to Design Programs introductory text. It is possible to register for the last session, from a year ago, and complete the work on your own. It is taught in Racket.
Another course that takes a learn-by-making approach is Coursera's Creative Programming for Digital Media & Mobile Apps . It is beginner friendly and really encourages "getting into it". It is taught in Processing, and in some ways I think Processing is the ideal language for an introductory course in Software Engineering - it is pared down like Racket's student languages, provides just a pinch of Java pain, facilitates the production of really interesting output, and the environment provides a fast edit-compile-run loop.
For a person who is more oriented toward scientific or mathematical problems, Coursera's R Programming  might by a good fit.
Among the various Python Courses, I would probably go with Udacity's Design of Computer Programs: Programming Principles  because it is taught by Peter Norvig.
All that said, a book may be better than an open-enrollment class for many people, and there's a lot more variation.
⬐ bredmanThanks! Reminding myself of her feedback I think that pacing might be a significant issue which is something I hadn't considered too much (oddly).
She's someone that has lots of computer experience but the closest she's gotten to programming before is simple Excel functions (think SUM). I think she'll be much more excited by one where she's working on "real world" stuff so I'm leaving a bit towards Creative Programming for Digital Media & Mobile Apps and hope that it spurs her to learn even more.