This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
As someone who graduated last semester and luckily found a full time software engineer position(super average salary), I just wanted to share my experience being an average CS major at UMD.
About me:
First I had zero coding experience and was very average in math. I also had few part-time jobs throughout the semesters (mainly on weekends).
Course history/experience/tips:
Here was how I started out my first two semesters:
- Calc II: C
- CMSC131 (Fawzi): C
- CMSC132 (Fawzi): C
- CMSC250 (Kruskal led): C
- STAT400: C
As you can see, I sucked at math and I barely escaped the major weed out classes. My advice for CMSC131/132 is focus on time management. You probably will hear this a million times, but try to start your projects early. Or at least read the project descriptions ASAP. This habit will help you out in the long run. Don't be like me and have a panic attack at 11:59pm trying to submit the project.
CMSC250 is when you first get a taste of the power of the curve. Probably one of the most stressful class for me because of my weakness in logic and math. Now don't depend on the curve, but you can expect it at the end. Aim to complete all your homework as it will be very helpful for your grade at the end.
The first summer I took a summer class and got a part-time job around campus:
- CMSC216 (Nelson): C
Nelson is probably one of my favorite CS professor (highly recommend for any classes). Keeps the class entertained with dark/light humor but also really tries to teach the material to everyone. In CMSC216 you will mainly code in C and assembly. Assembly was the hardest part for me and the projects will take some time. Just like CMSC131/132, start early!
This was probably my worst semester mentally/physically:
- CMSC330 (Anwar): C
- CMSC351(Telli): C-
STAT401(C): C
Like Nelson, Anwar is another great CS professor that I highly recommend. CMSC330 is a very project oriented class and deals with new languages. In my case, it was ruby, rust, and ocaml. Mainly coding projects in ruby and ocaml. There was an optional rust project for extra credit which I did not do. Had I taken this class without 351, I probably would've gotten a B.
Now for the infamous CMSC351, the gatekeeper for all CS majors. I would definitely recommend you NOT to take it with Kruskal. I've seen many Kruskal students with a soulless gaze coming out of that class. Telli was just manageable. His lectures will bore you with this monotone voice and the endless material. This class is also where you learn the true power of the curve. I passed this class with a 50% after getting a 30% on my final. Make sure you DO NOT miss any homework and try your best to at least get an above class average score on one exam. I had sleepless nights waiting for the curve to be announced. Anxiety level was at 100 and my body was a skeleton. I wish the best to those taking it.
Sigh of relief and cruise control on (sort of):
Once you complete 351, you will feel like worst is over. That depends. Now it's more of a choose your own adventure. You get to decide what to take and what professors you want (sometimes). Here is a quick overview of what I did:
Winter term:
CMSC388A: A-
CMSC388B: A
Spring2020:
CMSC414(Marsh): B
CMSC420(Marsh): B- took a P instead
CMSC451(Kruskal): D took a P (passed because of COVID)
Fall2020:
CMSC421(Regis): B
CMSC425(Miller): B-
CMSC436(Porter): A
Winter term II:
CMSC388T: A
First if you can take advantage of winter term STIC like cmsc388A/B/T. Consider these to be miniature GPA boosters and almost guaranteed A's if you put in some effort. As I mentioned about Kruskal for 351, my dumb butt wanted a challenge and decided to take 451 with Kruskal. Worst mistake ever and I was only bailed out by COVID because of P/F. You will hear some negative remarks about professor Marsh but honestly he isn't too bad. It just could be worse. CMSC420 is a class that is pretty much required since its a prereq for few classes. Think of it as a continuation of cmsc132. My Fall 2020 semester was just classes that were personally interesting to me. Introduction to AI (CMSC421) isn't exactly what you think it is and can be a bit boring. Game programming (CMSC425) is pretty cool and you get to work with a group throughout the semester to develop a game. Mobile development (CMSC436) is fairly easy if you have knowledge in any mobile development. We did android development, but I had experience with React Native and Xcode prior.
End Result:
Finished with a GPA just under 3.0. Landed myself a full time software engineer position with an average but comfortable salary. I applied for about 90 companies, was interviewed by 6, and had 2 offers.
General Advice and Tips:
- Manage your time and stress. Start projects early. Find some outlet for stress (mine was lifting 5 times a week). Sometimes you might feel stuck on a project/assignment. Relax, take a break, stretch once in a while.
- Start thinking of personal projects early and do tutorials related to them. I was able to list at least two personal projects to my resume. None of which I completed or even coded successfully. However I had fundamental understanding of the technology I was "using" and what it did in my program. For example: I said I used Firebase as my database for a mobile app. I did some tutorials on using Firebase and was able to explain why and how I used it for my personal project. Companies will rarely ask you to see your code.
- Apply for internships early and have your resume prepared and reviewed. Most companies want to see at least one professional experience relating to your degree. Applying for internships will sometimes feel more stressful than your classwork. Do your research early and take advantage of career fairs. I got no offers from career fairs but I was able to learn what they were expecting just by speaking to company reps.
- Use online resources but be smart about it. Chegg was my go-to(if you have the budget for it). But it was worth it for me, especially for classes like 250, 351, 451, and my math classes. Don't just copy and paste answers, try to understand it before even attempting to copy it. Google will be your best friend.
- Don't be shy and use the office hours. TAs are there to help. If possible meet a few early if you can and see who is the most helpful so that when you actually need help you will know who to go to. That being said don't abuse them either. Don't just expect them to give you answers. A good TA will nudge you towards the right answer.
- Take care of your body. It's easy to sit for hours in front of your computer. Don't be like me and come out of school with chronic back/hip pain. Stretch and hydrate!
- Solidify your knowledge in at least one language. Mine was Java which was used for all my coding interviews. Google <your programming language> interview questions and keep studying them even if you aren't preparing for an interview.
Anyways thanks for reading this jumbled mess. I hope everyone stays safe and good luck this semester. You're welcomed to PM me but remember I'm not going to be giving solutions/answers to the classes I've taken. All I can offer is my experience and tips. Also I apologize for any grammatical errors and this horrible formatting. I was literally just typing as I was thinking.
Subreddit
Post Details
- Posted
- 3 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/UMD/comment...