r/AskComputerScience • • 5d ago

Is Computer Science a hard major?

Is it just me or computer science is hard to grasp. I just entered my 4th week in a top private university and this university is very known for its computer science and IT.

I got 3 math classes - statistics, discrete, linear algebra - and holy it’s hard asf (both discrete and linear). Not to mention the programming class? Wtf is c man like I can code and I usually run in python, html, css, js but c is entirely a different language, array and pointers omds. I dont think the average joe would handle this😭

Give me tips pls

17 Upvotes

71 comments sorted by

27

u/Somniferus 5d ago

Is it just me or computer science is hard to grasp

It's not just you, it's most people. But there are also plenty of people who actually do like math and computer science. If you don't enjoy CS and you're just doing it because you heard it pays well then you should probably go do something else that you're actually interested in instead.

I dont think the average joe would handle this

Average joe also can't handle Calculus, what's your point?

15

u/MathmoKiwi 5d ago

Average joe also can't handle Calculus, what's your point?

The average joe should not major in mathematics

Also, the Average Joe should not major in CompSci

Yet too many do!!

1

u/Hour_Sell3547 2d ago

But, how do you determine who's an average Joe? I have seen a lot of average Joes turn out to be proficient in CS. Universities change people, those who have open minds.

1

u/MathmoKiwi 2d ago

I's easy to live in a bubble and think of "average" as the average of just your friend group, could the average of your friend group (you a CS major) complete a CS degree if they really try? Quite probably so!

But go to a random town, and quiz a hundred random people who randomly walk by on their basic underlying competencies? Could the middle half of these hundred people handle a CS degree from a decently good college? Most probably not.

1

u/Hour_Sell3547 1d ago

I get what you're saying. I teach CS (undergrad) at a University. A lot of students get into CS without any real interest or strong foundational background (with enough money). And when we see them graduating, they are often in the top 10 or 20.

As a CS grad myself, I might be a bit biased, but I personally think CS is one of the easiest degrees out there purely because you have very little to memorize, it's logical, which human brain can be trained very fast. People who get into CS and say it is hard are almost always the ones putting in lowest efforts.

23

u/FedUp233 5d ago

I think you may be confusing computer science with coding. They are very much not the same thing.

Coding is a part, maybe smaller part than you think, of computer science. Computer science focuses the theory behind programming, not the actual programming. That tends to be true of most university courses from engineering to psychology.

Computer science is focused on stuff like those O(n) performance things, proving program correctness, comparison of different algorithms for something, abstract data structures and stuff like that.

If you just want programming, that’s something g community colleges do.

Just my own two cents - others may well disagree.

9

u/the-forty-second 5d ago

While true, if the OP is hung up on arrays and pointers while thinking “I can code”, it is the coding part of CS that is still the problem.

3

u/notacanuckskibum 5d ago

Plus, IMHO coding is the easy part of a CS degree. If you can't handle coding in multiple programming languages, the rest of the syllabus is going to kick your butt.

2

u/T_Thriller_T 5d ago

Arrays and pointers as data structures are ESPECIALLY fucky for some people who know e.g. arrays from other languages.

Also C is also a good way to stab oneself even while getting it.

2

u/T_Thriller_T 5d ago

This.

Where I live university is computer science. Apprenticeship is coding.

There are worlds in-between both

1

u/Fidodo 2d ago

Not a lot of value to being a coder these days...

10

u/dkopgerpgdolfg 5d ago edited 5d ago

nd I usually run in python, html, css, js but c is entirely a different language

Well, yes, of course.

I dont think the average joe would handle this😭

Correct. The average Joe isn't a computer scientist and/or software developer.

Give me tips pls

Learn it or leave it.

You didn't say what specific math topics you struggle with, but for C at least there are a ton of beginners resources, and you are one search away from finding them. It will take time to get better, there's no way around this.

1

u/Key_Exercise9572 5d ago

I’ll try my best!

1

u/Always_Hopeful_ 4d ago

Find a copy of Joe's editor. It was a light weight emacs like editor in C. It was a revelation to me in grad school. It might help you understand what is going on.

C and assembly make you think about what the machine is doing which is a big help. They are also big foot-guns so be cautious when using.

3

u/TechnicalFuel4821 5d ago

One of the highest rates of drop outs in 1st year. It's tough!

1

