At first I thought I'd follow along the MIT OCW 6.0001 course, but it's like eight years old and on a far outdated version of Python and Anaconda. When I tried to install the software as per the syllabus's instructions, I found the download links were dead. I had to spend a few hours going through archives to get the required Anaconda 4.1.1 and Python 3.5 only for it to not even work upon installing. When I tried opening the Anaconda navigator, the logo would pop up, it would say initializing, and then it would just crash before it could launch. Referring back to the syllabus was of no help because the instructions there were literally as brief as "Install Anaconda and Python 3.5 via the installer".

I wasn't able to troubleshoot any of this because all the google results for this question were full of jargon I sure as shit won't be able to understand until I finish the course in the first place. I have no idea what an IDE is, what a pip is, what a spyder is, what a path variable is, or why one would want to use the command prompt.

I was actually able to successfully install the newest versions, but I can't use these for the course because I'm an absolute beginner who has no frame of reference for what differences are actually going to be important.

Now I'm in the process of looking elsewhere. Problem is, I can't find anything like the MIT OCW course. I really loved the videos of actual lectures and the fact that I didn't have to enroll or sign in to anything. There exist a lot of Python tutorials on the internet, but I was hoping to also get an introduction to computer science in general because I need to learn the fundamentals of the subject. I'd like to have a deeper understanding than one would get by just learning a computer language without any of the theory behind it.

Does anyone have any recommendations for a more recent curriculum? Ideally I'd love it to have lecture videos, but I'll be content with just problem sets and a good textbook if it's up to date and has a robust step by step guide for setting up.

  • buckykat [none/use name]
    ·
    1 year ago

    There are so many layers of abstraction involved in the process of using modern programming tools on modern computer hardware that it would involve multiple PhDs to have anything but a cursory understanding. Even a cursory understanding is multiple college classes: How does the compiler (or interpreter) turn the code you write into machine code, how does the CPU execute that machine code, how do the logic gates fit together to make a CPU, how do transistors fit together and switch to make logic gates work, how does electricity flow through a circuit?

    All of these questions have fascinating and very complicated answers but none of them are actually part of Computer Science. Computer Science is a math discipline. It can be done with pencil and paper. The actual computers just make it less tedious.

    • cosecantphi [he/him]
      hexagon
      ·
      1 year ago

      Considering I know almost nothing right now, I really am just after that cursory understanding, and I am willing to do multiple courses of self study to get there. I can't afford to go back to school right now, but nevertheless I'm interested in learning this stuff. I'll just have to do it on my own with whatever resources are available for free on the internet.

      Right now I'm about half way through Charles Petzold's Code, and that's been very helpful. I've been having a lot of fun messing around with circuits in Logisim. But I'd like to get a more formal overview of the same concepts, including the math behind it that introduction to computer science courses typically teach. I posted this thread specifically after having trouble setting up Python, but that isn't the entire scope of what I want to do.

      • DroneRights [it/its]
        ·
        1 year ago

        In modern software engineering, the goal is not to understand what's going on under the hood. To write high quality code using principles that ensure any user can implement your code without understanding it. Architectures and language that abstract the nitty gritty away from the programmer.

        Do you want to learn software engineering or computer science?