What's Computer Science and what to expect from a CS degree?

What's Computer Science and what to expect from a CS degree?

I was noticing that whenever people think about Computer Science, CS degrees and learning expectations from them, they think about being trained to become "Developers". Students are often surprised and upset by what they have to study. I was thinking that there should be more exposure about what CS is and what is taught in it and why. So I wrote this:

Computer Science is the study of computation (calculations), information and computing systems. A big part of it is about being applied mathematicians and system designers, and solving problems. It's a vast field with many subdisciplines. CS is not the same as Programming. The purpose of a BSCS degree is to cover the complete breadth knowledge of this science, so one could have enough exposure and fundamental knowledge to understand and do research in any aspect of it and pursue a specialization or applied area and its depth knowledge according to personal goals, instead of just being able to code applications for simple use-cases in a tech stack popular these days.

Students can have different goals and career paths and the curriculum has to cover full field and requirements of all types of future Computer Scientists. The courses are not so irrelevant for everyone.

  • Someone working as a Computer Vision Engineer, Game Developer, AR/VR Developer, Animator or in a Graphics/Visualization company, would find Computer Graphics, Physics, Linear Algebra, Calculus, Geometry and Image Processing, to be very useful.
  • Someone working in Cloud Computing, advanced System Design, Data Engineering, DevOps and Cybersecurity, would utilize Distributed Computing, Networking, Operating Systems, Database Systems and Information Security.
  • Someone working in IoT, Embedded Systems, Robotics and Hardware would find Digital Logic, Electronics, Micro-Processors, Physics, Computer Organization and Architecture to be useful too.
  • Probability & Statistics, Numeric Computing, Artificial Intelligence, Databases, Data Mining, Differential Equations, Linear Algebra, Calculus, Image Processing, NLP and Machine Learning will help Data Scientists and Scientific Computing people.
  • People working in UI/UX and developers working on human centered systems take advantage of Human Computer Interaction.
  • There would be researchers who work in Theory of Computation or use it to analyze and do other research, and there are also people working on new tools and languages. They'll also utilize Discrete Structures, Theory of Automata, Compiler Construction and Algorithm Analysis.
  • There will be Software Project Managers, Software Architects, QA Engineers and software engineering and formal methods researchers who would take advantage of Software Engineering courses.
  • There will be many general purpose and programming courses that will be useful for everyone including Developers. They include Programming Fundamentals, Object Oriented Programming, Data Structures and Algorithms, and Web/Mobile Technologies etc. Courses like Report Writing, Communication skills and IT Practices prepare you for professional life. Many areas are interdisciplinary requiring diverse knowledge.?

Degrees can do a good job at covering all that systematically, and evaluating you. A BS degree has a lot to cover and can't just focus on what you personally need. You have to take responsibility to do self-learning and practice to build expertise according to your goals. You can do projects, assignments, elective courses and research according to them during degree.

We often use tools, libraries and services, but those who work on building them need to have deeper theoretical understanding. Sometimes students think that even data structures and algorithms are not used in real-world, but they just aren't working in areas, companies and projects where those are heavily used.?

Degrees and their content are even more useful and necessary if you want to pursue higher education, research and academia. However like I discussed, there are type of jobs and nature of work where that theoretical knowledge, coverage of areas less relevant for others and diverse breadth knowledge are quite useful. As a Data Scientist I deal with complex computational problems and scenarios, where theoretical knowledge, algorithms and concepts from many different courses from my degrees prove to be quite useful. Sometimes such concepts are from courses seemingly very different from what you are doing. Students might never bother to learn them if it wasn't for degree.

My idea of pursuing Computer Science is more about being a scholar of the fascinating Science of Computing, not just being able to do an XYZ thing to earn. However I do understand that people have different goals, motivations and circumstances. They just need to understand what to expect from BS CS. I read about the field and complete curriculum and searched about every course before taking admission in BS to understand the big picture, and I wonder why students don't do that.

Fauzaan Hafeez

Senior Full Stack Developer | .NET Core (C#), Node.js, Express.js, Angular, Hono.js, SQL/NoSQL (MySQL, PGSQL, MongoDB) | Cloud Enthusiast (AWS, Azure) | Ex-Fieldforce & CureMD | Open to New Opportunities

2 å¹´

Much needed guidance ?

赞
回复
Suleman Bhatti

Software QA Engineer at ACE Money Transfer UK || Cypress || Playwright || Appium

3 å¹´

Appreciated. Great explanation

赞
回复

Quite informative

赞
回复
Salman Abdul Karim

Senior Data Engineer | Big Data | EDWH

3 å¹´

Great piece! I love it

赞
回复

要查看或添加评论,请登录

Imroze Aslam Malik的更多文章

社区洞察

其他会员也浏览了