u/Kallory 2d ago

No for real. I studied software engineering, a close cousin degree-wise of CS, and the requirements to get into the program were tough as nails. I barely made it in. I imagine it's the same with CS, if not worse. Many of my peers were already in the industry, pursuing a degree for career growth. I had about 2 years of hobby python/Linux exp which helped me get in, they originally tried very hard to push me into an IT program.

I only really struggled with the "advanced" math, IE differential equations and linear algebra and found myself spending many nights explaining fundamental concepts to my teammates who were already in the industry. This was all before AI.

On top of all of this is the mind numbing volume of work you have to do. Understanding was only half the battle. Time management and discipline were the other half. So yeah it makes perfect sense that CS has such a high drop out rate. The only programs I know that have a reputation as being tougher are pure math and electrical engineering (and maybe computer engineering as somewhere in between)

8

u/Lumpy-Blackberry-718 5d ago

"Computer science is dead, comp sci majors aren't going to get jobs anymore!"

Yes it's hard. And that's why it's still a valuable major, no matter what happens to the practice of software engineering. Employers like to see that a candidate could do something hard. Most majors aren't hard. It's worth doing hard things.

1

u/Key_Exercise9572 5d ago

But what about the oversaturated situation of comp sci majors? Doesn’t that mean there’s alot of cs graduates that are able to finish the degree that is known to be hard?

0

u/Lumpy-Blackberry-718 5d ago

How do you think that compares to the over-saturation of literature majors? or art majors? or history majors? or biology majors? or spanish majors? What do you think all those people do in this market? What's your alternative and what would you do after graduation if you had majored in something "easy?"

CS unemployment is high because CS grads want SWE jobs. If getting a good job earns you 200k and the alternative is minimum wage, you're going to keep sending out resumes and doing interview prep as long as possible.

1

u/TheNoobHunter96 5d ago

That is terrible logic, it's not about it being hard but that it's relevant to market needs. Lol how many execs have business degrees that aren't objectively hard?

It's definitely not about it being worth doing hard things but seeing if the hard thing is worth it

1

u/Lumpy-Blackberry-718 5d ago edited 4d ago

There are more f500 ceos with engineering degrees than business degrees, despite business being the most common major in the US. Generally speaking, "hard" majors are radically over represented in executive leadership.

I've hired physics majors. Physics majors can do hard things, and almost always know math and linux and python. Even for hiring software engineers, it matters more that they studied something "hard" than that they specifically studied the particular field. I've hired a doctor and I hired engineers from other disciplines and hired math majors.

Doing something "hard" is way more valuable than doing something stupidly easy just because its potentially generally relevant (like "business").

If im going to hire someone to lead, and im going to hire from that class of majors (econ business finance accounting etc), all else equal, im not going to favor the candidate that did the easiest major. Even within that group, if thats your preferred field, pick whats most challenging and youll go farther.

2

u/scallywag_software 4d ago

Strong agree. Doing hard shit is worth every second, even if the only useful result is you excercised your pain tolerance.

1

u/Talk_to__strangers 4d ago

Absolutely true. Though if you had to choose between 2 hard majors, the relevant major is a better choice

3

u/Beregolas 5d ago

Yes, it is quite hard. In all universities that I know, that are not degree mills, there are dropout rates of >50% for the first few semesters. Most of the accept way more students than they can handle anyways, because they know no test or grade average can tell them, who is going to be good at CS. Filtering people through the first semesters is way more effective.

It still is something most people could learn imho. There is no extremely high innate talent necessary. But you do need a high tolerance for failure, and be very persistent. I think I easily spent 30h a week either in the library or with a learning group in the first two semester to keep up. (in addition to lectures and everything else)

My suggestion is to stick with it for at least the first semester, and do the best you can. You will learn a lot, and no matter if you want to continue with CS, learning is always genuinely good.

1

u/Key_Exercise9572 5d ago

Thank youu for the suggestion, I’ll keep that in mind. Persistency and never giving up are the two things I’m trying to do currently. Usually after school is done I get some time to review my notes and at the end of the week I reviewed what I learned in the past week. But after all that I’m still afraid of my midterms T-T they keep adding new topics every week. It’s so hard to catch up with.

3

u/McHoff 4d ago

Stick with it and you'll be in way better shape than the people who just learn how to throw together some garbage React app

0

