9

What are the things in computer science do I need to learn?

So yeah, I'm still in high school and will be entering IT in a few years, but I am willing to learn now. I already have a good grasp of programming and can create good desktop apps and basic web apps, so teaching basic concepts such as variables, loops, functions is done for me.. But what computer science concepts should I learn next?

Comments
  • 6
    - Object orientated programming
    - Model View Controller methodology
    - Functional programming
    But most importantly.... GIT
  • 3
    1. Basic use of computer
    2. Problem solving approach
    3. Fantastic answers and where to find them
    3. Copy & Paste

    That's enough I guess.....
  • 3
    @irene typically. Although if there's a UI you could probably extend it into other areas.
  • 2
    @irene I know that. But he did say "desktop / web apps" who knows he could be talking about express.js 🤷‍♂️
  • 2
    During my education I found that most of my classmates struggled most with networking topics (subnetting and subnet-masks, calculations of broadcast-addresses, max Number of hosts in a network).
    Knowledge about networking can come in quite handy.
    Also, I found that most of them only had knowledge about Windows and didn't know anything about Linux.
    If you go into web development or server applications Linux knowledge is something that you want to have.
  • 2
    @irene I used it once.
    Fuck using it a second time or for anything of actual use.
  • 1
    Uhm, I'm actually done with them. I am using C# so I'm comfortable with object oriented concepts already. But things like algorithms, data structures, low level programming, unix are the things I'm not particularly familiar with yet. Any tips where to start?
  • 1
    @TobiSGD nice. Have learned basic networking before, planning to dive deeper later.
  • 2
    @reiniellematt look at binary trees and the like, as for Linux. You could try building something .NET core on Ubuntu or something to get use to the environment.

    The best way to learn *nix is to get your hands dirty. Just make sure your first few attempts are in a VM so you don't end up destroying everything.

    To go low-level.... talk to @irene
  • 2
    @irene what!? Am I wrong?
    You go lower then I do, I just haven't had the project to bother at those depths.
  • 1
    Depends if you want to dry learning or active learning.
    I find more funny active learning like pick up libraries and frameworks, compile them and glue them to make stuff I want.

    Try build your knowledge on your existing skills.

    Like people above mentioned OOP and networking protocols are helpful.

    Pick one topic and do something with it like oop -> design patterns can be undo / redo using memento or command patterns etc.

    Try understand separation of concerns.

    Networking can be some tcp / ip or even udp chat but not in localhost so you see how packets are delivered, what is mtu etc.

    Proper debugging is very helpful like watching variables, tree evaluations.

    Algorithm concepts (ex. btree etc.) - this can even take a few years.

    Cryptography- hash, elliptic, symmetric, asymmetric keys,

    Topic is big so pick something and try to build other things from it.

    Linux shell, containers.

    Memory ( C, C++)

    Functional programming- recurrence etc.

    Most important have fun.
  • 1
    If it's CS you're asking about then algorithms and data structures. That's what underlies all the other stuff
  • 2
    We've learned a lot of how computers works down to gate-level-component. While it's not anything I embrace on a day to day-basis it has helped me understanding why some algorithms and operations take longer time etc and how to identify and solve such problems.

    Also, I suspect this will be unpopular but I think the math is really helpful. For instance, understanding matrix/row operations in graph structures has had incredible effect in some applications I've been working with, and would be impossible if I hadn't learned it from the math course at uni.
  • 2
    Knowing how to Google efficiently is something I like seeing in a junior's toolbox.
  • 1
    @Nanos exactly.
  • 1
    Data Structures and Algorithms, take up a highly advanced course maybe, what you learn will seem pretty useless now, but maybe five years later, it'll make ALL the difference.
    And yeah explore, find love ♥

    PS. idk where youre from or how your college etc is, but if it's not that great, please do it online. Maybe Coursera and other resources like geeksforgeeks. Read CLRS, it's your Bible for this. And also refer Art of Computer Programming by Knuth for particular topics, you want further info in.
    This will take a year.

    PPS. You can also be a dev without being great in CS, this comment assumes you don't want that.
  • 1
    First understand IT is not programming IT is not engineering .. IT is not computer engineering.... IT is fix your computer.. answer help tickets field

    If you want to go into comp science.. don’t go into computer engineering with an emphasis in software. WHY? Cuz there are more jobs available to you and you will be more skilled... HOW? Cuz you will understand hardware and software.. and embeddded programming .. if you can write embedded programming you can write in any language you are not restricted... you will learn memory.. i/o you will have a far deeper understanding of what’s going on than comp sci

    If you go into comp sci you will deal a lot of theoretical... less jobs because everyone and their brother can do a developers job... the market is flooded with them.. and they can’t do what the comp engineering can..

    You will be more valuable to the world as a Comp Engineer than Comp Sci
  • 0
    Hi guys, I just entered business school and will study economics. But it was a great journey learning programming and it will be of great help for me in the future
Add Comment