Comp Sci major without High school exp?

<p>I am currently a high school senior who is taking the IB Diploma, with 4 HL classes and up keeping a 3.9 GPA.</p>

<p>However, I did not take Physics, Chemistry or Computer Science classes but I am competent in mathematics including calculus.</p>

<p>I was wondering if I were to take up Computer Science in college, such as University of Michigan or University of Virginia, would it be extremely hard, considering I did not take the necessary courses in high school?</p>

<p>I am very interested in Computer Science, however it seems that after reading multiple posts on CC, this major is very difficult, perhaps even MORE difficult since that I did not take physics, chemistry and computer science classes.</p>

<p>However I am aware that Computer Science is heavily math oriented. Would a good background in math be sufficient to excel in a Computer Science major, or would I absolutely need the high school physics, comp sci experience in order to excel in this major?</p>

<p>Any additional information would be greatly appreciated. Thank you in advance.</p>

<p>Having high physics would help you. But many people do CS without doing high school physics.</p>

<p>Many CS majors require two semesters of college physics so you may be at a disadvantage there. Calculus is typically a co-requisite for physics so you may have some benefit from having taken calculus though many of your classmates will probably have taken calculus in high-school too.</p>

<p>Some physics courses with very large lecture halls require you to think outside the box and sometimes require you to know material outside of the classroom or prerequisites. I think that professors do this sort of thing because the range of students is so wide in these courses.</p>

<p>Some kids start programming around 12 or 13 (some far younger) and you will be competing with kids with a huge head start. Some mid-teens have worked on open source projects with tens of thousands or even millions of lines of code so they have some familiarity with large project work - the kind of stuff that some CS graduates don’t see. These kids will generally have an easier time, especially if they have some exposure to discrete mathematics and any CS theory.</p>

<p>CS has multiple reasons as to why it is considered tough.</p>

<p>The early programming courses typically have a lot of lab assignments and you can spend a lot of time in labs (or on your own laptop) to get these done. The labs are not necessarily difficult but they can be a lot of work. There are usually a bunch of science requirements like physics and a few additional science courses and these are often a fair amount of work. Difficulty depends on your background and ability but you find out a bit of the difference between science and humanities majors here. In general, good execution and time management is needed to navigate the science courses.</p>

<p>There are typically a few hardware courses like logic design, computer organization and computer architecture. I’m sure that many CS majors that went in for programming wonder why they have to take hardware courses but understanding the hardware will generally make you a better programmer.</p>

<p>Some people get find difficulty in the math requirements. My son’s program requires Calculus I-III, mathematical statistics, and two semesters of discrete structures. He’s also taken linear algebra and differential equations which have been helpful for other courses. Some CS programs require linear algebra and differential equations.</p>

<p>After you’ve taken the introductory programming courses and the hardware courses, you get hit with the CS theory courses and these are often unlike anything that you’ve ever seen before. Many students just try to get through them with a passing grade as it is hard to see what the purpose of these courses are as an undergrad.</p>

<p>So the hard science courses, long lab hours, math requirements, hardware requirements and CS theory requirements can make for a long road to the degree. Many CS majors don’t really know what the roadmap is like; they take it one semester at a time. It’s hard to have the whole picture as a freshman or sophomore because the stuff later on is so foreign.</p>

<p>These are most of the reasons why CS is considered hard. Most college CS programs state that you do not need any prior CS or programming experience and that’s true but I think that you’re at a moderate disadvantage without it. There is always time to pick up a book on programming to learn it on your own or to take a summer class at a local college or university. Same thing with physics.</p>

<p>Our daughter took calculus I this past semester and told me that she didn’t think that she would ever get to it because it was considered hard. I explained that calculus was the beginning of math at the undergraduate level and that there is so much more to learn in math. I think that it’s hard for high-school students to grasp this paradigm shift.</p>

<p>That may sound scary but there are lots of people that do it every year.</p>

<p>CS programs tend to vary quite a bit in terms of how much math is needed. You should probably check with the universities you have applied to – contact the professors and ask them what topics they cover, what the actual prereqs are, etc. If there are online course notes, labs, etc., take a look at them – there may be material you are unfamiliar with, but try to get the gist of what’s being asked. In the meantime, try to get involved in an open-source project, even if you’re just writing documentation. Also, try to work through some discrete math and/or algorithms problems. Start off with the very simple stuff like binary search and try to get a feel for what is meant by order of growth and so forth.</p>

<p>My advice: don’t be intimidated by the abilities of your fellow students. Yeah a few will have a lot of experience, but most will just be pretending that they have a lot of experience. Exaggerating your programming abilities is the lying about how much you bench in undergraduate engineering colleges.</p>