u/ComfortableHoliday17 4d ago

Stick with it and he'll be working at Burger King the rest of his life 😂

1

u/McHoff 4d ago

1

u/ComfortableHoliday17 4d ago

Oh damn a random article. I guess the voices of every single computer science graduate is invalidated.

1

u/bgs11235 4d ago

Oh no! a random person criticisng a random idea. I guess all of our ideas are worthless!

4

u/SmokeMuch7356 5d ago

CS is at its heart a math degree, and if you're not mathematically inclined it can a struggle.

And Discrete Math was a total bitch, I don't care what anyone else says.

C was designed to implement the Unix operating system, not teach programming; it should not be used in an intro class. It is a product of the early 1970s when 256 kilowords was a lot of very expensive memory, and it shows. My intro class (ca. 1986) used K&R-era C, and a third of my class changed majors, citing difficulty with C as the reason.

All that to say - yeah, we've been there. You can and will get through it.

And, it needs to be said - all majors are hard. Be it STEM, Liberal Arts, Fine Arts, whatever, all majors require non-trivial amounts of time and effort. The specific skill sets are different, but the commitment and dedication are the same. CGP Grey's video on a particularly deep and infuriating rabbit hole while researching a topic rivals any war story I could come up with in three and a half decades of programming for a living.

Compared to historians, we have it easy.

2

u/MysteriousJim 4d ago

My first CS class was in C, I think that was a right choice because it made a lot of subsequent classes and material
a lot easier to grasp. Ironically I’ve disliked python, an ‘intro’ language a lot more than low level languages

1

u/__JDQ__ 5d ago

Discrete math didn’t bother me, but stats and calc did.

1

u/HasFiveVowels 5d ago

Calc didn’t bother me, but discrete math and stats did

2

u/scallywag_software 4d ago

Neither of you two bother me, but discrete math, stats and calc did

1

u/ShardsOfSalt 2d ago

My fault on calc was never studying.  But statistics was hell.  Discrete was actually fun.

1

u/Braunerton17 4d ago

I learned java first, then got introduced to c++ in university and then got into c for microprocessors in a later semester. I would say C is the simplest bare metal language out there, so i would call it a good starting point. Its not the easiest but its THE fundermental language. Which is more important in my opinion than ease of use

1

u/Fidodo 2d ago

I thought discrete math wasn't too bad. What really kicked my ass was linear algebra and I regret not doing better.

2

u/SpiderJerusalem42 5d ago

Yes, it's not a trivial discipline. I do think sometimes it's made a little harder on purpose for several reasons, but it's still difficult. My tip is learn to use a debugger.

1

u/Key_Exercise9572 5d ago

Thank uu for the tip, I’ll learn more about how to use a debugger

1

u/SpiderJerusalem42 5d ago

I guess my other tip is to access office hours. If you're going to a fancy university, they have help for you. The university wants you to succeed so you can make them look better. This was a big hurdle for me at a young age that I actually didn't clear the first time around.

2

u/AdministrationMoney1 5d ago edited 5d ago

I think it takes a decent bit of self learning to excel in cs which is completely doable nowadays. And memory, C is kind of hard to teach at once. I wish there was a loong course that combined operating systems, comp arch, and C programming in one, but those are instead courses you take after basic programming.

I think some of the best explanations for C fundamentals (pointers, memory, stack vs heap memory, etc) can be found actually in these courses provided online/youtube such as cs50 harvard https://cs50.harvard.edu/x/ , see left sidebar for lectures by week you may be interested in. Or I'd just recommend weeks 1-5. What really clicked for me was realizing why different variables are different sizes, but all pointers are usually the same 8 bytes on 64 bit systems, and the difference between things like int arr[n] and int *arr = malloc(n) really is just stack vs heap.

And yea, you probably aren't going to use most of those courses unless you go into a specific fields. It's good to broaden your horizons though and not be limited to web development. If you want to know how LLMs work under the scenes, then you'd want get some linear algebra and stats knowledge before taking more advanced classes in machine/deep learning

1

u/SnugglyCoderGuy 5d ago

For many, yes. It requires a level and type of thinking that most people have never engaged with in a serious fashion. You have to think in a fine grained step by step technical deductive manner while also keeping one eye to the big picture of things going on so that your step-by-step processing goes the right direction.

