How can I overcome challenges in Computer Science courses to prevent hitting a learning “wall”?
#ComputerScience #StudyingTips #AvoidingChallenges
– Struggling with certain concepts in CS courses, such as algorithms and mathematics, can pose significant challenges
– Need guidance on how to navigate difficult subjects in Computer Science effectively
– Looking to enhance learning strategies for complex topics in CS programs
– Seeking advice on tackling advanced CS topics, including algorithms, logarithms, and theta notation
What steps can be taken to excel in difficult CS courses and prevent hitting a learning plateau?
Just read your post on what you covered in Maths and you are essentially missing all of the basic concepts of mathematics that is needed for anything useful.
By the end of grade 12 you should have covered all of the following;
* Algebraic expressions
* Quadratics
* Equations and inequalities
* Transformations of graphs
* Straight lines, Circles
* Algebraic methods
* Binomial expansion
* Trigonometric ratios
* Trigonometric identities and equations
* Vectors
* Differentiation
* Integration
* Exponentials and Logarithms
To me it feels like you are missing all of the latter half topics.
It sounds like you have imposter syndrome, which everyone has, and one does not avoid hitting the wall but rather breaks the wall. Both study and life are the same: just take on problems and challenges, struggle and overcome them, and repeat. You will just have to be comfortable being uncomfortable or making uncomfortable comfortable.
Make sure you’re in the right headspace is my number 1 tip.
I believe anyone can learn anything if they have a basic education, and drive. But you can’t do it without being in a good place mentally.
So look after yourself and don’t be hard on yourself. Do your best you can do
Not sure if you are going to a uni or a college but go speak to one of the academic advisors (or equivalant) and ask them about taking a preliminary math course. Tons of schools will offer what is the equivalent of highschool pre-cal/calc that you can take in one term or even over the summer. These courses tend not to count as credit for your actual degree but getting this foundational knowledge will make your life 100x easier.
If your school doesn’t offer something like that, use online resources to get that baseline yourself.
[https://www.khanacademy.org/math](https://www.khanacademy.org/math) is a great resource and there are many others like it as well too.
Seems like a motivational problem.
There’s a CS department and there’s usually an ECE department. If the more theoretical math courses are not where your interests lie and you live the more hands on stuff maybe you should switch to the ECE department. Although you’ll have to deal with the level of math you shared but there won’t be as much proving theorems stuff.
Another thing to consider is what is your ambition. You might be better served with a good boot and straight to job or even skill the boot camp. There would be a lot of areas closed to you but in all fairness many people with masters degrees don’t do anything fancy that would be doing a similar job to you.
Having said that, I do think having the mentality to solve theorems and understand math serves you very well in all programming fields. But with the amount you’ve struggled while actually being happy with programming, you should set yourself up accordingly.
If a^b=c, then log_a(c)=b. The power your base is raised to IS your logarithm, don’t over complicate it (I did). It’s called log base a because a is the base (and b is the logarithm). When someone says what is log base 2 of 8, they are asking what POWER do I raise the base (2) to in order to get 8. I have a notion document I worked on for a while trying to understand logarithms that I think is pretty intuitive if you want I can send it over.
Also, binary search is O(log base 2 of n) when n is the size of the list BECAUSE you are HALVING the list in 2 each iteration. If an algorithm is O(n^2) it is DOUBLING each iteration. You are essentially going backwards. Logarithmic algorithms are the exact opposite of exponential algorithms.
An intuitive way to think about it in terms of binary search is if you had a TRINARY search, you would be splitting the list in 3 each iteration hence it would be O(log base 3 of n).
I’m also struggling in year 3 of CS so this definitely isn’t perfect but hopefully it helps.
Sorry completely unrelated but what did you learn in cs101? My introductory programming course taught everything you did in cs102 + linked lists. Are these semester long courses?
Cracking the Coding interview helped me understand Big O notation at a basic level. But now that I’m in an advanced algorithms course, I’m fucking lost. It’s my last class and I’m hoping that I can manage to just skate by with the minimum grade to graduate. Once this shit gets super theoretical, I get lost. So you’re not alone. Good thing is, you know where to put your focus to do well now!
Go work in a kitchen 70 hours a week. It will be unbelievable motivation
You don’t know any calculus or at least the bases of precalc. If you were in the U.S, logarithm is taught near the end of highschool and used a lot in Calculus.
Also, you’re approaching things wrong if you try to memorize everything. Majority of those intro classes can be passed by memorizing them, but if you don’t have foundational understanding, you’re gonna fail classes that build on top of them.
In intro programming classes, you learn basic collections, language syntax, loops, and conditions. From there, you learn Discrete Math to understand theory and programmatic thinking. Data Structures and Algorithms are then taught as a class to apply that theory. If you miss foundational blocks in your knowledge, you’re really gonna struggle.
Classes like Discrete Math, Calculus, Physics, are math heavy courses to teach you how to think about a problem and apply concepts to solve them.
Seems like you need to brush up on your Linear Algebra and Matrix algebra and calculus
Not sure, greek letters are commonly used in maths to denote different things, some may be used denote some concepts other can be used to name a variable. I think the concepts that you describe may be introduced in the 10-12 grades (maybe not in every country).
My university had a math introduction course, mainly for new civil engineers, to re-introduce many of the basic concepts. Our CS program also had math classes that introduced different new concepts that later CS courses built up on (ie recursion), our first year was almost 50% different math classes (I did not find all of them usefull).
I would advice to speak with a guidence officer at your school on what options they may provide. You may engage with class mates (participate in study groups was really helpfull for me, you learn a lot from explaing things with your own words to others).
Live on campus, I mean spend all your time there. Get there in the morning and stay until night. If you have to leave for work or whatever else, that’s cool, but come back to campus. When you’re not in class, go to the library, tutorial center, clubs, whatever get involved, hang out, study, learn meet people, make being on campus and education your life.
Ready the chapter or practice lesson before the class, learn it more during the class, and study it again after class. If you’re always on campus, you can make time to be learning lessons multiple times.
It sounds like you, like me, are complete dogshit at high-level maths. (Me, 20 years ago: “the fuck is a complex number? there’s an imaginary bit? okay, then why not just imagine any answer you want. 4938. Boom. Imagined.) This is a barrier to completing a CS degree but it can be overcome if you’re persistent and lucky.
I fixed it by flunking and retaking my university math courses a bunch of times, with different professors, until they managed to get a D or C- level of the content through my thick skull. I had to do extra well in other courses to keep my GPA up, but it helped that I was good at coding and writing.
I took Calc 2 _three times_. That A+ in “Comparative Mythology” was really clutch at keeping the whole project afloat. (To this date I can tell you key details about the Iliad but I can’t remember how to integrate a damn thing)
Remember: the minimum passing grade in a university math course is all you need!
I agree with others and it sounds like the wall you hit is in math. Knowing the speed of programs is part of Big O notation. Capital Theta, in this context, will be for the “average case” of an algorithm’s speed. It’s less than O, “worst case”, and larger than Omega, which is the “best case” scenario. I’d say take some math courses or at least go over math from college algebra through calculus. If you can visually graph out what x^2 or log(x) looks like, you can figure out which algorithm is faster
Seems like most of your problems are math related. It may help to take some sort of “intro to proofs” class going over basic proof techniques, since a lot of those time complexity analysis problems are basically simple proofs. “How to prove it” and “The Book of Proof” are good books in that area. Usually, that will be followed by a discrete maths course. I used the book by Sussanah Epp. Most universities would require you to take some calculus as well, so I guess you’re expected to be comfortable with basic algebra and such, so I’d brush up on that too. Take a basic book in whatever level you’re at, college algebra, precalculus, or calculus. Any author will do; I used Stewart. If you cover that material, those theoretical classes will become easier. A lot of the other stuff you asked is easy to google, but when it comes to solving problems, it’s just practice.
Why are you retaking classes you’ve already done and already know? Even if it’s a different university you can usually at least test out of the beginner ones since those obviously aren’t the ones causing you trouble.
Lots of people struggle with algorithms and it’s usually fairly smooth sailing after that.
You should ask this question again, but trimmed down to the part you actually need help with, which would be algorithms.
The things you are confused about seem to be mostly math related too, there is a reason why math classes are required alongside cs, I don’t know what would be going on where you’d even be allowed to take such a class without pre requisite math courses but by the time you take algorithms, you should at least have algebra, trigonometry, and maybe even some calc under your belt, because many of the concepts expect that you have that knowledge.
I can see why they ask if you’re in the wrong class, I have no idea how you managed to even enroll in an algorithms class without knowing what a logarithm or theta is, let alone how it’s happened multiple times.
Go watch 2blue1brown (or whatever the name is) on YouTube’s trig course and do some practice problems. Trig seems to be the biggest missing piece here for you
Sounds like you just dont know math, is math not part of your cs course?
It sounds like you would need to brush up on your math skills. Maybe take a math assessment test at a community college and go through calculus 1 or higher before starting a cs program if it is not included. You could also go on Kahn Academy but these things are taught in even college Algebra and precalculus.
Skip CS?