Must Read

Comprehensive Advice

What to do from the start? Or how do I start?

From Day one, it doesn't matter if you are in the CS major yet or not. Follow this. Learn Python. Learn the basics of Object Oriented Programming. Learn Data Structures and Algorithms. Do Leetcode every day (try solving 2 problems every day until you have done Neetcode All problems.) Follow this guide. Join the competitive programming club (they practice leetcode-styled problems). Why am I telling you to do all this? A few years back only big tech companies used to test leetcode-styled questions. But nowadays, to filter out candidates almost all companies are testing leetcode-styled questions. Companies think that if you are a successful problem solver (successful at solving leet code problems), they can teach you anything they give you. Even if you are not in the CS major or could not get a CS degree, if you have a good project portfolio and are a good problem solver, it's possible to stand out and get the internship (which can lead to a full-time offer). You just need to showcase yourself and network.

Doing Leetcode and being good at Leetcode will prepare you for COMP550. Before taking STOR435, prepare for STOR435 one year in advance. For many, these two courses are two of the hardest courses if you are pursuing the BS in CS. The public proof is here. You can also ask other students about this.

Discrete Structures (COMP283) or Discrete Math (MATH381/STOR315) is the foundational math course for CS. So study this course well, as it will help when taking COMP455 and COMP550 if you are pursuing the BS in CS.

Read Healthy Computing Habits.

You need to be programming/coding everyday.

What makes a course hard?

If the course does not have detailed slides. If the lecture style is fast-paced, not recorded, and difficult to take notes on. If the instructor is not clear in their teaching. If the resources for the course are not enough.

In such a case, speak to the instructor, or an academic advisor about this. If things aren't solved, speak to a dean, director of the department, or chairperson of the department.

From the very beginning of the course, you should give your 100% no matter what.

If you are uninterested in the course or find that you cannot get a decent grade in the course, speak with an academic advisor. You can drop the course before the drop deadline.

What CS courses are more practical or more theoretical?

There are popular Reddit posts saying that UNC CS is more theoretical and not practical. From my experience here it is a mix of both. The courses which are purely theoretical are COMP283 and COMP455. The courses which are more practical are COMP110, COMP210, COMP211, COMP301, COMP311, and many more courses. Other courses are a mix of practical and theoretical. I haven't taken every course in CS, but from my experience in the higher level courses, the theory is taught in class, and the practical aspect is done in the homework or programming assignments. In the higher level courses (by this time you have already completed most of the core courses), you would have to learn to program the new programming language yourself from documentation or any other tutorial (you should be able to do this by now as you have learned to do this from the core courses).

What are the most basic courses in CS?

It's what the CS minor covers: COMP110, COMP210, COMP283, COMP211, COMP301, COMP311. I would add in Databases (COMP421), if you need one more it can be COMP550.

Study Strategy

Follow the Study Strategy here.

How many courses and what type of courses should you take each semester?

My personal opinion is to take 4 courses (12-13) credits per semester (I understand that this might not be possible if you are double majoring). Taking more than this is difficult and can make your CGPA bad. MATH and Science courses at UNC are generally hard. Take a mix of general education courses with hard courses (CS, MATH, and Science courses). What students do is that they finish taking all their general education courses in the first couple of semesters and in the latter semesters they only take the hard courses and this ruins their CGPA. Don't ever take more than 3 CS courses at once (taking 2 highest is preferably better). You should take a mix of general education courses, CS Courses, and other courses. Take general education courses each semester, don't rush to finish taking all of them early.

Connect Carolina Course Registration Season

When it's time to put courses in the shopping cart in Connect Carolina, put in as many courses as possible. Because there is no guarantee that you can register, more the senior the student (students who have taken more credits/courses at UNC), the more they have the advantage of registering before every other student. Also waitlist yourself in courses, when they are filled, as early as possible to get a better chance of being enrolled in the course. Email the instructor about if there is a possibility to be in the course even after the seats are filled.

How to choose what to pursue as a career track?

There are so many sub-fields in the field of CS. Software development (Web Development [Frontend, Backend, Full stack], Mobile Application Development, Desktop Application Development, Systems Software development, etc.), DevOps, Software Testing (Quality Assurance), Cloud Development, Cyber Security, Network Engineering, Data Analysis, Data Science, Data Engineering, Artificial Intelligence, Machine Learning, Blockchain Development, Game Development, Virtual Reality, Business Analysis, Financial Technology Development, etc. The list goes on and on. Another sub-field can be CS research.

It's so difficult to choose from a big list. You can choose your career track by being inspired by others (friends, others who have already chosen a sub-field). To know more about each sub-field, Google and YouTube search about them individually. Research the sub-fields demand. Don't pick something which you don't like and something which does not have many jobs (if your goal is to get a job in that sub-field). Experiment with what you like. Once you have found what you like, follow a roadmap and also ask people experienced (in that sub-field working in the industry or doing research) for advice. It may take a while to find your fit. Most students choose Software Engineering, and AI/ML as sub-fields as careers. While other students choose the other sub-fields as careers. Finally gain experience (internships, projects, hackathons, competitions, volunteering, freelancing, etc).

Things/Topics I Think Every CS Student Should Know and Try

The resources below are free to do.

How many internships should you do?

Do as many internships as possible. Usually, students do 3 internships in the summer (of their sophomore, junior and senior years). Also, try doing one in your freshman summer. I know students who have done an internship in the Spring or Fall, but make sure that it does not make it difficult to do your semester courses. An internship can lead to a full-time job. Follow here for internship advice.

Joining CS Clubs and ECAs

Email/DM the people with responsible positions in the CS clubs to join the clubs. Join whatever club you are passionate about. If you cannot find your passion, create your own club based on your passion. Also, focus on your ECAs (Extra Curricular Activities) as it's part of a continuous journey of development in your life. Your ECAs can be important when applying to grad school and jobs. Great ECAs are focusing on building projects, leadership positions, participating in hackathons and competitions etc. Having a solid project portfolio is very important when applying for internships and jobs.

Also, focus on your ECAs (Extra Curricular Activities) as it's part of a continuous journey of development in your life. Your ECAs can be important when applying to grad school and jobs. Great ECAs are focusing on building projects, leadership positions, etc. Having a solid project portfolio is very important when applying for internships and jobs.

Specialization Tracks at UNC CS

UNC CS does not have course tracks (specialization tracks like a Software Engineering track, Game Development track, Cybersecurity track, AI/ML track, etc). There are elective COMP courses (courses numbered 420 or higher) to choose from.

About AI/ML

With ChatGPT, generative AI, etc out, and AI progressing every day. I believe that through your CS degree at UNC, you should try to gain at least the basic knowledge of AI/ML (even if you don't pursue a career in AI/ML).

I want to or couldn't get admitted into UNC CS

If this is the case, please contact UNC CS advising and UNC advising. They are better equipped to give you advice and guide you towards the best direction.
CS Major Application Link.
I also applied to the CS department and there was a risk of not getting accepted. If I got rejected the first time applying, I would re-apply a second time. If I could not major in CS, I would have transferred to another university. If I could not transfer to another university, I would major in something close to CS like Data Science, STOR, or MATH or something in STEM. If that isn't still possible, I would pursue a Master's in CS after majoring in something else. See, there is always a way, it's not the end of the world.

Avoid Bad People and Bad Surroundings

I love the culture of UNC where students eat healthy, go to the gym, exercise, and run/walk every day, they encourage and motivate each other to do good. They study rigorously, understand work-life balance, and help each other succeed. But then again some students do the opposite to these. Avoid bad people and bad surroundings.

Watch these Videos

Support the Author

Donate to the Author