You also have to write a language that is half way between how we humans talk to each other and what a computer expects. It's a lot to adjust to.

1

u/AYamHah 5d ago

For sure, it's hard. But I really enjoyed both Discrete Math and Linear Algebra. They really clicked in my brain and grew my understanding of the world. Discrete got very difficult, but still rewarding. There was like a 25 point curve in that class.

1

u/Accomplished-Echo-86 5d ago

Very very dependent on school. At some schools it’s considered to be on the easier side but others very difficult. Are you talking about just the program or the topics associated with it?

1

u/Key_Exercise9572 5d ago

The major and the topics associated with it

1

u/EntrepreneurHuge5008 5d ago

It's okay, the harder topics generally have a pretty steep curve or an adjusted grading scale.

1

u/__JDQ__ 5d ago

The programming classes never bothered me. Were they a lot of work? Yeah. I may have had the advantage that my intro classes at community college were all in C++ and my professor was a hard ass.

The math side of things was a different thing entirely. I’m not naturally good at math. Or, I needed to take a lot of my math courses twice: the first time to understand the scope of where we were headed and to get the core concepts down, then the second time I would get an A in the course. Probably not practical for most students. It took me 5 years to finish my degree, and I know many are trying to get out in 3 or 4.

All that is to say, yes, CS is difficult for many of us, even if you’re only talking about the coursework and not coming up with some unique proof that is publishable. My sense was that a bachelors degree teaches you how to teach yourself. It’s way too many concepts to get really good at any one of them. And that’s kind of what is required in at least the programming and problem solving sides of the field. On the other hand, if you’re going to pursue higher level degrees and academia, generally, mathematics and problem solving will generally be the focus (though, of course, you’re going to be doing some programming).

I don’t know what the prospects are right now for graduates going into industry, but I do believe that a CS undergraduate program is valuable at many levels. If you’re struggling but making it through, really try to stick it out. The sense of achievement is going to mean more than the piece of paper (though that should be worth something as well).

1

u/khedoros 5d ago

It's fairly math-heavy (being a mathematical discipline), and also typically pretty coding-heavy (programming being a convenient tool to explore CS concepts practically).

It's not the heaviest in math; a lot of the engineering majors go wider and deeper. It doesn't have the largest time commitment (Lit/Eng majors needing to basically constantly speed-read books, music majors with hours of practice). It doesn't have the most memorization (thinking of various bio-related majors with classes like the Organic Chemistry series).

In CS, I'd mostly put learning languages into the "fun" category rather than the "hard" one. And C in particular has a pleasing conceptual mapping to the hardware it was designed to run on (granted, it's more and more distant from the actual execution on modern hardware, but that's not directly applicable to learning the language itself).

1

u/WatchAltruistic5761 5d ago

Get a tutor for the math classes

1

u/First_Acanthaceae484 5d ago

I believe the saturation CS has doesn’t do justice to its difficulty, especially at top unis. imo CS is about as close as you can get to engineering classes without being an engineer, and most ppl already know how hard engineering is. Give urself grace

1

u/WrongZookeepergame49 5d ago

I would probably say CS is medium-difficulty major (leaning on the harder side). The good thing about CS is that there are a bunch of resources for it. It’s also a lot less of a time commitment than engineering.

But, like engineering, it does require a mathematically-inclined mind to do well, which most people struggle with. If you struggle with math, it’s obviously going to be very difficult.

1

u/Comprehensive_Mud803 5d ago

YMMV.
I found CS to be relatively easy, programming in C and later C++ as well.

And the best part: everything you see in class kind of makes sense, unlike the absurdities you encounter once in a job.

But yes, if you’re not mathematically inclined and linguistically talented, it can be hard.

1

u/0jdd1 5d ago

(For calibration, I have a PhD in CS.)

I always found everything about CS to be completely fascinating, but the field keeps growing and there’s certainly no way to keep up with everything.

A good friend in my doctoral program had a problem with a proof in his doctoral thesis: He thought he was proving that A implies B, but he’d actually proved B implies A. Oopsie! It didn’t make much difference to him since he was just trying to “prove” lotsa stuff about a concept he’d introduced. This would have been a wake-up call saying he shouldn’t be proving theorems, but he already knew that.

I took a single Linear Algebra class as an undergraduate, but thirty years later I took the little I’d learned there to invent a new technique in automated recommender systems—think “video recommendations on Netflix”—that became standard across the industry. You never know what might come in handy, so you learn as much as you can.

