What do you actually learn in Computer Science?
Posted by CheekSpiritual5639@reddit | learnprogramming | View on Reddit | 44 comments
What do you actually learn in Computer Science? How are the test papers like? Do you need to learn a lot of facts (as in do you need to memorize them or are you applying them like what you would do in physics/math). I've seen some cs test papers online and I found out you need to learn about networks, compression, bits manipulation. Please give me any advice.
grantrules@reddit
Somebody just posted basically all their notes and stuff from their CS degree a few days ago
theRealCyberChad@reddit
Where, sry? Would you mind sharing a link to post please?
grantrules@reddit
https://www.reddit.com/r/learnprogramming/comments/1srrvtr/i_kept_every_homework_note_and_problem_set_from/
SleepMage@reddit
It depends on your universities program and the subjects you choose, but the what you'll definitely encounter is; discrete mathematics, algorithms, theory of computation and digital logic.
theusualguy512@reddit
Yup. These topics are pretty much omnipresent in the first years of your undergrad because they form the base of your knowledge tree. The later stages of your degree and grad school are a lot more hyperspecific topics and differs greatly between peoples choices.
For OP and anyone interested, I tried to google English language exercises and exams from CS courses at German universities. This is usually what they look like, you can take a look yourself
CS degree stuff is usually something like that.
ZelphirKalt@reddit
Some of the math solutions for those tasks would probably only have gotten half the points, if even that, where I studied. They would have taking issue with simply putting equals between terms without any explanation at to why this equivalence holds or what operation you applied to get to the next term. They were math sadists I tell you.
On the other hand it says "bridging course" on that exam's title, so maybe the requirements for solutions are not that strict yet.
Dramatic_Win424@reddit
Looking at some of these pdfs brings back memories of college stress for me lol.
On the other hand: This is real CS. It's actually really fascinating stuff.
I have never done computer vision and my memory of comp theory is hazy but reading the exam makes me want to brush up on things again.
Not sure if I have some form of psych damage from my degree but academic CS looks so much more interesting that what I'm currently dealing with as a software engineer...
CheekSpiritual5639@reddit (OP)
Do you think it is possible for people with no or little prior knowledge to do well in class or at least keeping up with the professors' paces?
ZelphirKalt@reddit
I feel like it depends on various things:
(1) How well does the professor's style of explaining things match the ways in which you understand things well. -- Sometimes I only really understood things years later, when I actually wrote some code that touches the subjects lectured. Suddenly an "Aha!" moment, when before I had question marks in my head.
(2) How good you are at math, if it is a math lecture.
(3) How quickly you can grasp things in general. I consider myself a fast learner, but I was not one of the guys sitting in first row in math lectures, hearing things once and then already understanding them. That math stuff was damn hard.
(4) Of course how much of a hard working student you are. For example for me it was difficult, because I never had to work hard during school time. But then came CS math as a bad awakening, and I had issues adapting to that pressure.
I am going on and on about math, because that was the actual challenge in the CS degree. Prove this, prove that, prove some more shit. "Oh to solve this, you need the lemma 3 pages further in the book ..." Argh. Well, somehow I managed.
DumpsHuman@reddit
Yes. I’m not sure of your situation, but I am a career changer in my mid 30’s with no formal education pasted high school prior. The way my college tests, isn’t based on memory of things, it’s more of an understanding of concepts. For a lot of the CS courses I’ve taken, the exams aren’t memory based. No multiple choice, a few computational problems for math based classes, but mainly they test on your understanding on the concepts.
The pacing of the course lectures are very quick, and they briefly show examples but you’re expected to put in a lot of leg-work yourself outside of classes to have a deeper understanding.
wildgurularry@reddit
I know someone who completed a computer science degree having never owned a computer before he started, so it's definitely possible. You will just have to be motivated and work hard.
alexppetrov@reddit
I had the luck to be in probably one of the (in my option) mixed practical and theoretical cs university courses. We had a mix of everything and many of the lecturers/professors have actual experience or even contribute to real world swe open source projects.
Not only did we cover the basics in theory, but also had real practical projects which really gave me a large headstart compared to peers who self taught themselves or studied at other universities.
So what did we actually learn - from algorithms, programming basics, database basics and advanced concepts, APIs, frontend development, backend development, project management, UX, networking, security, soft skills like planning, diagrams, software architecture, advanced maths and in addition we had like 15 different electables to chose from - from graphics, to scientific computing, to data science, to bioinformatics, medical informatics and so much more. And even for the math courses we had to write the solutions in Jupyter notebooks using python or other languages. So at the end I had somewhere on average of at least 2 projects per course, 50-60 total in different areas.
And to me all of that is interesting. I like understanding why and how things are working. The concepts are almost universal independent of what you actually do afterwards, and having all of this knowledge really helps with doing mostly anything afterwards. In my opinion if someone wants to succeed in any field (not just cs/swe) they need to have an understanding of the theory and the practical things, but it isn't just remembering facts. In the beginning it might be, until you build some sort of foundation (ie what is a compiler, what are compiled Vs interpreted languages, what are data structures and what types there are, what are differentials and linear algebra, Linux, networking terminology, etc), but as time goes on with a solid foundation everything else is just a concept that builds upon (swe patterns, clean code, source tracking, architecture, in general everything in networking and security, data analysis concepts, etc).
If it sounds overwhelming - I also felt this way when I started, but trust me everything is simpler than I am describing it. Just start at the basics, do projects on your own, do your own experiments (ie when learning bit manipulation try to make a program that does something like encrypt something with an XOR). With time you will gather knowledge and built upon that as well.
beldum-please@reddit
Either depression or gay furry
AdDiligent1688@reddit
If it’s a mathy class you gotta understand the math and how to write proofs.
If it’s an applied class, you gotta understand theory more and how to apply concepts.
Ime the applied/theory courses tend to be heavier on the multiple choice / memorization type testing than the math classes.
SourceScope@reddit
We learned the basics. Loops, variables, arrays, classes etc.
Then we moved on to algorithms and data structures…
Algorithms for sorting, mostly.
And data structures like linked lists, trees, etc
DigThatData@reddit
the formal character of instructions, problem solving, complexity, and abstraction.
patternrelay@reddit
It’s less about memorizing facts and more about modeling problems and tradeoffs. You’ll learn algorithms, data structures, systems, and some theory, then apply them in different contexts. Exams often mix concepts with problem solving, kind of like math.
CheekSpiritual5639@reddit (OP)
I wanna elaborate on the memorizing part, cuz for high school CS course (for my case is A-Level, which is equivalent to AP), there are a lot of things to memorize. I hope this is not the case in undergraduate
sept27@reddit
Part of learning is memorizing some facts. That’s just how learning works. You had to memorize times tables to be able to do algebra. You have to memorize grammar rules to be able to write a paper.
Both-Dragonfruit3154@reddit
nothing
rustyseapants@reddit
Computer Science From Scratch: Building Interpreters, Art, Emulators and ML in Python
Computer science Wikipedia
davidkopec@reddit
Thanks for the shoutout of the book!
HashDefTrueFalse@reddit
Assuming you mean at undergraduate level? You'll do some programming, some (mostly discrete) math and CS theory (numeral systems, counting, complexity, vectors, matrices, set theory etc.), some data and database design, learn about how data can be organised to cater to different storage/retrieval requirements, get familiar with some common data structures and algorithms, cover computer networking, learn a bit about operating systems, often write a simple compiler and learn a bit about hardware (e.g. the MIPS ISA and it's assembly), and you'll usually get to pick up some optional stuff, course dependent. Each course is different and there can be a big element of customisation after a
Tests are whatever your institution says they are. We can't help you. Sometimes they're math papers. Sometimes MCQs. Sometimes (rarely) essays. Often there is no exam, instead you get assessed on something you produce over a period of time e.g. an SQL script to stand up a database from scratch to a spec, a small web application, game, compiler, some other piece of code, or (in networking) you might be observed whilst configuring a racked lab router and some hosts to create a (sub)network...
CheekSpiritual5639@reddit (OP)
Do you think it is possible for people with no or little prior knowledge to do well in class or at least keeping up with the professors' paces?
HashDefTrueFalse@reddit
All degrees teach you the basics of what you need to know to at least pass (e.g. 3rd or 2:2). If you want better than that you will usually need to do further reading, but they will usually point you to all materials you need for this. Getting a 1st is honestly pretty easy if you turn up to lectures and do the reading.
When I went (a while ago by now) there were plenty of people who had no background in CS and were writing their first lines of code. You'll be fine.
David_Owens@reddit
You don't need any prior Computer Science, programming, or computer knowledge to do well in Computer Science classes. They'll teach you what you need to know as you go along.
Having great math skills up to at least Trigonometry helps because you'll probably need to take some math classes such as Calculus and Discrete Math, and you don't want to go into those classes trying to learn the perquisites.
EfficientMongoose317@reddit
It’s less about memorizing facts and more about understanding how things work under the hood.
You’ll cover stuff like data structures, algorithms, operating systems, networks, databases. On paper it looks very theory heavy, but the goal is to build mental models.
Exams usually test if you can apply concepts. For example, not just “what is a hash table” but when to use it, or how to analyze time complexity. There is some memorization, especially for definitions or protocols, but most of it is problem solving.
A lot of people feel confused because it’s different from just building apps. CS is more about why things work, not just making them work. If you balance both, theory from college and building projects on the side, you’ll get the best of it.
Traditional_Owl4558@reddit
I would add that some of the memorization is pattern recognition. That is, the ability to identify and recognize common patterns associated with different data structures and approaches. If you can both understand the reason why an algorithm or structure is used for a specific task, you eventually start to recognize that pattern and identifying the proper approach becomes more instinctual.
Other than what has already been mentioned, my university also heavily focuses on documentation. I only have a couple courses left and so far I have to complete system design, software requirements specification, software design specification, and product requirements documents, as well as UML diagrams and flowcharts, wireframe designs and storyboards, ethical use proposals, API documentation, and app description and purposes specification documentation. While it is a lot of writing, learning how to properly write these documents helps with separating concerns and identifying the best development approach and strategies. This also improves the replicability, maintenance, and scalability of the code as more documentation means it’s easier to understand (this includes inline comments).
Great_Guidance_8448@reddit
Nailed it. Teaches you to be a computer scientist (sounds corny, but true) and not just a front end developer or just a java developer or whatever. Once one gets the concepts down - learning anything in the field is fairly trivial.
SRART25@reddit
Math, some computer architecture, some code, some hardware understanding. Mostly math though. Algorithms, discreet math, boolean algebra, linear algebra or matrix math.
2feetinthegrave@reddit
Computer Science major here! Happy to help!
Generally, computer science at the university level covers a wide variety of theory and concepts regarding how a computer works, how data structures work and can be built, how databases work and how and when to use them, finite automata, programming languages (specifically parsers, lexers, and interpreters) and how they work/the theory behind how they work, discrete mathematics, graph theory, more general mathematics (typically Calculus I&II, along with Statistics), physics, operating systems (specifically focusing on organization, purpose, memory and process management, and storage systems), how to use various Linux tools, IDEs, a few languages (Python, C++, C, assembly, etc.), networking/network protocols, algorithm analysis and optimization.
Hope this helps! 😊
Physical-Positive732@reddit
CS is much closer to physics/math than to memorization subjects. The exam papers you've seen (networks, compression, bits) are testing whether you can reason about a system, not whether you remembered a definition.
Rough breakdown of what you actually learn:
Foundations — algorithms, data structures, Big O. Not "memorize quicksort" but "given this problem, which approach and why." Very application-heavy.
Systems — how computers actually work underneath the code. Networks, memory, operating systems, compression. Exams here give you a scenario: "this packet needs to travel from A to B, what happens at each layer." You need to understand the model, not recite it.
Programming — this is where most people expect to spend all their time. It's maybe 40% of the degree. The rest is theory that makes you a better programmer long-term.
The honest advice: the people who struggle in CS exams are usually the ones who tried to memorize. The ones who do well treat every topic like a system to understand — they ask "why does this work this way" not "what do I need to write down."
Active practice beats passive reading by a huge margin for this. I built NullQuest partly for this reason — coding quests and Boss Fights that force you to apply concepts under pressure rather than just recognize them. Free to try if you want that kind of practice alongside your studies.
Inside_Ad6628@reddit
That no matter how hard something looks at first, you can and will slowly figure it out with effort
theusualguy512@reddit
You'll learn a wide range of things, a lot of theory and mathematics and some practical programming.
No it's not facts memorization, there is some obviously but overall that's not how you learn math either btw.
You learn why things are the way they are, how certain things work and apply it to different things.
Crafty_Magazine_4673@reddit
the importance of communication skills
vegan_antitheist@reddit
A lot of it is just discrete maths. Why don't you just ask the teacher?
nightonfir3@reddit
This doesn't directly answer the question but Computer Science at the university level is not aimed at the fastest way to make an industry ready person. It is aimed at giving the foundation to build on to make someone who can really excel once that foundation is built upon with experience. As such it does less teaching you how to code and teaches more of the underpinnings that allows us to make the large software projects we see today.
Temporary_Pie2733@reddit
Also, “computer science” has evolved over the years. Originally, it was just a set of courses within either a math department or an engineering department, so you can imagine which aspects of computing were emphasized in each. Over time, most universities spun it out as a separate department. But even then, there wasn’t a strong distinction between computer science proper and software engineering (think chemistry vs chemical engineering). I’d say a focus on software engineering as a separate academic course that builds on CS is a relatively recent addition, rather than assuming you’ll learn the engineering aspects on the job after graduation.
lKrauzer@reddit
Toncreate boring enterprise corporate apps.
spesskitty@reddit
Linear Algebra
lfdfq@reddit
Broadly speaking, a Computer Science course should aim to teach you a few things:
This is obviously a broad set of topics, and a good course will let you specialise so you do more of some and less of others as time goes on.
When it comes to examining, the goal should not be to solely test fact retention, but to test understanding of the problems, ability to apply solutions, and capacity to transfer that knowledge further. Obviously, that will require the students to remember some details (e.g. particular languages or designs or software or formulae or whatever) at least for the exam.
rioisk@reddit
In short - you learn how to think in terms of computation. Recursion. Iteration. Data structures.
Memorization is useful but it's more about problem solving. You'll learn to quickly evaluate how well an algorithm scales.
CS is a huge field so you'll learn a lot of fundamentals and then can pick what interests you the most for advanced topics.
The big thing is do you want to be sitting in front of a computer a lot and thinking really hard for hours? If you like doing that then you'll love CS.
MarsupialPrior7679@reddit
Graph theory
0x14f@reddit
You learn how to solve problems algorithmically, from data structures and computational theory to programming paradigms and system design,
The test papers focus on applying concepts (like analyzing algorithm complexity, writing pseudocode, or tracing code execution) rather than rote memorization.