A free (or mostly free) computer science education

We programmers are lucky. A world-class education in the subject we practice is literally just a few searches away. There are myriad free and low-cost online courses available, and if you’re not interested in the extras that come with taking actual cou…


This content originally appeared on DEV Community and was authored by Jason Barr

We programmers are lucky. A world-class education in the subject we practice is literally just a few searches away. There are myriad free and low-cost online courses available, and if you're not interested in the extras that come with taking actual courses you can just crib the notes from literally hundreds of course websites from university computer science courses all over the world.

In fact, if you've ever tried to put together your own self-study computer science/programming program you might find you have the opposite problem from what you'd expect: there's simply so much information out there that it's hard to know what to use.

Here's a list of online courses and a few other resources I've put together to study for myself in lieu of getting an actual degree.

Note that I'm already employed as a programmer, so a degree isn't necessary for me to work in the field. Your experience may vary, and you may decide an actual degree is the way to go. That's fine! There's nothing wrong with that. Sometimes I think we get stuck in this hacker mentality where we feel like we have to go our own way instead of following an established program. If a degree or other formal academic program is right for you, that's totally cool. Do what works best for you to help you meet your own goals.

If it's not, here's one way you might go about educating yourself.

The subjects

I wanted a list of resources that would cover most of the foundational subjects you would study in a top university CS program. These include:

  • Programming
  • Object-oriented programming and design
  • Data structures and algorithms
  • Low-level programming
  • Computer architecture and organization
  • Operating systems
  • Software engineering
  • Databases
  • Networks and networking
  • Programming languages

I also picked some "electives" based on my own interests:

  • More advanced algorithms
  • Parallel and distributed programming
  • Data science and machine learning
  • Functional programming
  • Interpreters and compilers

I also added some relevant subjects in math, since as an arts major my collegiate math background was inadequate for a CS education:

  • Precalculus
  • Single variable calculus
  • Discrete mathematics
  • Linear algebra

I've also added a physics course on electricity and magnetism, as it's a real-world prerequisite for the MIT Computation Structures course.

How I chose my resources

I decided to prefer existing online courses that have certificate options, although these usually require payment of some kind. I find that having an external reward like a certificate helps keep me motivated and keeps me coming back to study when I'm tired after work and would rather just veg out and watch Netflix.

Even though in many cases I've linked to certificate programs that list a cost, you can access the content for the vast majority of courses I've picked for free, although there may be extra functionalities (like grading) that are unlocked by paying money.

This is simply my preference, and if you decide to choose other resources that are completely free that's totally fine; do what works for you.

I couldn't find adequate courses for all the relevant subjects, so in some cases I've listed books, video lectures, and materials available from course websites to fill the gaps.

I'm considering each top-level bullet point to be roughly the equivalent of a 3 credit, semester-long university course (except as noted), but YMMV. Using that as a guide, the CS courses on this list equal a 60 credit sequence (plus 3 credits for physics, 6 for data science, and 9 for math not counting Precalculus, which wouldn't count towards degree requirements for most CS programs). That's about average for major requirements in an undergraduate CS program here in the United States.

The program

Introduction to Computer Science and Programming

Object-Oriented Programming

Software Design and Engineering

Data Structures and Algorithms

Low-Level Programming

  • DartmouthX, C Programming with Linux
    • Getting Started
    • Language Foundations
    • Modular Programming and Memory Management
    • Pointers and Memory Management
    • Advanced Data Types
    • Linux Basics: The Command Line Interface
    • C Programming: Using Linux Tools and Libraries

Electricity and Magnetism

Computer Architecture and Organization

Operating Systems

Databases

Networking

Programming Languages, Interpreters, and Compilers

Parallel, Concurrent, and Functional Programming

Data Science and Machine Learning

  • MITx, Statistics and Data Science
    • Probability - The Science of Uncertainty and Data
    • Fundamentals of Statistics
    • Machine Learning with Python: from Linear Models to Deep Learning
    • Capstone Exam in Statistics and Data Science
    • Data Analysis: Statistical Modeling and Computation in Applications
  • Stanford, Machine Learning

Math

For further study

The above list will give you a solid foundation in computer science and programming on par with what you would get from a BS degree. These are obviously just suggestions, though; feel free to tailor your own study to your interests and the things that motivate you.

If data science isn't your thing, maybe a course on iOS or Android app development will scratch your itch. You could also look into cloud-based development with programs from AWS or IBM. Chances are good that, if you've got an interest, there's a course out there for you.

I hope this list is helpful for you as you seek your own path to a well-rounded education as a developer.


This content originally appeared on DEV Community and was authored by Jason Barr


Print Share Comment Cite Upload Translate Updates
APA

Jason Barr | Sciencx (2021-07-01T01:13:37+00:00) A free (or mostly free) computer science education. Retrieved from https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/

MLA
" » A free (or mostly free) computer science education." Jason Barr | Sciencx - Thursday July 1, 2021, https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/
HARVARD
Jason Barr | Sciencx Thursday July 1, 2021 » A free (or mostly free) computer science education., viewed ,<https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/>
VANCOUVER
Jason Barr | Sciencx - » A free (or mostly free) computer science education. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/
CHICAGO
" » A free (or mostly free) computer science education." Jason Barr | Sciencx - Accessed . https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/
IEEE
" » A free (or mostly free) computer science education." Jason Barr | Sciencx [Online]. Available: https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/. [Accessed: ]
rf:citation
» A free (or mostly free) computer science education | Jason Barr | Sciencx | https://www.scien.cx/2021/07/01/a-free-or-mostly-free-computer-science-education/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.