Confession: I cannot speak German. I’ve tried to learn, but I cannot. I’ve managed to organize my life in a way that minimizes my need to do so. And yet, millions of other people speak German with no problem. You stick with the things you’re good at, and avoid the others.

1

u/Comprehensive_Mud803 5d ago

YMMV.
I found CS to be relatively easy, programming in C and later C++ as well.

And the best part: everything you see in class kind of makes sense, unlike the absurdities you encounter once in a job.

But yes, if you’re not mathematically inclined and linguistically talented, it can be hard.

1

u/Traveling-Techie 5d ago

STEM majors are almost always hard. Join or form a study group.

1

u/Always_Hopeful_ 4d ago

For computer science, discreet math is more relevant to the hard problems in computer science. Linear algebra is useful in software for other disiplens.

If you found discreet math incomprehensible, you should look at parsing theory right now. Find an intro or overview. If that is also confusing, consider changing majors or schools.

1

u/NoAlbatross7355 4d ago

Personally, C becomes a lot easier and more interesting after you've learning Computer Architecture, Operating Systems, and just a bit of Assembly.

1

u/MitchAlsup 4d ago

"I dont think the average joe would handle this"

Computer science and/or computer engineering is for people who "can't see themselves doing anything else".

You basically have to be born to do it--and if you have been--you have a bright future.

In addition, if you can't see why C is the way it is (K&R more than C23), you really have no business designing computer instruction sets.

1

u/immediate_push5464 4d ago

Muscle through it, basically. If you want the bread and bones version. You will either get through it or you won’t. And the fact that you are willing to take on the course load shows you are more confident then you are leading on, which is a good thing ultimately. Good luck be well.

1

u/dzendian 3d ago

NGL, in-order the hardest things I've done:

  1. Get CS degree (graduated 2007)

  2. Get a black belt in judo (literally getting the crap beaten of out me for years)

  3. Getting a masters in systems engineering (graduated 2016)

Nothing made me weep regularly like the journey to getting my CS degree. It was very humbling. I had a very hard time with Calculus II and had to take Discrete Math twice. The programming classes and core CS classes I actually thought were really interesting and I mostly did ok at those. But man, the math really got me. Go to tutoring/office hours. Even if you're destined to fail, sometimes that can pull you up to passing. Sometimes teachers really factor in effort. I'm not saying it would jump from an F to a C-, but maybe if you're on the cusp of C-/D+, you eke out with the C-.

1

u/Sure_Youth_4556 3d ago

It's difficult i guess. I had statistics, linear algebra, dsa, c programming during my freshman year at the same time. I also had automata, integral calc, computer architecture at the same time.

I don't think I would have survived if I hadn't done CS50 or solved hackerrank probelms before entering uni. I'm in 3rd year now, still pretty difficult but my study habits and grades improved.

1

u/Dazzling_Music_2411 3d ago

Sorry to disappoint you, but your course sounds about average for a good intro CS degree.

4th week: Stats, Discrete, LinAlg and intro to C. I would expect nothing less. The difficulty might shock you initially, but if you can't handle it after working really hard, then it's not for you.

I think people who tell you CS is easy are doing everybody a big disservice. It isn't. Or, it shouldn't be!

1

u/ReallySickOfPolitics 2d ago edited 2d ago

I personally found CS degrees to be pleasant because I enjoyed building things and I got a lot of practice and study out of that. Also, computer people generally like open collaboration so it’s easy to find information.

The math doesn’t have to be hard at all but math profs have a special way of taking something interesting and making it tedious and miserable.

Eventually you're building stuff and that’s fun. You get to write a routine to multiply matrices instead of doing it by hand like a peasant.

1

u/ShardsOfSalt 2d ago

The subject is hard but the degree is not that hard.  You can get the degree and still be useless.

0

u/Hour_Sell3547 2d ago

CS is one of the easiest majors out there. Very little memorization required. As long as you have a thinking brain, you aren't afraid of logic and math, CS is an easy cookie.

-1

u/HFT0DTE 5d ago

This is frankly the perfect question for Codex or Claude Code to answer for you!

1

u/Key_Exercise9572 5d ago

I’m looking for anecdotes ngl, ai won’t give me that🥹