Open Source Society University – Path to a free self-taught education in CS

  • I'm 37 and live in one of those lesser-known countries whose diplomas likely don’t hold much weight elsewhere—but that’s not the point. I’ve decided to change my profession. After many trials and errors, I studied Python. I wrote some scripts and bots, but I kept feeling like something was missing—I didn’t really understand programming.

    Then I discovered OSSU and, after reviewing their curriculum, I realized just how little I actually knew about computer science. I started over from scratch, even relearning math. Because of the language barrier (yes, I learned English by forcing myself to study in English), my conversational skills are still shaky, and this text was polished with the help of GPT.

    I’m not thinking about a job just yet. My current goal is to get a solid academic education, and I believe OSSU is one of the best initiatives ever created—accessible to the entire world. It's not just about being free. Maybe the best universities are in the U.S., but compared to what's available in my country, the OSSU curriculum is several levels higher in both quality and structure.

    As for work, I plan to contribute to the open-source world, hoping to make the world a better place, just like the creators of OSSU did. Education should be accessible to everyone—not just a privileged few.

  • If you're an experienced engineer that wants to give back to learners, OSSU is a great place to do so. This can look like:

    - Setting a regular time that you'll pair (or mob!) program on a side project of your own with OSSU learners. - Developing familiarity with one or more courses in the curriculum and responding to students who have questions or are stuck. - Attending weekly check-in meetings, sharing what you are working on and listening to what learners are working on.

    To do so - Visit our Discord server: https://discord.gg/wuytwK5s9h - And ping me @waciuma or the @tutor role

    I'm one of the leaders of OSSU and we agree that community, networking, and projects are part of a complete education. That's why we celebrate not only the professors and universities creating free courses, but also the many engineers and practitioners that have volunteered with OSSU learners over the years. I hope some of you will join that group!

  • I run a comp sci education program to help students self direct their education[1]. We sometimes reference the OSSU curriculum.

    Althought there are lots of benefits to the self-taught route, there are some caveats which students should be aware of. You will have to work harder on the "signaling" and networking. There are definitely social benefits in being associated with a university. And a lack of degree will mean you're "marked"[2], which you'll have to overcome. A setback or mistake will be attributed to your lack of degree, whether justified or not. And some hiring managers can't take the political risk of hiring a non-degreed candidate. Not insurmountable, but this means we work on it from day one. If you do decide to self-direct your education, the benefits are that you learn faster and don't waste time spining the hamster wheel, so to speak, to grind out courses. Everything you learn is in context and relevant. If you realize you miss some fundamentals, you'll just go back and learn those concepts/topics. It's a different way of learning, which imo, is inevitable for technical professions. But it's not for everyone, and some students just vibe with it more.

    What's sad is that many students are sort of forced into the self-taught route, because they don't have the financial resources to go to college/university. And if they're not aware of the trade-offs, they could really struggle.

    [1] https://www.divepod.to [2] https://en.wikipedia.org/wiki/Markedness

  • I was immature right out of high school and fumbled a really good opportunity to finish a degree in computer science. After getting married and having kids I later went back and quickly finished a degree in IT, but CS was always my first love.

    A couple years ago I found myself in a place where I would really benefit from finishing my CS education. I put a lot of thought into getting a true second BS degree, a post-bacc, bootcamps, etc but eventually settled on OSSU.

    It’s taken me longer to get through it than I wanted (life happens) but I have nothing but positive things to say about the curriculum so far and about how it’s affected my career and honestly my own happiness.

    I blog about it occasionally. This is the first one and explains why I chose OSSU over the other options available to me: https://dustinbriles.com/ossu-blog-1/

  • A better alternative imo https://teachyourselfcs.com

  • You can definitely make the self-taught path work. I'm proof of that and have been working in industry for over 20 years. However, what I will say is the following: there are certain companies and roles which you will never be able to access. These are often times the best roles, best companies, have the most money, etc. A degree isn't just the time spent studying and knowledge -- you can do that part yourself. What's more valuable is the network and access to the alumni network of others who will hire you into their company just because you went to the same school as them. It's a big club and you won't be in it if you decide to self-study. That's the cold, hard truth.

    So what's left for someone self-taught with no degree? You are left with all the jobs the others don't want. You'll be flipping through the crazies, outright scams, poorly capitalized companies, or places that are already in a state of distress. VERY rarely you will find a real job that you can plan to stay at for any length of time. You WILL be paid less, and you're more likely to get taken advantage of. You will have a harder time getting multiple offers at once, because your overall demand is lower. So that erodes your position in the market and over time it will feel like you're on a completely different tract financially. You will need to work twice as hard, because finding a new job is much harder, even if you're good. You will constantly be doubted, by first yourself and imposter syndrome and next by those around you who have degrees. Make one mistake and the consequences are that much more dire.

    It's better than nothing, but if you have the opportunity to go to school (I didn't), do it over the self-taught route.

  • So several people in this thread have talked about academia giving you a network, and getting jobs via that, but have also conflated that with companies only hiring from particular schools.

    The network of contacts you make through university and your careers is a mechanism by which you hear about jobs you might otherwise never get the chance to apply for. That’s a very real thing, but will tend to be dominated by contacts you make after university as your career progresses.

    The other thing of needed a degree from a particular university, or a PhD, isn’t so much about a network as that degree being a shibboleth. The person reading your job application sees that and knows there are questions they don’t need to ask.

    These are both things you can, and may need to, work around if you go down the self taught route. Depending on the work you want to do you may need to make sure you do work which either you can point to or other people will see so that you hear about those jobs, or get a referral to avoid the normal job requirements.

  • One of the problems with not having a college degree is that companies won’t even look at your resume. It gets filtered out before a human even looks at the candidates.

  • I wonder how much the 'free and open source' requirements of this curriculum hold it back. Someone serious about self learning shouldn't be hesitant to invest some money in good material

  • I am a college student, about to begin my 3/4 year of the course. Most of the things about networking and all don't apply to me, because although my Uni is one of the best in the country, it is mostly focused on humanities and the CS school (or any engineering school) is quite new with only batch of graduates till now.

    I am certainly no novice, easily one of the top 10 in my school and definitely top 2 in my year, though that does not mean much here.

    So my question is should I focus more on projects now, or do OSSU instead, or try to do both?

    https://drive.google.com/file/d/1RoHHwBbZfRE-LdC7Ow3sQvX73c5...

  • Maybe getting a degree counters any social shortcomings for most people, its a piece of paper that will get your foot in the door so to speak. It says "I've spent 3-4 years working on this area, have at least half a brain and am committed". So even if you can't speak very well to people (yet) you still have something going for you. If you're self taught, you don't have any of that so you've gotta be pretty good socially and at networking, or just really really lucky. I think being good socially breaks all the rules honestly and is like a superpower, you could probably talk your way into most things with little in the way of real skills.

  • Shout out to Stanford that made it possible to start a CS education for free, for a Romanian kid who could not afford it (me). The free video course they have had up there since about 20 years was one of the foundations of my programming career now.

  • Not gonna lie, the amount of defensiveness people have in these threads, both camps, is a bit sad.

  • This is very interesting. It is great also as a reference for those that already now some CS. Ideally none should reside on youtube, given it is named "Open Source", but I get that a lot of resources reside there.

  • As an avid designer of CS courses and curricula in the not-so-distant past, I would like for it turn into a success criterion that your course gets included in this listing.

    Back when I was involved in designing the BSc education at the University of Copenhagen, I remember referring the committee to the ACM/IEEE-CS/AAAI Computer Science Curricula. Great to see that there has been an update to these recently, complete with a Generative AI section and all :-)

  • Saylor (Michael saylor) has saylor academy. It’s a feee resource, and you can get academic credits if you do the exams.

    The information is very dense, but goes into more detail dan your average CS degree. Quite low level and tricky questions

    Not as accessible. Just a whole bunch of text. Kind of old school, but at least it’s out there

  • To what end?

    Surely a community college level education is more conducive to getting a job. And if aim is to make money I'd probably attempt something closer to neal.fun or levels.io not this. If you're not getting the piece of paper then you maybe as well yolo it

    What does that leave? Straight interest only learning for the sake of it?

  • Don't try to be entirely self-taught. Everyone needs guidance and feedback from experts in the domain; otherwise you are certain to misunderstand things, have large blind spots (truly blind; you'll be unaware of them), not understand how things apply in real situations, and have no exposure to the latest knowledge.

    It doesn't have to be via college; there is apprenticeship, even if usually unofficial in IT, at many jobs. (College can be fantastic in many ways if you have the opportunity - don't let the reactionary politics ruin your life-changing opportunity - especially if you are intellectually curious.)

    Also, be very choosy about who you learn from; I'd be much more choosy about that then about what you learn, or even where I work or the job I do - do anything to work with and learn from the best people. The range of knoweldge and skill in the real world is almost impossible to conceive of, and a lot of it is so much BS. If you learn from C-level people, you will have C-level knowledge and skills and never know better until you meet someone who is B-level or A-level - there are entire organization and towns of C-level people. One big advantage of going to someplace like the Bay Area is the community of highly-skilled people, many on a level you are unlikely to meet in most other places, and being exposed to the newest ideas. Just being there can raise your game, if you take advantage of it.

  • What I’m missing is some math like differential equations (both ordinary and partial). Does anyone have a good (and free) resource on that?

  • It’s worth making this very clear for learners: A Computer Science education is **not** the thing that will prepare you to work and make money in many real-world _jobs_.

    Some? Yes. Many? No.

    This blurb from one of the course pages (unintentionally) says it well:

    > Because the point of computer science isn't to teach you a language. Or to teach you to code. Or to teach you to be a fullstack software engineer. Computer Science is a very narrowly-applied applied math with wide-ranging practical usage. But if you strip away all the qualifying language, it's math. Which means it has certain overarching rules that are completely, totally independent of your implementation language.

    In short: the point of Computer Science courses is not to teach you to do the thing that you will be doing when employed at the company that pays you.

    Another:

    > if you want to read white papers you're going to want to read Lisp

    Most jobs are not about reading or writing white papers. Almost all Computer Science courses are an _academic_ pursuit, not a practical one, and are taught as such.

    If your goal is to _work_ in the industry, this is _a_ path, but it is a very inefficient one.

    Depending on what work you are happy with, 80%+ of the content here will not contribute to your success.

    Will learning the things taught in these courses exercise your problem-solving and other mental abilities? Yes. Will they teach you broadly-applicable principles that you could apply to your work? Hard _maybe_, depending on their teaching and on how well you learn and generalize. In any case, you may well end up doing work that utilizes little of this.

    If you want to work in research, a math-or-fundamental-sciences-heavy field, or with teams of folks creating new programming languages or database engines for example, then certainly some of these courses (and more) are required.

    But it’s worth warning potential learners that a full Computer Science education is _neither an efficient nor a necessary path to a job in the field_.

    What is?

    One example: There is much available and satisfying work in building user-facing applications like web and mobile apps.

    If your goal is to do that kind of work, then it’s best to relentlessly focus on the things that you will actually be doing at your job: Building things.

    Broadly speaking, employers pay you using the money that they are making (or hope to make) by solving problems and/or providing services using software/applications that you will help write. So practice writing it. Learn to build real things: Mobile, web, or desktop apps that do a thing that _you_ would want to pay for. Find courses that teach that. Practice it. Hit a wall, research and figure out how to overcome it. Repeat. Submit PR’s to open source projects, especially ones where experienced maintainers review your code. Learn from that feedback. Read their code and understand how it comes together to create the app you are using. Have LLM’s review your code, even, if no skilled human is available.

    Practice working with other people. Learn how to write and communicate clearly and unambiguously.

    Find and fix bugs in open-source codebases.

    Embrace that working in the field means a commitment to non-stop, career-long learning.

    Later, after you’ve freed up mental space by mastering the basic mechanics of programming, begin researching and applying the techniques and methods for writing code that other people find pleasant to read, interact with, and modify/extend.

    Build something that you can show to prospective employers.

    You will also learn many more things from the people you work with.

    Many of the hard skills you will learn through doing _these_ things will directly transfer to the work you do, because _it is the work you will do._

  • Awesome collection of resources! Although:

      After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science. Congratulations!
    
    Is not strictly true. I've been part of CS program accreditation, for example:

    https://www.abet.org/accreditation/accreditation-criteria/cr...

    The program outcomes for a CS degree accredited by ABET is:

      Graduates of the program will have an ability to:
    
      1. Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
      2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
      3. Communicate effectively in a variety of professional contexts.
      4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
      5. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
    
    Really, this list of resources only speak to #1 and #2. A little bit of #4, but it seems to be an afterthought in the list of resources. However, self-study is not going to get you #3 and #5 at all. Typically in order to fulfill these requirements, the curriculum would include much more than just the technical topics listed.

    Indeed, OSSU says that included courses must "Match the curricular standards of the CS 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science"

    I'm familiar with this document. It includes this:

      The education that undergraduates in computer science receive must adequately prepare them for the workforce in a more holistic way than simply conveying technical facts. Indeed, soft skills (such as teamwork, verbal and written communication, time management, problem solving, and flexibility) and personal attributes (such as risk tolerance, collegiality, patience, work ethic, identification of opportunity, sense of social responsibility, and appreciation for diversity) play a critical role in the workplace. Successfully applying technical knowledge in practice often requires an ability to tolerate ambiguity and to negotiate and work well with others from different backgrounds and disciplines. These overarching considerations are important for promoting successful professional practice in a variety of career paths.
    
    The reason I'm saying this is because often times, an undergraduate I'm advising will come into my office with a schedule of 12-15 credits of tech/math/science. They will explain to me "I only want to take technical courses, I don't see the purpose of taking courses in English or History, they are a waste of time." And I get that, I felt that way in school too. I thought those courses were preventing me from learning CS, but it was only after I left school when I realized all those "soft" courses I had taken actually prepared me to face the challenges I would in CS.

    So I will continue to watch this resource, because I love a good compendium. But I would say they should not say what they provide is "equivalent of a full bachelor's degree in Computer Science" because even the standards they say they are trying to meet indicate they fall short.

  • If you do not have that much time, IMHO teachyourselfcs.com is better

  • But... are there _any_ good resources for _networking_ / _integration_ for self-thought cs ppl? This is the missing elefant in the room imho. With AI automating lower-level upwork/fiver/freelancer jobs, good luck getting started in an actual career.

  • It's an ultimate roadmap for self-taught CS students!

  • Ah yes more people in CS are needed, let me check that chart with the most % of jobless people out of all fresh grad majors, cs is almost leading now.

  • Let's focus on talking about the self-taught resources please, don't talk about other off topics, not everyone learning to find a good job on big companies, the reality is, when a man/woman want to self studying CS, he/she age is already not a fit for those companies.

    We want to learn even after the right age, just because we love the computer.

  • is there a similar repo for machine learning/AI?

  • [dead]

  • [dead]

  • [dead]

  • [dead]

  • [dead]

  • [dead]

  • Interesting stuff

  • And within 24 months will have been a total waste of anyones time doing it