Finished OSSU, Ask Me Anything: My Problem
Finished OSSU, Ask Me Anything: My Problem
Finished OSSU, Ask Me Anything: My Problem
Closed
Search or jump to…spamegg1 opened this issuePull requests
on Jun 9, 2020 · Issues Marketplace
48 commen… Explore
No one assigned
(I'll update this as I go along)
None yet
Originally written: Tuesday, June 9, 2020
None yet
Took 2 years (late May 2018 - early June 2020)
No milestone
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 Linked pull requests
I am Strongly biased towards math and functional programming, biased against object oriented programming. I learn by
Notifications Customize
doing, I dislike long lectures/concepts/info dumps.
Subscribe
What happened in 2 years?
You’re not receiving notifications from this thread.
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! and others
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
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!)
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!
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)
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
Reading an existing code base. Reading is extremely hard. This is probably why so much software goes unmaintained,
rewritten and into the garbage.
39 24 23 11 6
Thank you for this summary! You mention that you didn't take any math
course... If you had to cove / review math for CS, what courses / books
would you recommend?
Another question that I wanted to ask you is whether you took CS50's Web
Programming with Python and JavaScript ?
Best,
Martin.
…
@martinrg 1. I actually kinda went through the Math for CS class. I spent 2-3 days on it. It was a decent, OK course. I did not
like its textbook. It was super wordy and thick and confusing. I'll have to think of alternative books.
2. I took both CS50 and MIT 6.00.1x. Personally I prefer MIT. But actually I took CS50 as my "first beginner" class (that's
how the curriculum used to be). I think they are difficult to compare because CS50 uses C and goes into low-level
matters (memory, pointers etc.) To a beginner I would definitely recommend MIT 6.00.1x.
3. OK my story here is a little weird. I did take CS50's second half, and completed the Javascript Homeworks too. But I
didn't really understand/learn it. For my web project I bent over backwards to avoid Javascript, so I found something
called Brython that lets me use Python directly inside HTML. It's horrendously slow, but it works. My site looks very
crappy but it has a working interactive Python console and an Ace code editor!
@WildRyc It's a great course, I really like the instructor Eric Grimson too. It packs a lot into one short course (running time
analysis and big-O notation, object oriented programming, data visualization etc.) and has just the right level of challenge in
programming assignments (they are not so easy!)
I'm curious if you eventually developed the proper lifestyle you needed to keep at it. I, myself, want to really get into
computer science to level up in my career, but the hardest part is to have the consistency and discipline to do it everyday or
almost everyday WHILE not neglecting my other responsibilities in life. As it is, it already kinda feels like there's so many
"adulting" things I need to do and learn (taxes, financial literacy, everyday chores, keep the wife happy, etc.), and it's like I'm
being pulled from all different directions.
So if you can share any advice regarding that, I'd really appreciate it.
@epikkoder Yeah I eventually did, but I must say that I have a very simple, minimalist lifestyle. My life was pretty much eat-
sleep-exercise-code-run some errands. I feel you, sometimes aside from the adulting, even taking a shower or brushing
teeth feels like a chore. It might be difficult with family, spouse, kids and other obligations which I don't have (except my
mother). Not these last 2 years, but long ago I was also swamped. I had to make some sacrifices and cut out some things.
I eliminated most things that are pulling me in directions. Greatly simplified my finances, got out of stock market/investments
into no-hassle, safer options, automated all the payments, taxes etc. I don't have a car so I don't have to worry about
insurance, gas, check-ups etc. Got rid of my cell phone years ago. I gave up on some hobbies and interests, gave away pets
and plants, got rid of furniture etc. to reduce cleaning, and significantly simplified/shortened my exercise (which actually
improved my health).
I also have to run errands but I squeeze them into my "break from coding" times. Many of these are physical in my case so I
treat them as exercise. It helps that I need frequent breaks anyway because that's how my head works.
I suppose in your case you have to separate some "me-time" everyday, turn everything and everyone off for a while, and
stick to it, also make this clear to your family members. Gotta be selfish a little bit, and say no to others every now and then.
That's the only way to do it.
This is actually similar to the "writing problem" that many academics are/were having back when I was teaching. Among all
the other obligations, teaching, office hours, friends/acquaintances etc. we had no time to write our dissertations/research.
We were trying to do all the other things perfectly, and feeling guilty if we didn't "do it properly".
TL;DR: You must simplify as much as possible, eliminate some things and make some sacrifices, respectfully tell others to
leave you alone for a while, and learn to be a little selfish and stop feeling guilty or inadequate.
5 3
Can you talk a little bit more about the How to Code classes? I'm just starting the first one and thinking about how to
approach it. Did you use the online book, "How to Design Programs" in conjunction with the courses? What do you feel is the
best way to approach these two courses?
@wboard82 I did not use the book at all. I actually did not know it existed until much later. DO NOT feel like you are missing
out or incomplete if you don't use the book. The courses/videos are complete on their own. The best way to approach is to
have Dr. Racket open, and follow through the videos and type along with Prof Kiczales.
(As an aside, I'd like to say to everyone that doubts/feelings of incompleteness/unreadiness will keep haunting you forever if
you don't tackle them; you gotta start combating them early. The trick is to move on to the next course without exhausting all
the relevant resources. When I started my Specialization I had never seen a single line of Scala code, but I came out
dominant, confident and on top. I didn't read any books first.)
Consciously stick to the discipline they teach you in that class: creating stubs for functions, writing the signature (input-
output type), writing the tests first, writing a template for the function body from the data type you are using, and writing the
"solution" ONLY at the very end (resisting the urge to guess/write the solution immediately). Just this one thing will carry you
through both courses.
These courses are functional so they are all about "functional decomposition" and rigidly sticking to this discipline will force
you to break down problems correctly. The data types will get more complicated but always remember, they are just made up
of smaller parts! You'll see what I mean at the final project of the second course. It's super hard! But it works out as long as
you keep breaking it down to smaller problems.
I am thinking on learning how to deploy it and create for it a register/login page so myself and other people, maybe in OSSU
community can use it without needing to have access to CS50 ide just to have a look at it functioning.
Best wishes,
Remus
@SarCoptU That's awesome! This is what I requested a few months ago, when someone in Gitter chat said they could lend
their time and expertise to help out OSSU. You can deploy it using a free service such as Heroku following the instructions
from CS50, which is what I used
@spamegg1 congrats, and thanks for all the helpful information, I admire your commitment, I wish you all successes and I
hope that I can do it too.
@spamegg1 Congrats! I'm currently on Week 5 of N2T but some of my friends in CS keep telling me it's useless/a waste of
time. I really love the course and it feels like I'm learning some of the most important stuff of my life, but is it true that N2T
isn't applicable to the real world for most software developers? As an aside, their machine language is really silly imo. It's
"simpler" and yet less straightforward to use than x86.
@Andreilg Hard to say. I think it's not "directly" applicable, that's probably true. It teaches you tons of important stuff in
simplified format, on a "toy" computer. You wrap your head around how a computer works from the bottom up. It's true that
spending too much time on it would be a waste.
But if you ever have to write a compiler, parser, or assembly/VM code, the ideas you learn will definitely help. When you get to
OSTEP you'll definitely see it. For example it helped in Hack the Kernel where I have to implement first-fit or best-fit memory
allocation. It also helped writing the system calls (necessary to understand how registers work). Maybe take a look at the
Computation Structures courses in Advanced Systems? I'll do that in the future and report whether N2T was applicable or
not.
It's my favorite course among all, but mostly because of the fun and how it made me feel. When I was a kid I wanted to be an
electrical engineer and make hardware, but that didn't happen, so these courses were like a childhood dream for me. Also it
made me feel connected to computing history, and made me feel overpowered like I could do anything.
Interesting, I didn't like their machine language either (very cumbersome) but really liked the assembly code (with the D, M,
A). The least intuitive was the VM code. But I never learned x86 so I don't know. I'm not surprised that x86 would be more
straightforward, because it's a much richer instruction set, with probably much more convenient commands. In this case
"simpler" actually means "harder".
If you think about it from the perspective of the creators of the course, they must have had to decide on a trade-off between
simplicity/accesibility and features/difficulty. To me it feels like they made a good trade-off.
Thank you for your response. Yea I'll finish it but I guess I won't overdo it and spend too much time on it. But I keep hearing
learning how it all works help you write more efficient code in higher level languages. Is that not really the case?
And sorry, I meant to say their assembly language. I never actually really used their machine language so far, which seems
pretty standard to me in terms of how it maps to the assembly. The assembly is not at all how ARM or x86 works. Harry
Porter teaches a good assembly language but I'm sure N2T did it that way for simplicity of constructing the computer.
@Andreilg Yeah it definitely makes you think what your code does on the lower levels, what the compiler does with it, etc. I
think programming in C and using tools like valgrind is probably the best to develop that skill.
I think it would be silly to expect their assembly language to work like ARM or x86. The Hack computer's CPU instruction set
is so simple, they made an "ad-hoc" assembly language. When you go with a bigger system you can't do ad-hoc, you gotta
think more systematically. But I can understand your distaste for it if you were already familiar with x86. I was an "assembly-
virgin" so I really liked it.
Hey, congrats for completing this challenge, and thanks for sharing your experience.
I have taken many moocs in the past, including the excellent core theory that you mentioned, but I forgot most of what I
learned because I didn't use it in practice. So what I recommend is, if your intent is to merely feed your own curiosity, go
ahead and pick whatever seem interesting to you. But if your goal is to train yourself for a certain job, I don't think it is
efficient to go through the suggested curriculum in a linear fashion because you will lose motivation very easily, and waste a
lot of time learning a ton of material that will end up irrelevant and then forget it anyways. IMHO, the best approach is to make
your learning motivated by the problem that you will be solving e.g. building web applications, or training neural networks,
and pick up the prerequisites on an as needed-basis. Good luck for whats next.
@mabouguerra I agree! Good advice. Tons of irrelevant stuff in OSSU (and college curricula in general). I won't remember
much of it (looking at you, Intro to Networking). Not to mention boring and low quality. I still want to take some GOOD, FUN
irrelevant stuff though.
In the future I want to create shorter, more focused curricula for specialized purposes. For example, aiming at a functional job
one can take How to Code 1,2, PLABC, the Haskell book and the Scala specialization. It should take less than 1 year.
@spamegg1 to get a job, especially without a formal degree, you must focus on building a strong portfolio of projects, an
active GitHub etc to prove that you can get shit done. And let the need to build those tangible skills and projects guide your
learning. Key is to be as efficient and possible, and one year is plenty of time if sent wisely.
I recommend the same than @mabouguerra suggested to you. You did a wonderful job, don't stop there, OSSU background
is more complete than the majority of the bootcamps out there.
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!
I'm waiting to see a blog/artical recommendation about how to make this lifestyle motivational mindset, I actually quit alot
especially when course aren't interested topic for me -even if I know it's so important later on- like Programming language
part C, I don't like OOP at this time, and I really didn't enjoy ruby 1.+(1) , although I learned alot about interesting concept
Don't pay! Not even for Specializations. They offer very little support and some stuff is outdated. Not worth the money.
maybe we should pay them to motivate them making more, such as MITOCW donations, not because their certification or
something like that
@xxzozaxx I had the same problem; whenever I'm not getting some positive feedback/satisfaction from a course I tend to
procrastinate and quit. I believe I may have figured out a few things. Maybe I will write some tips and tricks later.
Hmm... it's certainly a good idea to support independent creators who make really good content, but I think the academics
already get paid to create those courses, don't they? I'm not sure more money is something that would allow them to do
more teaching. Academics like free time more than money; there is a concept called "sabbatical" that allows them to give up
their teaching responsibilities once every 7 years, and they use it to focus completely on research. These sabbaticals are
highly coveted, highly competed for positions.
My guess is that the content already exists in one form or another, but they have to "transfer" it to an online version which
takes time. (This is probably why we see many low quality courses that are simply "online dumps" of college courses, with no
consideration for online learning format/pedagogy. MIT's Scholar versions are a rare exception as they were the pioneers of
MOOCs.)
My comment was more about Coursera (and possibly other for-pay sites like UDemy). I don't think the certificate is worth
paying for, but regardless of that, there are unresponded comments asking for help going back months, and even when a
"teaching staff" replies to you, they are very unhelpful; it's clear they don't know anything about the course I'm taking, they
are offering one-line blind guesses. Generally giving someone money online is a bad idea, whether it's Craigslist, Kickstarter,
or Coursera. They don't have to do what they promise, and it's near impossible to force them, or get a refund.
After a bit of studying the science of learning, I have some idea as to why Nand2Tetris courses felt so amazing. It's true that
the projects in these courses will not be directly applicable or useful in real life. However, the ways of thinking acquired in this
course are highly transferable chunks of understanding that will allow you to understand many other similar things in CS. It
touches upon almost everything in CS. (Now I understand why Multivariable Calculus was my all-time favorite math class to
teach.)
Moreover it covers so many different topics interleaved with one another. According to learning research this interleaving of
similar yet different topics is extremely beneficial for long-term learning. It causes dopamine release and feeling of not only
reward, but future rewards. No wonder I found myself describing the situation as euphoric. It's literally hormonal!
The same applies to Programming Languages A, B, C (all three cover programming languages, but different: functional, OOP
etc.), Machine Learning (similar concepts, many different awesome applications) and Algorithms (they all cover algorithms
but very different strategies: divide-and-conquer, greedy, dynamic, randomized etc.) All these three courses provide
repetitive-enough, but also varied-enough practice. (All three also had great instructors.) They form a "library of
interconnected chunks" in your brain, and give you the feeling of finally leaving the world of repetitive practice and stepping
into creative, independent thinking. It feels like you are at the precipice of some amazing discovery and you can do anything.
However just covering lots of different topics is not enough, if the course is a boring, unmotivated giant info dump without
practice, pedagogy, or good instruction (like Intro to Networking) or with too much repetitive practice (like Databases). Both
of these covered a ton of topics but did not feel good. The topics were not very well interleaved either.
@xxzozaxx I recommend you check out Julia Evans's talks on YouTube. I think she really embodies this kind of learning
lifestyle, and it's encouraging to hear someone speak about taking on challenging ideas and the mindset that comes along
with it.
@aaronhooper Excellent link and I completely agree with her points on growth mindset, for example: "I don't know Linux" ->
"I can master Linux!" It's all about attitude and in fact I gave myself the added challenge of switching to Linux in the middle of
the hard Algorithms class (and I was a bit forced to; on Windows I was running out of memory and max recursion depth).
Once you knock down a few challenging courses you'll get confident and start growing an appetite to consume and learn
more challenging topics! From "nothing", in just a few months, I even started out helping other beginners on Linux forums
with their issues! I have 250+ posts.
When googling OSSU some results point to a site that seem to have content a bit different from
https://github.com/ossu/computer-science, to clarify the course outlined in the repo is what you finished right?
"By far the most useful to prepare me for the Spec were PLABC and the Haskell book. "
What Haskell book are you referring to?
@waciumawanjohi Why doesn't someone delete that outdated version? Is that not possible? I remember falling for that too 1
year ago, especially when this curriculum started to change a lot.
I have long advocated that if the site is not going to be updated, that it should be taken down. Other students have made the
same point.
#466
As far as I know, @SergeyKhval maintains complete control over the website and prefers to have it up, even though it
confuses students.
@waciumawanjohi Why doesn't someone delete that outdated version? Is that not possible? I remember falling for that
too 1 year ago, especially when this curriculum started to change a lot.
Thank you for the clarifications, and congratulation on the massive undertaking, all the more impressive in light of the
personal issues you describe you have been facing. I hope to some day reach your productivity levels...
Hi, @spamegg1 .
My problem
1. In terms of algebra, is there any difference between high school algebra and high school math?
2. If I finish high school algebra, does it mean that I can skip algebra1 and algebra2 in high school math? If I finish finish
high school math, does it mean I can skip high school algebra?
3. I am taking Introduction to Computer Science and Programming using Python and I am bad at math(Please refer to my
background for more information). In order to understand this course, which math course is more suitable for me-high
school math or high school algebra?
My background.
I have graduated from high school for almost 3 years. I often flunked math in high school. I have never learn or use math
since graduation. Thus, I almost forget the knowledge of math. I even forget how to calculate the area of a circle, Perhaps I
can only do algebraic operation now.
@CyrusYip Yes, these lists on Khan academy seem to be confusing to a lot of people. They are more or less the same
materials that cover the same things; but they are grouped differently for different people.
1. Yes, high school math is more comprehensive with topics other than algebra. The high school algebra link you gave
simply goes into more microscopic details of the algebra courses.
2. Yes, I think these are the same algebra materials, just shuffled around (probably). I think you can go through the high
school math link you gave, but even that one has a lot of repetitions grouped under different labels. Someone said that
Mathematics I, II, III cover everything.
3. How are you feeling in that course? Are you having trouble? That course introduces the Big-O Notation and the running
time analysis of algorithms, so you need to be comfortable with polynomials.
Given your personal history I can say this. Our good friend @waciumawanjohi recently wrote some instructions for another
person struggling with math. This may be redundant but it may also help you. Here it is:
If you knock it out of the park, great! Move on to this assessment of basic geometry:
https://www.khanacademy.org/math/basic-geo#basic-geo-subject-challenge
Then you will be ready for Math 1, 2, 3 which will cover algebra, pre-calculus, high school geometry, trig, stats, etc.
For memory related problems, I recently took this course that goes into how Long Term Memory works, and what to do to
make things stick: https://www.coursera.org/learn/learning-how-to-learn/
It's a 4-week course but you can probably finish it in 4 days. Turns out regular, spaced repetition and lots of sleep are very
important for long-term memory.
@spamegg1 Thanks for your thorough explanation. Your explanation really removes my doubts. @waciumawanjohi ' s
instructions are helful, too. I just began the intro course several days ago and finished the contents of week1. I have not met
big problems in week1. When I learned the approximate method in week2, it was hard for me to image the process of the
method. It suddenly occured to me that whether I should learn math before moving on. I have no idea what is polynomial or
Big-O Notation. It seems that I need to take math course at first.
As for waciumawanjohi' s instruction, does that mean that arithmetic, basic geometry and pre–algebra are prerequisites for
high school math? If I can pass the assessment of the three courses, I can begin high school math. If I fail the three
courses(or some of them), I should learn the courses I fail before taking high school math course. Am I right?
@CyrusYip Yep that's exactly right. Take those assessments and go from there. Good luck! Also drop by on Gitter, I'm always
there.
Congratulations , You really inspired and motivated me to continue , I hope you the BEST .
I am now in "programming languages C" , and I am really stuck with the first assignment , the provided code doesn't run and
causing errors and the discussion forums are dead , nobody responses . I think the problem is with my ruby version or tk
library maybe I don't know .
Could you tell me what exactly did you do in the setup for the assignments ?
I tried running my own solution on my current PC and I get the same errors.
EDIT: I got it working. First I installed ActiveTcl, then installed the gem with:
gem install tk -- --with-ActiveTcl
@martinrg I found this free Discrete Math book: https://link.springer.com/book/10.1007/b97469 It's shorter, more accessible
and readable than the Math for CS textbook. Might be a good idea to add it to Extras or Readings too.
Thanks everyone, I'll close the issue now as it's been a month and no new comments recently, but feel free to continue
commenting here, and I'll check up on this from time to time! Also you can find me on Discord.
@rudbar I was in the US, I'm somewhere else now. You can come over to Discord https://discord.gg/5pUhfpX
Hi @spamegg1 !! You have inspired me a lot to pursue this course!! Now[Sept 2021] there is "Python for Everybody" in the
intro C.S. How do you recommend it? Also, I know programming already and considering to skip intro C.S. and directly start
with CORE CS, though YOU took the "Introduction to Computer Science and Programming" using Python AFTER so much
advanced stuff... what do you recommend? Is it worth re-learning the basics? Actually the problem is that in "Introduction to
Computer Science and Programming using Python" you need to upgrade to give the mid-term and final exam.
[EDIT1] Looked up py4e, its a great course and on discord i saw many things, I hadn't seen before, so I will take it.
So now, the trouble is about "Introduction to Computer Science and Programming using Python"... will not giving exams be a
problem?
Hello,
Congratulations and I have to say that your path is an inspiration. At the moment I'm thinking on following OSSU as well, my
question is if in the end of the course you feel that you have the qualifications to become an artificial intelligence engineer?
Or if the Data Science OSSU degree is more suitable for that.
@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 thanks for the write-up; I also read your course reviews. How sure were you at the beginning that you wanted to
do the 2 years (or whatever time it took) of the whole curriculum and how did you stick to it? I already tried once but I sort of
burned out after CS50x (all assignments) and How to Code - Simple Data (I must have completed like 80%-90% of the
course). I was having fun, I like CS, and I love to learn. I keep coming back to CS since 2010 so I don't think it's a problem
with a genuine interest for the topic. I would like to try again but I'm not entirely sure how to set myself up for success on this
one because of its length. I'm quite organized and disciplined--specially for the first 3-6 months--but I seem to run out of
gas after the 6 months mark. Although I have to say that this happens outside of the CS topic as well. Any thoughts would be
appreciated.
When I started I didn't envision 2 years at all. I didn't have goals. I thought it would probably take 3-4 years, but my non-goal
was to "become a life long software person" instead. Mentally I saw it as "I have nothing to lose." Also keep in mind I have the
giant advantage of strong math, and skipping the math courses. Those are probably tougher than the CS classes for most
people.
I actually could not stick to it for a while, as you've read above. Self-learning so many tough subjects is like climbing Mount
Everest, so you gotta go easy on yourself and sometimes decide to move on. It's better to get through, say, 80-90% of the
curriculum, than to get stuck on one part and refuse to continue. I'm not suggesting it's OK to leave gaps in your knowledge,
but you gotta do what you gotta do.
Also we need to admit the limitations of online self-learning, as much as we'd like to believe it's amazing and perfect. Online
self-learning is an extremely new thing in human history, we don't fully understand its effectiveness. When kids switched to
online school due to the pandemic, we have seen the shortcomings of non-physical learning more clearly. Sometimes you
need a teacher, a classroom, fellow learners, an environment to keep you accountable and get you through such a difficult
curriculum. We're not meant to do everything by ourselves. No shame in admitting that. I'd have probably gotten through HtK
with some other people (but face to face).
There were parts of the curriculum that is like candy to me: math heavy parts like algorithms, functional programming etc.
Algorithms was about halfway through, and Scala was at the end, so I had big motivators spread out. So to get through the
rough parts I've used some real hardcore delayed gratification and negative reinforcement!
I have done some tough long term things in the past, without "seeing the light at the end of the tunnel" and in general I like
challenging/pushing myself (cold showers only since 2009!), so that seems to be well-suited for computer science. For
example recently I started learning piano, and I don't have specific goals either; just a life-long direction.
My personality is such that I'm not a goal oriented person at all, and I didn't start this with the intention of "I'm gonna finish it
in X amount of time!" I don't care too much about doing "real world applications" immediately, and I'm interested in academic
things for their own sake, so that helps. Also when I'm learning something, I always look at it with a teacher's mind, not
learning for myself, but "how would I explain this to someone else?" to help our others. So I ended up becoming a tutor for
OSSU Discord, and a contributor/member.
I have a vision for what I'd like to be when I'm old, a powerhouse of "useless knowledge" This kind of thinking solves the
"long term problem" for me. Same way of thinking allows me to stick to exercise habits, eating habits, brushing teeth. avoid
hunching over, etc.
I'd like to say "this is what I did, so do that!" but I recognize I'm just a minority weirdo. (It's possible that math/CS people in
general are weirdos ) So you'll have to figure it out what keeps you going. Maybe doing some projects in between courses,
or contributing to open source, or just going into your own cave and do a private personal project to satisfy yourself. (Just
don't take Hack the Kernel.)
If you have trouble sticking with long term things in general, and not just computer science, then that's another issue.
Motivation in general is an unsolved problem and a lot of research says there is no one-size-fits-all answer. Many people,
including myself, cannot find the motivation to even finish a video game! The Learning How to Learn and Mindshift courses
have some suggestions there. To go beyond that you'll have to understand your personality really well, what motivates you,
how you can "trick" yourself into doing things, the right combination of positive/negative reinforcement that works, or even
how to do a bit of "self-brainwash"
Write Preview
Leave a comment
Attach
Choose files by dragging
Files no files & dropping, selecting or pasting them.
selected
Comment
© 2021 GitHub, Inc. Terms Privacy Security Status Docs Contact GitHub Pricing API Training Blog About