<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>