<p>If anything it will just take you longer than the rest… I started out in trig in college so I just had a year of taking either one or more math classes a quarter with my GEs to be caught up with everyone else.</p>

<p>By the way, UMich CS in Engineering requires Calc I, II, III, Diffy Eq. and a Calc-based Stats. It requires less in LSA, but I don’t know how much less (I think it’s everything except Diffy Eq.)</p>

<p>Why would someone pretend to have a lot of experience in undergrad? Pretending won’t get you through labs, problem sets, etc. CS, like engineering, is where you demonstrate your abilities through what you accomplish in courses, coops, internships and research.</p>

<p>Maybe what I said isn’t commonplace, but I remember a lot of my classmates in my intro classes exaggerating their abilities and me getting a little intimidated by their swagger. Maybe I’m just overly-sensitive and easily intimidated.</p>

<p>I agree, it isn’t a useful thing to do.</p>

<p>I think you should take an intro class and see how much you like it. IMO, CS isn’t as hard as some make it out to be - for example, I have a harder time with physics. Then again, I’ve always liked CS and I’ve seen people who don’t struggle with the material. I think the best indicator is your math ability, but even that is not perfect. Have you ever programmed before? If you haven’t, you could try picking up Python and see how that feels.</p>

<p>You’ll be fine. If you haven’t picked up programming by now, I’d almost recommend you just wait to start in college. I’d recommend starting out in a CS track at your university and front-load the courses you take with courses you’d need for any major (or any technical major) and get a flavor for CS courses that way.</p>

<p>If you want to start programming now, there have been many discussions here about choice of language. Again, at this point, holding off wouldn’t be bad. The best recommendation I can make is to solve problems before beginning programming… in other words, already know exactly what you need to do before you start trying to write code. Many novices program first (and, disturbingly, some trends in SE seem to be going towards this as well) and that’s like building the bridge before you’ve thought about how much it can support.</p>

<p>Also, it’s entirely possible to be a good CS major and not be the best programmer. I’m certainly not the best programmer in my program, but according to several measures, I’m not doing bad compared to my peers. Nobody’s supposed to like programming… anybody who says they does hasn’t figured out that solving problems and typing in solutions are two different things.</p>

<p>This not totally related to the OP question (I have asked this too many times…), but someone mentioned that theory courses are not relevant or practical when a student graduates + enters the workforce. Can someone elaborate on this? Considering that theory courses are usually the hardest and the ones that CS major takes in his junior + senior year(s).</p>

<p>Most programming work doesn’t require theory.</p>

<p>Theory work is the <em>most</em> important part of the CS curriculum. Anybody who says otherwise… I just don’t see where they’re coming from. Yes, industry jobs stress the practical aspects, but an understanding of theory is fundamental to being useful. If you don’t care about the theory of computation, for God’s sake, stop clogging up CS programs so useful students can get better educations.</p>

<br>

<br>

<p>It is useful and necessary in a few areas but most programming doesn’t require theory.</p>

<p>I think we have different ideas of what “useful” means.</p>

<p>Useful is what gets the job done in your line of work. There’s far more programming work done without theory than with.</p>

<p>It’s always been my experience that knowing some theory has helped in programming. I can’t imagine any programming task so mundane that basic ideas about graph theory, algorithms, data types, or languages wouldn’t be useful in formulating, implementing, and testing solutions. And believe me, I can think of some pretty boring tasks.</p>

<p>Theory is the only reason anybody should major in CS. Even if you think most programming jobs don’t require theory, any reasonable person must ultimately agree with the above statement. Programming per se requires no formal education… especially any kind of programming for which formal training in theory would not be useful. If anything, people who want to program and don’t care about learning anything theoretical should look into technical or trade schools, or majors which emphasize computer systems (IT, IS, MIS, etc.) rather than compuation.</p>

<p>Try writing an aged trial balance report. You’re better off with a stronger knowledge of accounting than CS theory.</p>

<p>I’ve seen examples of CIS majors doing a better job writing business applications over CS majors. Many hiring managers think that they need CS grads when they’d be better off with CIS grads. But you do what you have to to get that first job.</p>

<p>I’d imagine those companies have a good reason for preferring CS grads (knowledge of theory), or else they are making bad business decisions (and hopefully the market would correct it).</p>

<p>Theory is fuel for the imagination. Naturally, you don’t need much imagination for most jobs, but life’s too short to go through it with that attitude. College is supposed to be about fostering academic and intellectual interests… not about cranking out drones. Even nowadays with rampant consumerism and anti-intellectualism, education should still be about understanding… if you want to get rid of that, let’s just call these places what they are, trade schools. 75% of the students in technical majors belong in trade schools anyway.</p>