The school year is starting, and freshmen everywhere are taking CS101 (or some equivalent) in their respective universities!
It's an exciting time...
For further actions, you may consider blocking this person and/or reporting abuse
Read a lot of code. One of the things I really struggled with starting out is believing that everyone was better than me at development/coding. This turned out to be hilariously untrue once I started reading code on github and source code from various established major enterprise projects.
Take courses that have seemingly nothing to do with CS especially in the liberal arts. By working that part of your brain, you see how technology is implemented (or misimplemented) in the present and past.
No matter how deep down the tech rabbit hole we go, we should never forget that real people are always impacted. The liberal arts can remind us of this...especially history and ethics (two I greatly enjoyed).
You don't have to be top in your class to stick around and set yourself up for a great career in software. And if things seem painfully abstract at times, it's because they are. Computer science is a theoretical discipline and you'll appreciate the lessons years later.
If it isn't coming to you quickly it's not a big deal. I wound up dropping out of CS and got back into code later. I'd probably have stuck it out if I knew then what I know now. π
I didn't know you were a fellow CS dropout! There's SO MANY of us! π
I am also. I was physics first.
I ultimately got my bachelor's but it wasn't in CS. It was a mix of math and CS because I had a lot of credits in both.
It's a good thing I learned my sysadmin stuff on the side.
Hey. So a fresher should plan and try to break down their period into 4 parts-
1st year
First year can be devoted to finding your call, your passion, and in the case of computer science, your domain of choice. Whether it be
web development
,data structures
,machine learning
etc.2nd year
Second year should be devoted to working on real life projects related to the chosen domain. Whether it be helping a nearby business set up or freelancing. Nothing fancy.
Third year
Third year should be devoted to finding decent internships and also brushing up on your coding for placements. If you score an internship in the third year, there is a high probability that it'll be convert to a pre-placement offer.
4th year
A great man once said-
So in your fourth year, focus on applying to loads and loads of jobs in all your dream companies. As well as brushing up on what you learnt in your 4 year curriculum.
I hope this helps :)
I wish I was told this freshman year lol
Everyone learns at different paces.
I started learning to code my first CS class and it was a huge learning curve. I also got my first C of my life in that class but I felt accomplished because I passed it. Donβt get down over a B, C, or even D. Not everyone is 4.0 material.
Also college comes at a point in our lives where so many things are happening. Not everyone will be able to graduate in 4 years and that okay. As long as you push through and get there one day itβll be worth it :)
Try to get involved in student orgs but donβt feel bad if you donβt. Iβve worked 30-40 hours a week since my second semester of college to be able to afford my cost of living. I donβt have a ton of extra time to spare but I make do with what I have :)
Talk to your TAs about anything you have questions about. I had a TA meet with me once a week when I was first learning C because I wanted to make sure I was keeping up with the material. It definitely helped me get an A in that course.
Make sure they want to do it, and that they don't feel 100% locked into their major. CS and any type of engineering has a very rigorous workload, so if they don't truly want to do it then it can be very stressful. At my school at least engineering majors required around 180-190 minimum required units. Which means basically that you cannot graduate in 4 years without luck, hard work, maximum load each term, and very likely summer classes. Most non STEM majors required around 80-100 if memory serves. This advice can really apply to any very demanding major to be honest.
Also use the internet to help learn! There are so many amazing resources now for coding. Honestly one of the more important skills being a developer is knowing how to find information.
Edit: My experiences are past tense, as I am no longer in school. Just some wisdom from my personal experiences :)
Yes!! Sadly at my university there are minimal CS classes in the summer except the beginner courses. Itβs a large course load and most of the credits canβt transfer to other majors. After my freshman year I contemplated switching majors because I didnβt feel smart enough but almost none of my course would transfer so I would have to basically start over. (Except for my basic english class and general courses I took).
I used Codecademy to try to get ahead in some courses where we were learning the basics of a language.
Other than the somewhat obvious point of making sure to get an internship if at all possible, three things in particular come to mind:
******* extremely useful information ******
Book reading list
Practice your craft.
I just got done reading Deep Work recently, fantastic book!
Put every single piece of code you write on git. Every little project, every little investigation into how to do X Y or Z in language A B or C. Make sure that anyone can follow your readme step by step and make it run the exact same way you have it running.
This shows that you know more than a few core languages, this shows that your interested in things that "don't matter" because you like computers and code and not just making $$$. It's good practice learning how to organize your projects to other people can run them, it's good practice in writing documentation, it's good practice in commenting code in places that might be confusing.
Get the proper IDE for the code you're writing.
I write * a lot * of php... I'm not saying phpStorm is the best ide but i'm saying that without something that could auto complete and give argument hints to methods i'd spend a lot more time googling how to pass things in / scrolling through code to find references / where things are declared in my code base.
Read.
Other.
People's.
Code.
You will learn so much from other people's code. How NOT to do things, how to do things you didn't know where possible, how NOT to comment, how to comment, how NOT to organize projects, how to organize projects... you get the idea. Most importantly this will both humble you from thinking you are good at anything and shed light on how you are good at some things.
Answer stack overflow questions
Once you have some familiarity with get a stack overflow account and make a bookmark for a feed of the newest questions related to the that you feel familiar enough with and start answering questions.
Remember that the internet tends to distill down to showing you the best produced by the best people.
We aren't all "rockstar" programmers, we aren't all 10x programmers, we aren't all redefining what it means to ________. Projects, languages, packages, libraries, programs, repositories, and technologies that make waves that get noticed in "main stream" are the best of the best... the cream of the crop.
don't get discouraged thinking "i'll never write something like that".
Contribute to projects, look up how others have contributed to projects as well!
Most importantly don't lose sight of why you got into comp sci. If you're here just for money then you might be in for a bad time down the road.
Don't forget that everyone struggles, everyone. There are days where i envy anyone who gets to be outside during their work day. There are days when looking at a monitor or touching my keyboard make me phsyically ill.
But by keeping side projects that you enjoy really true love to work on, you'll keep the spark of imagination and creativity alive in your work and that will encourage you to trudge through the 19th assignment of the semester!!!
On the opposite side of the token it's OKAY to have other hobbies and desires outside of the computer world and will make you a more rounded person for that! Definitely learn to unplug completely and just go do ANYTHING that doesn't involve a screen. literally anything that isn't infront of a screen that you do regularly will make sure you don't get burnt out!
The main thing that I would say is focus more on concepts and just don't rush to learn a lot of languages at once.
Learn concepts like closures, higher order functions, inheritance, composition and the basic data structures. Then apply those concepts in the languages that you learn. Because languages may change but the concepts will stay.
Complete Assignment Help is a leading assignment help website that helps students with online assignment writing. Hire a professional assignment writer for a low price.
Make your resume. A resume is basically a piece of paper where you list out all your achievements, skills and qualifications. A lot of students first build their resume in third or fourth year when they are sitting for internships/jobs.
Create your resume now. It might be an empty piece of paper now. But you can plan your semesters in such a way that you can add a few skills to your resume each semester.
Don't just rely on the curriculum, be curious and experiment on your own and build things.
I can only speak from my experience in the UK, and it's pretty general advice, but we are!
Do your assignments early! You don't need to rush them or anything, no need to hand them in early, but don't leave it all to the last minute if you can help it.
If you have a problem, ask for help again, as early as possible. That's not to say the moment you get stuck, have a look around first, but you'll probably know when you're having on a problem you need a hand with.
Answer the questions! If you think you have an answer spill it! If you're wrong hopefully your lecturer will explain how and it might help your understanding. If you're right; major street cred XD
Don't copy, write your own notes and your own code (assuming you write any on the first day!).
Invest time in learning outside of the lectures. Focus on areas that you might not touch in class, e.g. specific paradigms, languages, tools, etc. Perhaps consider a side project when you have some down time. Its one of those 15 minutes a day things that turns into 100's of hours of practice.
Free for students and other discounts! Stock up on a the freebies from being a student. GitHub has offers, Microsoft in general have offers, Apple does, HP does, AWS does, the list goes on.
Personally I wished I documented the whole process a bit more.
I hope some of that helps :)
My advice applies to way more than just CS, but participate in class. I didn't start doing this until part way through my second year and it made a huge difference. I was able to get on campus jobs as a TA for the courses that I took because of it. One professor wrote essentially a letter of recommendation to the professor in charge and an another professor essentially just straight up offered me the position because I participated in the class that I was taking from him (I was taking the course he needed TAs for as well and he had substitutes for it on occasion so he also knew I was in it), then when I was looking for full time positions my senior year, I was also able to ask my professors for letters of recommendation and just overall had really good relationships with them. (One of them even used the title Dr. with me because of how much he respected me)
Another thing is teach others the concepts that you are learning. My job as a TA really helped me with that, but also I was able to do it working together with my friends. You understand things so much more fully when you are able to teach them.
Last piece of advice is make friends in your classes. You might not see them again after you graduate, but I made good buddies with some people and we would do group projects together or ask each other about classes they've already taken or things like that.
Starting out is great! But i would ask you to spend a little time on the ending, I have yet to find a retired coder. Being in CS means always learning always expanding. Take some time and look at the long game, i know many older web devs who couldn't adapt and left the industry while others adapted to other careers. The end game must be considered if you want to eat.
You get as much out of the CS classes as you put in. If you do the bare minimum, you won't learn nearly as much. Learn to love documentation. It is intimidating to read at first but it is an invaluable resource. It also helps you write better documentation in the future.
Have a git. Play with different stuff. Extracurriculars robotics or other groups. Ta's research ask get involved.use university resources to the max.
Work your way through K&R from beginning to end and do every single exercise.