Introduction to Python Programming
In this course, you'll learn the fundamentals of the Python programming language, along with programming best practices.
Reddacity may receive an affiliate commission if you enroll in a paid course after using these buttons to visit Udacity. Thank you for using these buttons to support Reddacity.
Reddit Posts and Comments
3 posts • 591 mentions • top 44 shown below
109 points • etuxr
Imagine that you are trying to find an article that you read once, but you are not allowed to use any search engine feature online.
You know it was on New York Times' website, and you also think you remember a few key terms. So you come up with a plan to go to the New York Times website, and open every link on the front page of the site into another tab, go to each of those and open every link on them that you haven't already opened.
Then you go to all of those pages. Once you have followed every single link on the NYT website. You then go through each page and cntr+f the relevant key words. If you find the info you are looking for great! Otherwise you keep chugging along. Maybe check the Wallstreet Journal, or the New Yorker. Or maybe it was a local news source. A spiderbot is a program that does all of the crawling for you, and aggregates all of the html in a searchable format and can give you the links you need to go to the direct source. It is essentially creating a searchable database that you can use or recreating the functionality of google for a very limited scope.
If you are interested in learning how these things work you can check out udacity's python programming course It has you build a web-crawler in python and set it lose in one of its servers.
148 points • chocolatehipster
Would you recommend the "Intro to Computer Science" (Udacity) Course for someone who wants to get into web programming?
Hope you're all having a lovely festive break. I really want to get into programming into 2016 and have been looking at a lot of online courses.
However my friend did mention that the Intro To Computer Science course (https://www.udacity.com/course/intro-to-computer-science--cs101) is a great starting point even if I do go back to the Odin Project after mostly due to the deeper theoretical curriculum.
Would it be beneficial in the long term if I did the Intro To Computer Science course?
11 points • nashguitar1
This covers the basics of python, more so than MIT 6.00.1x, which has a focus on computer science. The latter is a great second course, though!
16 points • DuckSwapper
What are some of the most fun online programming tutorials/courses that you have stumbled upon?
I know "fun" is an abstract term but anything that you think was interesting and immediately got you hooked as opposed to being strictly tutorial-ish fits. Maybe some course had a really great, laid-back instructor, or used gamification in a non-obvious manner, or maybe it just proved to you that some cool project could be completed in one weekend even though you would have never suspected so. Any language, any difficulty level - I just think such a list is something everyone would benefit from.
As for me, I guess I'd recommend:
- Udacity's CS101 for the very beginners cause it immediately got me hooked in Python back when I took it by showing that even creating very complex-sounding things like a search engine is possible over such a short timespan
- Udacity's Intro to Machine Learning for the more advanced ones. I (and I guess - many people) always viewed machine learning as a fascinating but very complex and inaccessible field which demands lots of theoretical knowledge to even start playing with - and this course proves you completely wrong in that aspect by showing you a series of mini-projects that you can immediately get you feet wet in
5 points • smgtmn
Go to udacity.com, and take the “Introduction to Computer Science” course. It is free.
Once you are done with it, you can explore more areas.
3 points • myst1crule
3 points • paidhima
Open a command prompt in Windows (right-click the start menu, select Command Prompt or Windows PowerShel depending on patch level). Once you are at a prompt, type python and press enter. You should see something like this:
PS C:\Users\blahblah> python Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
If you do not see the above, then Windows doesn't know where the Python executable is. Assuming this works, try going to the directory that has your Hello World, hold the shift key and right-click an empty space. You should see the option Open PowerShell window here, so select that (it may say command prompt instead, which is fine). Once at this new prompt, type dir and press enter and confirm that your program can be seen. Also check its extension. It should be something like hello_world.py. If there's no .py at the end, then Windows won't know what program to use to open it.
Assuming, again, that all is fine and you can see your program, try typing python hello_world.py and press enter, replacing the filename with the name you've given the program file. Your program should now run as expected. If not, you could try copying your code into Pastebin and post a link here for review.
Finally, I would recommend taking a beginner course on programming with Python as the tool. I know there are a few free ones online. I can personally vouch for this one from Udacity as a great entrance to object-oriented programming using Python. Remember that Python is a tool, but programming is the skill and that's what you want to learn.
6 points • eucorri
Start with Python:
For math, start with Khan Academy. Aim for 30 minutes a day.
For subreddits, I'd suggest /r/learnprogramming, /r/learnpython, and /r/learnmath.
Like a previous commenter said, based on your current understanding of the field, you're years off from getting into AI but you can start building the fundamental skills you'll need right now, without spending any money or getting formal qualifications. That can come later.
2 points • charles_tynchu
I second these answers and have a second resource for starting to learn in addition. Check out https://www.udacity.com/course/intro-to-computer-science--cs101
2 points • sraschka
Yeah. I am not affiliated with DataCamp and generally don't want to advertise non-free content, but DataCamp is a pretty good one to get up to speed with Python for ML & data science applications. However, I also recommend learning Python from a computer science perspective. I.e., alongside learning some math and programming, I highly recommend learning also computer science basics, which is immensely helpful in machine learning. A good (I think still free) course is the CS101 Intro to CS with Python course on Udacity (https://www.udacity.com/course/intro-to-computer-science--cs101)
2 points • toogloo1
So when I started learning how to code, I used Udacity CS 101 : https://www.udacity.com/course/intro-to-computer-science--cs101
David Evans is a really good teacher and I recommend you take this course (whether you want to take it for credit is up to you). I didn't take it for credit but this was before Udacity had a monetary business model.
11 points • ymolblue
Hi, this is a great question. The best way to get good is to do projects on your own where you learn a bunch of new packages and figure out problems on your own. This is definitely something a beginner could do.
A lot depends on how sophisticated you want this to be, so here are some ideas. The key is to break the project down into smaller manageable steps so you can perfect each part before moving on to something more complicated. And then just keep adding more complex parts to it.
If you know python, you know how to write scripts. A script is just like a standalone .py file that you can run. It sounds like you know Python (for a refresher I would recommend the Google Python Class set of tutorials or the Rice Coursera Class).
1)First, I'd try to write a script that you can run manually yourself to progammatically access a website using python. Learning how to do this is the key to accessing APIs/scraping. The big branching point in the project is whether you want to access the API that a news site gives you and then parse the data or whether you want to crawl/scrape/make a GET request to the site yourself and parse the whole site manually. Both are worth learning. Packages that access a web page in python and return the contents are: urllib (built-in) and requests (super simple way to access a web site using python and will return json).
-So I would read up on (requests)[http://docs.python-requests.org/en/master/] and practice accessing different websites using it and playing around with the data you get back.
2)A first step to learn about this could be to find an API or a RSS feed for one of the nesw sites, and write a script using requests that reads in the feed of one of these sites. This will probably return you nicely-formatted XML or JSON. You can process this using python's json package (actually I think with requests you can just do r.json() or r.text()) or a package called BeautifulSoup which is great for parsing. Figure out how to access the RSS feed and then pick out the titles of article using BeautifulSoup. Here's a good tutorial on this.
3)Then you have to figure out whether this is a new article you haven't seen before and you also want to save the link and the time you accessed it. So you need some way to persist the data from each GET request and save it somehow outside of the scope of the program and figure out what is new. There are easier to more complex ways to persist data. Simplest might be to just have the program create a text file with the results of each crawl. Maybe have each line be a new title and link. You could iterate through the lines of your file and see whether that title appeared before, something like that. And then output to the user the new links (just use console for this). A slightly more sophisticated way would be to output your data as json and then read in the file each time and parse it to see if it existed. A more advanced way still would be to save your results to a sqlite database on your machine and you can check whether that entry is present. Using SQL may be a bit harder, but worth learning as well. You can use an ORM to make the SQL calls easier so you just have to use python.
4)Finally, how do you get this script to run automatically at certain intervals without you having to call it manually? Look into crontabs /cronjobs for this.
5)You could also extend this project by having it email you the results, rather than displaying in the console. For this, python has built in SMTP packages which would be fun to learn about.
7)Some of these tutorials at newcoder.io, particularly the APIs one and the Web Scraping could be helpful. The Udacity Intro to Computer Science class also has a later project on accessing the web using BeautifulSoup and the project is to build a mini search-engine, both could be worth checking out.
2 points • Pono-
Udacity has an awesome introductory class using Python:
2 points • say_wuh
Udacity: Intro to Computer Science - Build a Search Engine & a Social Network
2 points • niart
Of all the online courses I've sampled, I found Udacity to be the best because of its format (I also have trouble staying motivated with self study)
The courses are short videos on topics peppered with quizzes/tests and an auto-grader. If you're interested in learning programming it's not a bad place to start, they have an intro course that teaches python - https://www.udacity.com/course/intro-to-computer-science--cs101 (and most of the courses are free, just need to sign up)
2 points • littlemonster07
Computer Science Programs in KC?
Have something to run by you if you're familiar with the Kansas City area. A bit of background about myself first.
I graduated with degrees in Microbiology and Clinical Laboratory Science and I currently work nights as a Medical Technologist at a hospital. The hours and the overall toxic lab mentality is draining me and there doesn't seem to be any upward mobility. The turnover in labs is ridiculous and I'm looking to find something that I find rewarding and something that I've always liked doing.
I remember when I was little I would visit my Opa, who's a computer scientist, who got me into video games and tinkering with computers and figuring out simple little problems to get my little brain going. I don't know why, but I didn't pursue my interest in tech as I got older. Just kind of always tinkered around installing ROMS onto phones and building computers for friends and family and I never saw it as something to pursue.
Anyway, that's the end of a short background. I've been looking into making the jump to obtain a bachelors in Computer Science and have been looking around the area for a program. I live in Kansas City, MO and the only school that I can find is UMKC that offers the bachelors. Would an online route be a good option? I also found Metropolitan Community College but they offer just an associate, which from what I've gathered from this subreddit wouldn't be too good of an idea.
Any feedback you can give me would be great! I really appreciate everyone's posts on this subreddit!
Edit: Given my situation, would a Master's be a viable route?
2 points • my_password_is______
it sounds like you want to build a mobile app
is that correct ?
or a desktop app ?
or something on the web ?
here's a free desktop course which may be ok
"You’ll learn Python, a powerful, easy-to-learn, and widely used programming language, and you’ll explore computer science basics, as you build your own search engine and social network."
2 points • ok_ninja
This free course might be worth looking at:
2 points • nerdynamya
Go to Coursera and Edx. They have so many university-level courses that are completely free, especially computer science and programming.
18 points • TextOnScreen
Is Udacity a good place to start learning?
I'm new to this sub (I hope I'm in the right place!), so hi everyone!
I've decided to learn Python, mainly cause I'd like to use it to further my data analysis skills. I already have beginner's knowledge of Java because I took an intro CS course in college.
I've never used Udacity, but discovered it recently and it seemed like a good starting point. I'm mainly looking at these classes:
[Intro to CS] (https://www.udacity.com/course/intro-to-computer-science--cs101)
[Programming Foundations] (https://www.udacity.com/course/programming-foundations-with-python--ud036)
[Design of Computer Programs] (https://www.udacity.com/course/design-of-computer-programs--cs212)
After having a Python foundation I'd take these courses:
[Intro to Data Analysis] (https://www.udacity.com/course/intro-to-data-analysis--ud170)
[Intro to Data Science] (https://www.udacity.com/course/intro-to-data-science--ud359)
[Model Building and Validation] (https://www.udacity.com/course/model-building-and-validation--ud919)
Do you think this is a decent curriculum?
Or perhaps I should dive right in to the [Intro to Python for Data Science] (https://www.datacamp.com/courses/intro-to-python-for-data-science) course that's linked on the Wiki?? I'm scared all the Udacity courses might take forever to complete and I'll lose steam...
Thanks for any help and advice!
1 points • JacquesBoum
Hm, I'm gonna have a look into that.
I just worked through codecademy to get to know the syntax. Now I'm working on a small project with a raspberry pi and python. My plan is to do an online course about computer science next.
What do you think about that? :)
1 points • secretpala
What's your current major? getting a CS job or technical jobs without a cs/engineering degree could be very challenging unless you have a record of aptitude for programming/cs. Good news is given you're still in school, starting to commit in CS now will get you to become expert after several years. It could be difficult to do anything without any coding experience, so try taking courses such as https://www.udacity.com/course/intro-to-computer-science--cs101 or free python/java courses that are publicly available to see if this is your interest.
3 points • bellamira
trying to transition from Udacity's CS101 to CS212
The transition here is too hard for me. I am pretty confident in my beginner abilities and I am a good learner, but this is too big of a jump for me to make. I am almost "done" with unit 2 and I am having a hard time trying to learn all the stuff that CS212 is throwing at me at once - new expressions, new modules, new syntax, AND how to make sure your run times are as small as possible. It's just too much for me, even with researching on my own.
Does anyone know of a good intermediate course to kind of bridge the gap here? I really want to be able to write more efficiently before I jump into web development or something else like that. But maybe that's the only way to grasp some of these concepts?
Here's where I am:
I know the basics - loops, variables, dictionaries, etc.
I get list comprehension.
I kinda get lambda functions.
Regular Expressions and Generator Expressions are a mystery.
I don't understand how to know if your program is "efficient" or not in terms of run time, in practice.
Confused on some ways of writing: like I have seen in CS212 the teacher putting the return statement in line with the if statements, instead of tabbed in on a new line. I guess that's just... a thing that you can do in certain situations?
And that's about where I am giving up in CS212. Any recommendations are appreciated. Thank you!
1 points • sfltech
This audacity course is the best option IMHO: https://www.udacity.com/course/intro-to-computer-science--cs101
1 points • o0chris0o
Computer Science on Udacity, one of the best have seen so far. https://www.udacity.com/course/intro-to-computer-science--cs101
1 points • castlesauvage
Udacity’s free Intro to Computer Science course is invaluable to a new programmer.
1 points • MontanhaRussa
Hi there! Please take this advice with a grain of salt since I'm neither in social sciences nor in undergrad. I'm using my best judgment but I'd love to hear what other people have to say. Maybe u/pconrad0 can add some more insight. Also, full disclosure, I'm a graduate CS student and Data Scientist at a tech company. I see lots of social scientists going into Data Science because of skill overlap, so I have some idea of what might be useful.
A good first step should be an intro to CS type of class. The ideal is getting acquainted with the whole idea of what it is to develop a computer program, developing a computational 'intuition' and getting hands-on experience with your first programming language. For CS majors, that is CS8. As a plus, it is taught in Python, which is a super flexible programming language, used in many domains, including lots of data analysis. Unfortunately, CS classes (CS8 specifically) are pretty brutal to get in if you aren't in the major. I'm not the best person to recommend alternatives within UCSB, but with enough discipline, good introductory courses exist online and can be extremely helpful.
After getting some familiarity with programming, I'd go into the data analysis relevant skills. A good course for that at UCSB is PSTAT 134, focused on learning how to manipulate, analyse and visualize data, and to turn it into reproducible reports. This is extremely valuable for any type of research. Unfortunately, that class is pretty small with a big waitlist. There are many courses online that focus on data analytics, which you could take instead.
Anyway, that's my 2 cents. Sorry if it wasn't more encouraging. I'm gonna end it here since this reply is already too long, but feel free to reach out if you have any follow-up questions!
9 points • throwawaystickies
Interesting in getting into data science. Critique my game plan?
I am currently a medical coder who is interested in entering the realm of data science. My game plan is as follows:
** - Where I'm currently at
- **Take Udacity's Intro to Computer Science - Free, hopefully finish in 3 months
- Take Udacity's Programming Foundations with Python - Free, hopefully finish within 6 weeks
- Take Udacity's Intro to Data Analysis - Free, hopefully finish within 6 weeks
- Take Udacity's Data Analyst nanodegree - $999, hopefully finish within 4 months
- Apply for WGU's Masters in Data Analytics- $3,540/6 months, hopefully finish within 6-18 months
So with this goal, I will be able to hopefully get a data analyst/data science job within 28 months (2+ years) for only $11k+ and have more than sufficient skills to be an effective data scientist. I do hope I would be able to get at least a data analyst job after the nanodegree to start off and get out of the medical coding world.
Any criticism/advice? What else can I add/change in order to hopefully get a job when I finish either the Data Analyst nanodegree or the Master's?
3 points • jimmerdude
I'd recommend Udacity's Intro to Computer Science. More importantly than learning to code is learning to think about how to solve problems, then you can apply that knowledge to any language. https://www.udacity.com/course/intro-to-computer-science--cs101
3 points • CodeCamping
You're only 20 years old so your whole future is ahead of you. You can do whatever you want. There are many people in their 20's, 30's, 40's and 50's who have no coding background who learn to code and get a good job. If they can do it, why can't you?
Some people like coding. Others don't. You'll need to give yourself a chance to code before you know which type you are. Learning this stuff is difficult and it's important not to get too flustered as you learn. Go through no fewer than 3 courses before you make a decision.
If getting a job right away is important, I'd recommend looking into FreeCodeCamp. If you like design more than coding there is always web design. HTML and CSS is a great place to start to let you learn to create simple websites.
My recommendation to learn programming would be to look into the free courses on edX.org. Select the "audit" option. There is no need to pay for the certificate. The below course is from MIT. It's challenging, but doable.
Harvard has a famous class cs50x on edX. That's an alternative. If you want a gentler introduction you could start with this:
This is also free.
All new coders need to learn about Imposter syndrome. https://en.wikipedia.org/wiki/Impostor_syndrome Many coders don't think of themselves as capable even though they are. You just need to try. Don't worry about your background, just apply for the internships, jobs, etc. Let the people deciding make the choice.
> Is there any way I can bulk up my resume so I can do something tech-related while I'm not in school?
See the freecodecamp option. If you create 2-3 good web projects it shows employers you have a baseline of ability. That can get your foot in the door. Good luck.
4 points • CyberByte
I hope the Getting Started section on our wiki can be useful, also to /u/AntibacterialEast and /u/Rushlite.
The courses recommended by /u/AntibacterialEast are great, and Udacity has many nice courses as well (see the wiki). To just write programs that make use of ML algorithms, you don't need all that much math, but if you want to truly understand and fundamentally improve them, you do. There are plenty of online options (e.g. Khan Academy and Udacity/Coursera/EdX), but I wouldn't start there.
To program ML algorithms, you need to learn to program. I would probably start with that. There are many online courses and tutorials for that as well (e.g. this one). This will help you do the exercises in other AI/ML courses.
2 points • billybob99999
Introduction to Computer Science and Programming Using Python vs Udacity Intro to computer science vs Coursera intro to programming using python??
Hi guys, I am trying to self teach myself computer programming. I have a good background in math but dont want to go back to Uni if I can learn this on myself. I have a strong desire for learning and love learning. Recently, I have decided that I want to start learning programming in python because I dont know if I want to do programming or data science . They both appeal to me.
To get right to the point out of all these courses which one is best recommended? Which one will really teach me the fundamentals and prepare me to BREAK into the workforce as a jr developer?
Here are the links and let me know what you think
1 points • Zach00700
1 points • KlausStrife
Se você quiser enveredar pelo caminho do Python, tem um curso gratuito na Udacity que ensina Ciência da Computação através dessa linguagem. Você vai aprender dois projetos até o final do curso: um motor de busca tipo Google e uma rede social. O link pra ele é: https://www.udacity.com/course/intro-to-computer-science--cs101. É em inglês mas tem legendas em português, caso você precise.
1 points • An0d0sTwitch
this one? looks great, is it really free? Some sites make that confusing, like charging you halfway through, lol
1 points • DevAspirerKlaus
4 points • asz25
I am becoming a junior (11th grade I think?) in High school and I need a lot of guidance.
[WARING: HUGE WALL OF TEXT]
I've always had an interest in computer related subjects, although, I am leaning more towards the software line. I am about to finish grade 10 and I recently moved from Bangladesh to the United States. In short, I want to know what I must do in High School so that I can aim for a Computer Science degree. I've already seen those "Thinking of Pursuing a CS Degree" threads on the sidebar. I have additional questions. I, previously, have been studying the Computer Science subject in the Cambridge/British Council/O'levels system and I was kinda done with it. Not entirely due to the fact that I was a slacker back in grade 8 and 9 and I had to learn as much as I could in the second half of grade 9 and the first half of 10. After coming to America, specifically Florida, I've arrived at a school with little computer courses. There is Digital Design and Intro to information technology. I received credits for the latter due to my grade 9 report cards. I am not taking on Digital Design because it's divided into 3 parts and I can't finish all three in the next two years (I don't know much about it alongside the American education system). In grade 11 I will be taking Algebra 2 Honors, Psychology, United States History, Chemistry Honors, Creative Writing and English 3 Honors. I’ve already completed most of the Algebra 2 and Chemistry syllabus, so those two along with Creative writing and English 3 won’t be a big deal. I ,however, don’t know how to go towards Computer Science during this year and the next year. I want to take Calculus as well but I’m sure if I can skip Pre-calculus and go straight into Ap calculus or something in grade 12. Most importantly, how do I go about dealing with Computer Science? I just started using Khan Academy for Computer Science and I discovered that it’s quite different from what we learnt (and more interesting!). I also found a website called “Florida Virtual High School” where I could possibly take AP Computer Science, now or next year, along with a variety of programming courses. I unsure about my future actions, please help me and give me guidance.
Extra info: I want to be some sort of Software developer. I'm also interested in web developing and bits of game development (Being a game developer used to be my main goal back when I was much younger). I also have similar but lesser interest in the hardware aspects of computers, but, Computer Science seems like a better choice for me.
Edit 1: I also found this super helpful reddit post which links to many different free online programming/CS courses. I am looking into them now
Edit 2: I have found a few courses with interest me immensely.
All of them seem interesting. I want to check out "CS 101" courses as the "Intro to theoretical computer science" has that as a prerequisite. I also have the entire summer vacation to study! Isn't that great?
7 points • MoistBirthday7
I like the "How to Code: Simple Data" as an introduction (along with the "How to Design Programs" book that it's based off of - adding to this tight integration of resources further is the fact that it uses Dr Racket, an IDE that is was created by the authors of the same book, which, again, the course is based off of), and I really enjoyed "The Little Schemer", and associated books. The first module might be a bit slow, but it picks up quickly after it lays the foundation. I tried cs50 but didn't like it a whole lot, but that's a popular option using C and Python.
Have some bookmarks: >https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
And some general curriculum sources: >https://github.com/ossu/computer-science
Lastly, if you're an Emacs or Linux user, I highly recommend the following: >https://www.gnu.org/software/emacs/manual/eintr.html
The former because learning the ins and outs of your editor will save you a lot of time later, and a similar logic applies to the latter. It's also nice to have tangible, utilitarian project to work on (like crafting slick scripts to automate things, and tuning your editor to your liking). I always hear the advice "just get started on something you want to build", but if you don't know how to program, you don't know what you want to build. IMHO, these last two offer a more pragmatic solution along the same line of reasoning.
3 points • 54m33r
There are some great MOOCs:
Also, I'm happy to chat. Feel free to message me.
And, good luck!
2 points • woofcpu
Computer engineering or electrical engineering is probably your best choice and not something engineering management related. Some universities don't have computer engineering, but group it into their EE program and it's pretty similar. I did EE with an emphasis in computer engineering and a minor in CS. If you end up liking software engineering (like me), many companies will hire people with EE degrees as long as they know algorithms and CS fundamentals.
I would highly recommend you try some free online courses to explore it before college. If you decide you like it, that's great and your classes in college will be easier. Coursera and udacity have a ton of good content and you can just choose audit and it should be free.
https://www.udacity.com/course/intro-to-computer-science--cs101 (intro to programming)
https://www.coursera.org/learn/build-a-computer (digital logic related, not sure on difficulty)
https://www.youtube.com/watch?v=ve1S1x9fADE&list=PLyG2VxFPjWqDDbo1FKEvzMvj33fI22weJ (youtube series on digital logic)
1 points • KeepingItClassy11
Udacity has a couple of nice interactive (and free) courses for beginners:
3 points • bmw95
Below is a list I set up for myself to get better at python and algorithms. Might help you as well :)
1 points • fluff12321
Sure, here's a few I'd recommend that were a good combination of fun/interesting & well explained:
Intro to Python: I took several short/interactive tutorials to get the basics down: - https://www.codecademy.com/learn/learn-python - https://www.codeschool.com/learn/python
Introductory CS: - https://www.udacity.com/course/intro-to-computer-science--cs101 - https://www.udacity.com/course/intro-to-relational-databases--ud197
AI: - https://www.udacity.com/course/intro-to-artificial-intelligence--cs271
Machine Learning: - https://www.coursera.org/learn/machine-learning
Algorithms: - https://www.coursera.org/learn/algorithms-part1 - https://www.coursera.org/learn/algorithms-part2
More intermediate/advanced, but really excellent: https://www.udacity.com/course/design-of-computer-programs--cs212
After the introductory stuff, you can take AI, ML, or Algorithms in any order you find appealing. Enjoy!
-8 points • A_History_of_Silence
Fair question, and I have been asked this before, since I constantly advocate against Udacity and its horrendous, awful courses.
Unfortunately, it's a lot. Like more than will fit in a reddit comment and is worthy of a very long and detailed blog post that I may make some day if I find the time, haha.
In the meantime, I encourge you to survey this course to see for yourself. Good luck!
E: As someone with only a rudimentary statistics education, here is what I consider some excellent criticism of Udacity's Statistics 101. I think he goes light on them. My impression of their courses that I have evaluated, including the one I linked before this edit, are similarily fundamentally bad on many levels.
E2: It's not that I am incapable of articulating my criticism, it's that it would be a week-long project to do this acceptably, and unfortunately I simply do not have that kind of time right now. It's that bad.