The most obvious major for a potential computer programmer is computer science. And while freshman students can begin taking computer science courses, they will also need to take non-computer science courses to obtain the necessary prerequisites for more advanced major courses. This is especially true of math courses like calculus and matrix algebra, which are often prerequisites for advanced computer science courses.
Many advanced computer science courses require prerequisite math courses like linear or matrix algebra. These prerequisite courses, in turn, themselves require exposure to calculus as a prerequisite for enrollment, because math curricula are often cumulative. As such, a student would be wise to spend his freshman year taking a calculus class, especially if he didn't take calculus in high school. Even if a student did take calculus in high school, a more advanced level of calculus would be helpful.
Statistics and Probability
While students in computer science should have adequate understanding of calculus and more advanced mathematics, they should also be knowledgeable of a different but related field: statistics and probability. Significantly, much of computer science revolves around processing and organizing data. As such, understanding statistics and probability will help a student succeed in more advanced computer science topics, like data structures and computer architecture. Much of a programmer's job involves working with topics like SQL -- Structured Query Language -- which is specifically designed to store and organize data.
Introductory Computer Science
While a student of computer science will have four years to study the topic, it's worthwhile to start studying as soon as possible. Taking introductory courses during freshman year will help a student take the most advanced work possible during his upperclassmen years. This is because much of computer science course work is cumulative, and builds on prior knowledge. At NYU, for example, the computer science major requires a sequence of courses beginning with "Introduction to Computer Science" and advancing on to topics like "Data Structures" and "Operating Systems," with each class requiring the previous one as a prerequisite.
General Education Courses
In addition to working on computer science-related courses during his freshman year, a student would be wise to complete as many general education courses as he can. Doing so will ensure that upper-level courses can focus more closely on the student's preferred topic of study: computer science. Courses in English, the humanities or the social sciences should be completed as soon as possible, and freshman year is the perfect time to start.