What is your favorite online coding courses?
This week Code Newbie is talking about online courses based on their latest podcast episode. Code Newbie announced on Twitter that they will be posting resources to help developers decide which online courses to use and what to look for in an online course.In preparation for this week's topic, let's talk about online courses. Have you done any online courses? Feel feel to share your favorite online courses about coding in this post. Don't forget to include the links so other members can find these courses.
Udemy has several good courses. It is my go to resource to pick up a new skill, if I am trying to get more than a cursory knowledge. filter by rating 4* and above only and recent courses with many subscribers
I love the Coursera Python, AI, and ML courses, plus they have 4 excellent electron microscopy and/or nanotechnology classes. I find the level of the material more in depth in all Coursera courses versus Udemy or others which often fail to mention highly technical material. I don't like the lack of community at Coursera, but it's about the same in Udemy and elsewhere. I am frustrated by the huge number of unprepared students in MOOCS and the amount of instructional and community time devoted to repeating directions from the syllabus and background material from prerequisites. I also do university classes that have online material. I'm doing a couple of PSU graduate math courses that I love, and the lectures in MIT OCW classes are an excellent supplement to any topic. Harvard's CS50 remains one of the best ever intros to computer science. ESPI offers free spatial data courses every once in a while; I haven't finished one, but the online community is well prepared for the topic.
I agree with Kleo that Harvard's CS50 (available on EdX) is one of the very best classes out there. That class was my very first exposure to coding or CS, and I love that it starts you off in C and with Linux. https://www.edx.org/course/cs50s-introduction-to-computer-scienceI also enjoyed MIT's series of intro classes taught in Python on EdX. It looks like the first class in the series is is gearing up to start again in January. https://www.edx.org/course/introduction-to-computer-science-and-programming-7Another extremely high quality set of classes on EdX is MIT's Computation Structures three-part series. It covers an intro to information theory and computer architecture with a phenomenal series of online labs in which you build your own library of logic gates, use those to model an ALU, and then finally model a 32-bit processor. The classes also introduce assembly. For reference, I found Georgia Tech's High Performance Computer Architecture class, which I took as a graduate student in their OMSCS program, very easy with Computation Structures as my only directly relevant preparation. The content may sound intimidating, but I think it's actually very accessible to people who are new to CS. https://www.edx.org/course/computation-structures-part-1-digital-circuitsI also highly recommend Stanford's algorithms course, available on Coursera. It looks like the class has been split into multiple parts and is now offered as an "Algorithms Specialization," but it appears that the content is still the same. I found the coverage of graph algorithms very useful: It's material that I ended up using frequently in my day job. https://www.coursera.org/specializations/algorithms
Looking for recommendations:Here's my mental model of software engineering skills using programming languages as analogies:1. C - the raw ability to make a machine do a thing. Getting better at this makes it possible to make a machine do more things2. Haskell - the ability for a software engineer to do less work by reducing mental footprint of system state. This allows a single engineer and entire teams to build more complex systems by being able to take parts of the system as working "correctly" without thinking about it.3. Lisp - the ability for a software engineer to do more work by compartmentalizing systems into effective abstractions. This allows a single engineer and entire teams to better specialize and delegate, hence build more complex systems through composition of static blocks and of runtime custom blocks.I only really ever see courses aimed at software engineers in the (1) camp. I don't see (2) or (3). (2) is somehow relegated to academia. (3) is seen as the end result of some magic senior-ing process.Does anyone have good course recommendations for (2) and (3)?