ossu / computer-science

:mortar_board: Path to a free self-taught education in Computer Science!
MIT License
165.68k stars 20.94k forks source link

Finished OSSU, ask me anything #727

Closed spamegg1 closed 4 years ago

spamegg1 commented 4 years ago

(I'll update this as I go along)

Proof of completion (you have to scroll sideways a bit)

Originally written: Tuesday, June 9, 2020

Course-by-course review (FINISHED!)

Took 2 years (late May 2018 - early June 2020)

My significant advantages:

Disadvantages:

I am Strongly biased towards math and functional programming, biased against object oriented programming. I learn by doing, I dislike long lectures/concepts/info dumps.

What happened in 2 years?

Courses I took, roughly in this order:

Courses I took that are NO LONGER on the curriculum:

Courses I took that are NOT on the curriculum:

Courses I did NOT take that ARE on the curriculum:

Things I wish I knew / I wish somebody told me before:

The "shining core" of OSSU

Best Courses:

Most useful courses: Core Theory and PLABC (by far)

Takeaways:

What now?

The Most Difficult Thing:

The Most Important Thing:

ghost commented 1 year ago

Hi Sir,, can you tell me please what is PLABC mean? I google it but cannot find answer. it is a course? Thanks for your answer.

WildRyc commented 1 year ago

Programming Languages: A, B, C. A review by spamegg1 can be found here: https://github.com/spamegg1/reviews/#plabc

(I've edited this response for readability / waciuma)

TheChronicMonster commented 1 year ago

I am beginning an intensive 6-month program that will imitate what is usually completed in two years. It's not all OSSU curriculum, but there will be elements.

If that's of interest, I'll track my time and put it in a sharable spreadsheet.

On Thu, Sep 1, 2022 at 2:46 PM Cole D @.***> wrote:

Over the two years you worked through the curriculum, do you have a total hour count of the time you spent, or an estimated hours/week? The OSSU GitHub estimates 2 years at about a 20 hour/week pace and I'm curious to see if that pace is actually true in practice.

— Reply to this email directly, view it on GitHub https://github.com/ossu/computer-science/issues/727#issuecomment-1234707557, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACINWGAWMU4P76H6OY5HTSDV4EBYXANCNFSM4NZL2YAA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

spamegg1 commented 1 year ago

I am beginning an intensive 6-month program that will imitate what is usually completed in two years.

PLEASE don't do that. This curriculum should normally take about 3 years, I skipped the math since I used to teach it. Not to sound arrogant, but if it took me 2 years, it will probably take you longer.

The human brain takes quite some time to properly absorb so much information and convert it to knowledge. I've seen a few learners who tried to go quickly like this, and they did not retain much knowledge.

Finishing the curriculum in a short amount of time is NOT something to be proud of. Finishing the curriculum in a properly long enough amount of time, is.

I am now beginning to regret doing this AMA, as it gave the wrong impression I think. I never had a time goal.

My intention was to say "look it's a long journey, and a lot of things will happen during it, many of them unexpected and outside your control; you need mental and emotional resilience to overcome hurdles."

But people seem to be ABSOLUTELY OBSESSED WITH THE AMOUNT OF TIME instead. I've never understood this, but it seems like people are time-optimizing freaks. I wish I'd never mentioned the amount of time. Ironically it's too late now.

The mentality to get through the curriculum, in my opinion, is quite the opposite: not worrying about time, but accepting it as a long journey instead, going at your own pace instead of planning a time table.

therealironjaw commented 1 year ago

I agree. It’s not about the time period. It’s about whether you understand the subject and topics at hand. Skill as a good or mediocre programmer or any expertise in CS comes from experience and learning gradually and steadily. You need to let things absorb. I’m doing CS50x right now and the learning curve is steep but I am also maths before I start OSSU and no way will I be done in 6 months. Please do remember to take things steadily and not overcome to pressure.

But if you believe this is the course you want to take then I wish you the best of luck.

Written from my iPhone

On 11 Oct 2022, at 09:06, spamegg @.***> wrote:

 I am beginning an intensive 6-month program that will imitate what is usually completed in two years.

PLEASE don't do that. This curriculum should normally take about 3 years, I skipped the math since I used to teach it. Not to sound arrogant, but if it took me 2 years, it will probably take you longer.

I am now beginning to regret doing this AMA, as it gave the wrong impression I think. I never had a time goal.

My intention was to say "look it's a long journey, and a lot of things will happen during it, you need mental and emotional resilience to overcome hurdles."

But people seem to be ABSOLUTELY OBSESSED WITH THE AMOUNT OF TIME instead. I've never understood this, but it seems like people are time-optimizing freaks.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.

dtnwen commented 1 year ago

(I'll update this as I go along)

Proof of completion (you have to scroll sideways a bit)

Originally written: Tuesday, June 9, 2020

Course-by-course review (FINISHED!)

Took 2 years (late May 2018 - early June 2020)

My significant advantages:

  • used to teach college math. So I skipped math classes

    (there used to be A LOT MORE math in the curriculum, some of you might remember!)

  • worked on OSSU full time

Disadvantages:

  • easily demotivated, difficulty feeling rewarded

I am Strongly biased towards math and functional programming, biased against object oriented programming. I learn by doing, I dislike long lectures/concepts/info dumps.

What happened in 2 years?

  • two deaths in the family

  • got demotivated and "quit" twice: once for 3 weeks, once for around 2-3 months

  • lots of stress from economic/political/war stuff that happened where I live. Had a few panic attacks! Financially OK (quit stock market early enough to avoid losses)

  • hardware problems:

GPU broke right when I was taking CUDA programming. The irony!

Burnt motherboard's CPU socket from too long parallel execution. CPU is fine though!

  • COVID-19 (right at the end, during my Spec. Quarantine took a psychological toll on me. Also good luck finding hardware in a pandemic!)

  • Lost much weight, built a little muscle

Courses I took, roughly in this order:

  • CS50

  • How to Code 1,2

  • PLABC

  • Learn Prolog Now!

  • Haskell from First Principles

  • Nand2Tetris 1,2

  • Intro to Networking

  • Hack the Kernel

  • Intro to CS and Programming using Python

  • Core Theory

  • Databases (Stanford)

  • Computer Graphics (skipped last assignment)

  • Machine Learning

  • Compilers (from Udacity)

  • Software Debugging

  • Software Testing

  • Software Architecture & Design

  • LAFF - On programming for correctness

  • Intro to Parallel Programming (very hard!)

  • Functional Programming in Scala (5 courses, free to audit the whole thing!)

Courses I took that are NO LONGER on the curriculum:

  • Software Construction 1,2

  • Cryptography 1 (very hard MATH course)

Courses I took that are NOT on the curriculum:

  • CS50's second half and its final project

  • Software Processes (from Coursera)

  • Software Architecture (from Coursera)

  • Functional Programming in Haskell (from FutureLearn)

  • Design of Computer Programs (Udacity CS212)

Courses I did NOT take that ARE on the curriculum:

  • Software Engineering Intro/Capstone

  • The Security courses that were added recently

Things I wish I knew / I wish somebody told me before:

  • difference between Computer Science and Programming. Apparently it's huge! I was more interested in Programming since I have theory from my math background. Ironically it turns out I don't like Programming that much. Much prefer CS, especially algorithms.

  • How to create a "learning lifestyle" and stay motivated, feel rewarded.

Those "Mindshift" classes buried at the bottom of EXTRAS should be the first thing we are required to take!

The "shining core" of OSSU

  • CS50, PLABC, N2T, Core Theory and Machine Learning.

Best Courses:

  • Core Theory (Kruskal's Minimum Spanning Tree algorithm with Union by Rank and Path Compression and its running time analysis with the Inverse Ackermann function are so beautiful, I had tears in my eyes!)

  • Nand 2 Tetris (makes you feel like you can do ANYTHING)

Most useful courses: Core Theory and PLABC (by far)

Takeaways:

  • Be very clear about your goals and expectations from the beginning. OSSU might not give you what you expect!

  • If you only "kinda" like CS/programming, it looks "cool", but you don't "love" it, it's gonna be hard. Maybe reconsider? Or do only as much as interests you? Put things into a long term perspective.

  • Specializations are no big deal. Like "normal" courses. By far the most useful to prepare me for the Spec were PLABC and the Haskell book. The rest were not relevant. I could have EASILY taken the Spec after those (I had not even taken Core Theory at that point).

  • Don't pay! Not even for Specializations. They offer very little support and some stuff is outdated. Not worth the money.

  • Sometimes I focused way too much on finishing a course as quickly as possible and getting it out of the way, moving on to the next. I did not learn too well. When confronted with courses that were not very good / that I did not enjoy, my motivation would switch from learning to "getting it over with", forcing my way through. Don't do this! Better to skip such courses entirely.

  • Physical exercise is extremely important to stay consistent and motivated.

  • I pushed my "challenge yourself" thing a bit too far I think. At the same time I started OSSU I also started lifting weights and intermittent fasting. You should adjust things so that what you're doing feels A LITTLE challenging but does not overwhelm you.

What now?

  • I feel very burnt out. Don't want to see a single line of code for a while! Not even clever functional one-liners that magically process gigabytes of data.

  • I want to do some fun stuff later. I'll take CS50's intro to Game Development, then maybe audit the Game Specialization.

  • My goal was not to get a job (although a low-key part-time remote job would be nice), but to challenge myself. MISSION ACCOMPLISHED! By a lot.

  • My original goal was to take all of Advanced Programming. I'll do that at some point. Advanced Systems and Theory are left. Should take another 3 months or so.

  • Eventually I should bite the bullet and stop avoiding the topics I disliked: web programming and Javascript.

  • Looked at Scala jobs, Functional jobs, Triplebyte, and some local jobs. All want "senior" devs with 5+ years experience and lots of other tech I don't know yet. I can only work remotely. So I gotta keep at it! In addition to Spark, I will look into learning other tools in the Scala sphere: Akka, Play, Scala.JS

The Most Difficult Thing:

  • Reading an existing code base. Reading is extremely hard. This is probably why so much software goes unmaintained, rewritten and into the garbage.

The Most Important Thing:

  • Everything is at least 20x easier than Hack the Kernel.
dtnwen commented 1 year ago

Thank you, would love to know what cs related you're doing now

dtnwen commented 1 year ago

@synked16 This is a very common question. You can skip Py4E, but DO NOT skip "Introduction to Computer Science and Programming". That one has some quite hard stuff in it, and people who skip it suffer later.

@birimbau No probably not, the curriculum is very general and not geared specifically to AI engineering. I don't think Data Science is more geared for AI either. AI requires very strong theory and fundamentals. At the very least, you have to take all of Core CS. After that you'd have to go in your own AI direction. There is Modern Robotics in Advanced Applications.

spamegg1 commented 1 year ago

Thank you, would love to know what cs related you're doing now

Creating my own CS / Math curriculum. Also check out Futurecoder which I worked on.

krishnakumarg1984 commented 1 year ago

Creating my own CS / Math curriculum. @spamegg1 Is this ready, and available online for students to see?

vr-varad commented 6 months ago

@spamegg1 what are u doing now as if what's your professional as of now after all this

awomae commented 6 months ago

I'm a website designer

On Mon, Jan 8, 2024, 7:18 PM vr-varad @.***> wrote:

@spamegg1 https://github.com/spamegg1 what are u doing now as if what's your professional as of now after all this

— Reply to this email directly, view it on GitHub https://github.com/ossu/computer-science/issues/727#issuecomment-1881582130, or unsubscribe https://github.com/notifications/unsubscribe-auth/BBYBNR5YRBBCRELVHLQCWWLYNQZ7FAVCNFSM4NZL2YAKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOBYGE2TQMRRGMYA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

JaihsonK commented 5 months ago

Is it possible to put this course on your resume? Has this helped anyone get a job?

waciumawanjohi commented 5 months ago

Is it possible to put this course on your resume?

My impression is that most learners list the advanced courses that they have completed (which generally demonstrate that the learner has completed prerequisite material).

Has this helped anyone get a job?

Yes, there are a number of OSSUnians that have used their study of the curriculum to proceed into grad school for CS or into a job in software engineering. This is easiest for those who have a Bachelor's degree in some unrelated field and are looking to make a transition.