I was curious if anyone had advice for freshman who plan to major in computer science. I know many of these questions will vary depending on school, but if anyone could speak to any of these questions (or any other random advice) that would be great!
What kind of computer is ideal to have? What OS, laptop/desktop, etc.
What can be expected from first year CS classes?
Are there any good languages to try and learn the syntax of before entering?
Is it a good idea to try and juggle personal projects outside of class?
Thanks again, and feel free to mention any other advice!
@intparent Thanks for the suggestion! Just a quick add-on to that, how would you suggest building up a portfolio? Should I just not do that Freshman year? What if I am looking to get an internship the summer after, or is that not very realistic?
Grades are more important. Not sure what school you are going to, but my kid who was a CS major for a couple of years (before switching to physics) was able to do summer research starting after freshman year with a CS prof. She was able to continue the research after frosh year for credit during the school year. It has given her some nice material for her resume/CV, including experience presenting at a large Operating Systems conference. When she interviewed for internships, they didn’t care about personal projects, but she did have to prove mastery of some material from her CS coursework.
Any computer works really, but get familiar with a unix-based operating system. Personally I prefer Linux to OSX, but it's a matter of preference. I run Windows on my laptop for most general things but use Linux for most class projects (unless the project is for something specifically for Windows, which only happened in one class). It's served me perfectly well.
Expect a lot of programming at that stage. Your first couple classes will be programming, then as you move through the curriculum the emphasis is gradually taken off of programming and placed on the more theoretical aspects. You'll still have to program in a lot of your classes, but it'll be more of a tool for exploring concepts rather than the thing being taught.
Python has nice, clean syntax that's easy to learn. I would suggest playing around with it on codecademy (or something similar) to get a feel for it if you don't already have programming experience. Or just to learn the basics of it on your own time, because Python is a useful language to know in general.
Don't do personal projects during freshman year. That's the year for adjusting and getting your feet wet with the major. However, the summer after freshman year is a good time to start thinking about starting a small personal project.
As far as internships, frankly by the end of your freshman year you won’t know enough CS material to actually get one. Or at least, it’ll be difficult to find an employer that’d take someone that doesn’t know much about CS fundamentals yet. And the reasonable employers don’t expect you to have an internship between freshman and sophomore year regardless; that’s usually between junior and senior year, and sometimes between sophomore and junior year depending on what classes you’ve taken. I only know of a couple people who actually got internships before junior year started, and they were the kinds that had been coding since they were kids and were advanced in the CS program as a result. But my experience may not be the norm.
@PhantomVirgo Thanks for the in depth answer! I personally have been doing CS since my sophomore year (now a high school senior). I have been doing some app development, and I do plan to continue that into college. I’m glad to hear that after Freshman year we will get into the more theoretical aspects, as that is what interests me most. Maybe this Summer I will dip into some Python in my free time. Thanks again for all the suggestions!
When choosing a college to attend, pay attention to whether you are in the major from the start, or what you need to do to enter the major. Some colleges are capacity limited, so there may be high GPA requirements or competitive admission to enter the major.
@ucbalumnus Yep. Thanks for the advice! I have had that in mind since the beginning! Some of the schools I applied to I’ll most likely be accepted, but maybe not to the CS department so I might have to reconsider. Hopefully I’ll be directly admitted.
Any laptop that is portable and has long battery life. Trust me, Macbooks here are like <3 of the computer science world in college.
Contradictory to most people's belief of computer science, pretty much any laptops (and even netbooks) can be used for programming in college. However, it would be a bit uncomfortable (a lot actually) if you get those gaming laptops with 1 hour battery life in which you want to work outside your room....
Personally, I recommend an i5 laptop in case you want to do some light gaming but then again, my friend uses intel m and has no problems with it (and it has great battery life!) so ^^
First year CS. Hmm, pretty much everything a "beginner" programmer would learn during high school by himself in like 2-3 weeks (you are in college, not in high school) and then rest of the semester learning a bit more with a bit of projects.
Hmm. Java.
Personally, Java Java Java. I might be biased but I feel like Python is just way too easy in the syntax for a beginner and that learning Java would help you be more prepared to learn beginner programming.
I wouldn't recommend C though :P because that would be too confusing with pointers and what not.
However, I might be in the minority because my school teaches Python first to possible CS majors before going to Java (although I went straight to Java cause it makes more 'sense' to me.)
Plus, Java is like... I don't know, what a program should look like. I still can't understand how people live without brackets in their coding. Like, either I have OCD or I have OCD on that issue cause my brain goes crazy without those brackets >.<
(but Python does have its advantages being clean so ^^)
First years? No. Unless you are some uhmm....
Genius programmer who already know more things than what you would learn first 2 years of college. In which case, half of your college learning was pretty much (useless).
So in other words, na. However, I do notice a lot of people keep accentuating "projects are what matters, nothing else". Like honestly, if that was true, like 99% of CS majors wouldn't have internships at all first 2 or possibly even 3 years. The truth is, doing self projects is extremely hard (I mean, like what can you even build?) and most likely, not that good :/
Have fun in college. CS isn’t programming. CS is like the closest I seen to the purest applied mathematics so… You better love some mathematics (not to the point of Complex Analysis, Real Analysis, Modern Algebra, Topology etc
but some basic mathematics like Discrete Math, Linear, Algebra, etc. -the former math is… I don’t recommend unless you truly enjoy math as it is a rather GPA killer-)
I started programming since 5th grade. Trust me, you probably learn nothing programming by yourself compared to what you learn in college. Unless… you are some avid programmer in C who goes to hackathons and what not (I have seen very few freshmen who were like this… and oh gosh, >.<)
Also, like others reiterated, grades are more important. All those youtube claiming “portfolio above all” etc, etc. Honestly, how do you even build a portfolio in the start anyways without learning some basic contents in college? In fact, in addition to that, when you first apply for internships, how do you expect companies to trust you without the gpa? Projects? Well, the thing is, GPA probably tells a lot of work ethic and is more trusty for companies in the start so… (I mean, they have to start somewhere right?)… do well in college!
@ucbalumnus Yeah. Transferring into it is hard at UIUC, so I hope to be directly admitted. Thanks for the info. @AccCreate Thanks for all the advice. By the way I love math! Currently my favorite class in high school (except CS). I have worked with Java, Objective-C, and Swift. I think this summer I’ll try to learn a little Python despite your opposition. (When I started with Swift, I had a similar issue with the lack of semicolons). Looks like everyone has said not to tackle side projects, even if I could. Thanks again for all the advice, and I can’t wait to start college!
Don’t worry about learning languages - if you learn the fundamentals and the concepts / theory of CS, languages will become a dime a dozen. I learned Python in 2 hours once for an assignment because I wanted simpler syntax for a particular project, and other languages features made sense. In then end, focus on the core ideas - your math background should really help with that.
The easy syntax is exactly why it’s a good beginner language. Learning your first programming language is all about learning the basics of programming. Once you have those down, it’s easy to pick up any other language you need. So really, starting language doesn’t matter so much as long as you’re learning the concepts…but because Python is so easy to learn, that’s what makes it a good language to start with. Assuming you’re a true beginner with zero programming experience, you can take a week or two to learn the basics of Python easily, then transition to any other languages you need.
I do agree that C isn’t a very good starting language. That was my first language, and I learned it my freshman year of college. I was basically fine up until we learned about pointers, then things started getting more difficult.
Yes, this is important to understand. In fact, in my program we’re required to take at least one upper division math class as one of our electives. Heck, it’s possible to fill all your electives with upper division math classes if you want, so long as you complete the lower division prereqs and the core upper division requirements for CS.
If you’re interested in the more theoretical concepts, love math, and already have some programming experience, then you’re already way ahead of many people entering the major!
And I just want to second what @PengsPhils said. Being able to teach yourself the necessary tools for what you’re doing is critical for both school and industry, and learning the fundamentals is what allows for that.
@PengsPhils@PhantomVirgo Thanks for all the advice! This makes me feel a lot more at home with the major heading into Freshman year. I can’t wait to figure out where I will be studying!
Having been a TA for an intro CS class for many semesters, I’m not a big fan of the philosophy of the “C first” crowd saying to learn the most complex language first and everything is easier after that. We taught fundamentals with functional programming, and I encountered kids who were accomplished Java or C++ programmers who couldn’t (or refused to) change their mindset to wrap their heads around thinking about programming functionally. So my biggest advice is to keep an open mind. Don’t think you know everything because you know how to program. Also, the syntax is the easy part of programming. Your first year will likely focus on laying a strong foundation with learning how to build a program well, write clean code and tests, and think through the logic of what you’re writing.
I think you can teach intro CS with C or C++. You just have to go slow and not jump into the complex aspects of the language early on. Python and Java are certainly capable of being confusing to beginning CS students if the instructor goes too fast.
@nanotechnology@simba9 Thanks for the advice! It looks like the language preference varies a lot from person to person and isn’t a big deal. It is clearly shown that the concepts themselves are much more important to CS than the code. Thanks again!