Hot

6/recent/ticker-posts

Computer Science or Software Engineering?

Find out which major suits better for a software engineer

Photo by Juan Rumimpunu on Unsplash 

If you’re reading this you must be having these two questions in your mind.

“What’s the difference between Computer Science and Software Engineering majors?”

And…

“Should I choose Computer Science or Software Engineering if I want to become a software engineer?”

You’ll get answers for both questions plus I’ll give you three major sample interviews (Technical) questions as we go.


“Trust me I do know the struggle between these two thoughts. I remember when I started my degree in Computer Science at UCD, All I wanted to do was becoming a software engineer and spend the rest of my life behind a computer without zero physical activity. ( I wanted to be honest!)”

Also, I am confident that the majority of the readers have just agreed to my comment above.
Photo by Jefferson Santos on Unsplash

Alright, First of all, let me tell you that there’s quite a bit of similarity between the two majors but there are some key differences too. I’ll discuss and clarify both sides in detail.


I’m going to give you the simplest explanation for the term Computer Science you ever heard of.

What is Computer Science?

Computer Science is the study of how computers work, mostly from the theoretical and mathematical perspective.

What is Software Engineering

Software Engineering is the study of how software systems are built, including topics such as project management, quality assurance, and software testing.

Hmm. Let’s see the similarities and differences.

Many Similarities

  • You write code
  • You learn how to program and solve problems with different languages.
  • You learn about computers and how code is executed.
programming plays a huge part in both roles. Languages can be C, C++, .Net, Javascript, Python, Ruby… etc. And you’ll learn how the codes are being executed in any OS environment (Windows, Linux, Mac, Unix…etc).

Core Differences

CS and SE have fundamental differences.

  • Be very mindful of what are your expectations as a graduate from an employer’s point of view.
  • finding people that can write out simple programs and project is easy, However, hiring intelligent programmers to solve difficult programs is much harder.

Next big question, What are the contents of CS and SE?

Computer Science

  1. Algorithms (Merge, Sort, Tree traversal)

There are a lot of algorithms and most of these are pretty important. Basically it’s a kind of theory and concepts you have to learn when learning CS.

Read more about Merging algorithms.

Read more about Sorting Algorithms

Read more about Traversal (My favorite part)

2. Time complexity analysis (Big O Notation)

If you’re gonna start studying academic-wise CS this word is gonna come and haunt you during the 2nd and 3rd year! But nothing to be scared of that’s just a fantasy way of analyzing the efficiency of a specific algorithm.

Read more about Big O Notation

3. Data structures (linked lists, arrays, hash maps, etc)

These are all the things you need to use when building programs and systems that you will build out in the real world.

Read more about Linkest Lists

Read more about Arrays

Read more about Hash Maps

4. Software Development Fundamentals ( OOP, Programming, classes, interfaces, abstractions, encapsulation.. etc)

These are all very very useful topics for you to learn about programming and if you want to be a “Better” programmer, you must learn OOP and how to use that in real life example system development.

I’ll link my OOP article here when that one finishes. Until then Click here for more info.

Software Engineering

  1. Real-world application of engineering to solve more practical problems. Less theory more coding.

2. Analysis and Design of specifications for systems.

3. Practice software development from within a more professional capacity.

This is somewhere to learn about things such as management like how to split a project into different parts.


MY RECOMMENDATION

Photo by Clem Onojeghuo on Unsplash

Which major you should apply for? Some of you may probably have a good idea by now.

My recommendation is to go and study CS.
That is only if you can through the materials that actually being taught which Are also something quite difficult.

Why is it difficult? Because it’s filled with

  • Data Structures and Algorithms.

Algorithms and Data Structures. These two topics are extremely important and the most important concepts that will help you land a job.

  • Probability and Permutations.
  • A lot of Mathematical Terms.
  • Statistics.

If your professors are horrible, Just try to spend some extra time on Online videos looking for answers. There plenty of good undergraduate YouTubers who can explain a theory lot better than double Ph.D. professors.

Also, If you’re good with numbers or if you like to work with numbers, JUST GO FOR IT!

ULTIMATE GOAL

Photo by roya ann miller on Unsplash

Your ultimate goal should be to land a job or to get an internship after you graduate. I assure a lot of people out there reading this will agree with this for sure.

Don’t ever get demotivated by anything that comes your way. For example; I tried really hard to secure an internship in Data Science field ( Yes, I took a career change by Software Engineer to Data Analyst) as an International Student here in Australia by following the following article here:

And not to be worry, Software Engineering is still one of the favorites to change back from being in Data Science field:


Sample Questions (Technical)

Here are some Sample Questions that may help you to land a job or enter an internship.

  1. Travers a tree to find if an element exists on a node

I had this question asked one of my earlier job interviews and it definietly helped me to get the job offer.

Source: https://medium.com/@rajagoyal815

2. What’s a hashmap and what are hash functions and used for? And how does a hash map resize itself? (When the bucket is filled)

This is also a very important part to know when it comes to Software Development related interviews.

Source: https://medium.com/@OmarElGabry

3. Difference between interfaces and an Abstract Class? This is also one question I was asked in the second job interview.

  • this whole topic is pretty abstract and knowing this whole topic is something that will give you quite good leverage amongst other candidates.
Source: https://medium.com/@richardeng

If you couldn't solve, then I’d sadly say that you probably automatically failed a good percentage of internship and job interviews.

Again, this is just my personal opinion on the topic and definitely do your own research and make sure that whatever major you're applying for your specific university they offer you enough knowledge on the theory that will help you after you graduate.

PS: Always keep updated with new technologies such as Docker, Kubernetes, AWS stuff. I’ll make it easier for you to go through some interesting articles down below.

Thank you.


Important Reads:

Other than the already mentioned books and links, Here’s some special VIP stuff for those who stayed till the very end. You’re awesome!

Post a Comment

0 Comments