Our undergraduate degree programs include a bachelor’s degree with a choice of 7 concentrations: general computer science, software engineering, networks and security, artificial intelligence/machine learning, human centered computing, computing systems, computer science education. The general computer science concentration is also available online.
We also participate in the Data Science bachelor’s degree program offered by the College of Natural Sciences.
Our graduate degree programs include a traditional Master of Science (coursework plus research), a Master of Computer Science (coursework only), and a Doctor of Philosophy (Ph.D.). We also offer our Master of Computer Science degree program online through CSU Online.
For a complete list of all our degrees, please visit our Degrees webpage.
Computer Science is the study of step-by-step computational methods for solving problems by encoding, storing, tracking, and transforming information. It involves the creation of fundamental software (sets of computer instructions) for solving practical and theoretical problems and performing tasks that lend themselves to computational solutions. It extends to the construction of software that learns and adapts to circumstances in the course of solving problems and also ways to enable computers to learn and adapt.
Computer Science is different from:
- Computer Engineering: The study of computer hardware design and the physical circuitry that make up computers. This field is related to electrical engineering and traditionally emphasizes a hardware up understanding of computers.
- Computer Information Systems: The study of the use of computers and computer software to solve business problems. It concerns learning how to set up systems to solve specific business problems, for example, tracking inventories, printing payroll checks, analyzing sales. CIS majors study some programming, but generally without the technical depth required to produce large and complex software.
- Information Technology (IT): The study of information technology in order to be able to maintain, upgrade, and troubleshoot computer systems used within an organization. IT is focused on solving systems problems and setting up computer technology for use.
Many students are attracted to the Computer Science major because they either like using computers or have enjoyed some prior programming experiences. Computer programming is a broad term covering a range of software development activities, ranging from writing small programs in order to perform simple tasks, to the creation of large user applications and systems software consisting of millions of lines of complex code.
Programming and programming languages are tools of computer science, but they are not its primary subject matter. There is a reason the major is called Computer Science and not “Computer Programming” since the emphasis is on the best methods for tackling problems whose solutions are not immediately apparent. Complex and abstract problem solving plays a key role in the application of computer technology to practical problems. Before you can effectively build complex and maintainable applications, you must have fundamental knowledge of programming tools, mathematical concepts, and software development methodology. Computer Science goes far beyond merely programming. A bachelor’s degree in computer science qualifies students for jobs as “software engineers,” the most common job title for graduates with computer science degrees. A bachelor’s degree in computer science also teaches students critical time management, problem solving, software engineering, networking, and security skills.
Computer Science is a vital, fun field of study, but it is not for everyone. Because it is such a broad field, your success can depend a great deal on selecting the program of study that best fits your interests. Please read the first two FAQs at the top of the page. If you’re still unsure if Computer Science is right for you, here are two analogies that might help you decide:
- Computer Game Analogy: 1) if you simply like playing computer games, CS is probably not a good fit; 2) if you want to program computers to play games, CS may or may not be a good fit; 3) if you are interested in the theory and practice of making games run quickly, or the precise mathematical techniques for modeling physical objects and processes on the screen, CS is likely to be an excellent fit.
- Car and Driver Analogy: Most people drive cars and even enjoy driving them, but this doesn’t mean they have the ability or talent to build or design automobile engines; likewise people who enjoy using computers may or may not be well-suited to the study of computer science. However, if you wonder how software works and why the designers made the choices that they did, and how to improve upon those choices, computer science is likely to be a good fit.
Take all the science, mathematics, and English you can. Strong mathematics skills are crucial for Computer Science majors, particularly during the first two years. New majors tend to struggle the most with weaknesses related to math. Clear writing is important to computer science since most software is developed by groups of software engineers. Computer scientists devote considerable effort to writing in the form of specification documents, progress reports, user documents, and internal communications arguing the pros and cons of alternative designs and approaches.
Computer programming courses are also useful. In particular, AP Computer Science prepares you for the CS major, and you can also earn 4 credits toward your degree. Transfer students should have taken at least one Calculus course and one computer programming course (preferably Java, if available, or C++). Prospective students planning to enter our program may also want to familiarize themselves with the Linux operating system, which is the primary OS used by most computer science programs.
Useful skills include: strong problem solving skills, logical thinking, community skills (teamwork, group participation), mathematical skills, writing skills, and a willingness to concentrate on precise details for an extended period of time.
Graduates with degrees in Computer Science are in high demand and work in a wide variety of interesting areas. In addition, new types of jobs and specialties are frequently created to keep up with changing technologies. Here are a few examples of computer science career areas:
- Software Engineering: Software engineers develop and maintain large-scale software, including commercial user software (e.g., databases, word processors, spreadsheets, etc.) and system software (e.g., operating systems, device drivers, language compilers, system utilities, etc.).
- Networks and Internet Technologies: This area involves developing networking software and and software for use across the Internet, including security software, internet user applications, and search technologies.
- Embedded Systems Programming: Graduates working in this field program electronic devices (e.g., cell phones, appliances, etc.) to perform specific functions. This skill is used in the production of scientific and test instruments, automobiles, computers, peripherals, and many types of gadgets.
- Graphics: This area involves programming computers to display information graphically. Graphics programmers work on projects such as advertising, scientific visualization applications, human computer interfaces, and games.
- Systems Analysis (Business Computing): Systems analysts produce and maintain software systems used in business operations, including accounting, human resources, inventory management, scheduling, reporting, and record keeping.
- Scientific Programming: This mathematically intensive area involves programming scientific and engineering problems for teams of scientists and engineers.
- Technical Writing: People with good writing skills and high-level computer skills produce a wide variety of technical guides, tutorials, manuals, proposals, white papers, and release notes for new and updated products and services.
- Systems Administration: Systems administrators install and maintain hardware and software on computer systems. They also maintain networks, security, and user accounts.
- Technical Support: This area involves performing sofware support, answering user questions, and addressing and resolving problems. Technical support specialists usually work for a large technology manufacturer or software company.
- Technical Consulting: consultants use software engineering principles to create custom software intended for specialized purposes usually in a narrow domains.
We will ensure you learn the skills you need to be competitive and successful in the field when you graduate. The Department’s close connections to the computer industry help us keep abreast of current industry practices. About 70% of our students have job offers upon graduation. Our graduates are highly sought after by major high-tech, computer software, and aerospace companies, like Microsoft, IBM, Hewlett-Packard, Intel, Motorola, Raytheon, and Lockheed-Martin. Employment opportunities are also rapidly growing in small and medium sized companies.
In a recent survey, the average starting salary of our students was much greater than other majors in our college (approximately $79,000 per year). This starting salary even edged-out Computer Engineering average starting salaries, which reflects a growing emphasis on software. Starting salaries can vary depending on a variety of factors, such as company size, location, and the employee’s qualifications.
Many students are able to receive a mathematical minor without taking on additional classes through careful planning, further helping them understand on a deeper level the role math plays in the computer science field.
Any minor related to science or technology can open additional careers or specializations for computer scientists.
A minor in computer science will teach basic programming and software engineering skills, time and project management skills, and increase computer competency. These skills can complement any area of study as the reliance upon computers will only increase.
Yes! Many undergraduate students assist professors with their research or start their own research through independent study. Check our research areas and participating faculty to learn more.
The definition of an internship is simple: any employment situation in which one does work related to what one learns in their major at school is an “internship.” This is true whether one is paid for the work or not, or whether the company is large or small. In Computer Science, nearly any technical job one gets while in school will meet the definition of an “internship.”
There are several ways to get a major-related job:
1. Use the Career Center. The CSU Career Center is the usual clearinghouse for school-related work with larger companies (since they seek employees in a variety of fields). These internships are more formalized and generally take the form of full-time summer work, though depending on the company’s proximity to CSU, it may also include part-time work during the school year. One must register with the Career Center to be eligible for these kinds of positions.
2. Find one on your own. For this, you should choose a company that hires a fair number of employees who are computer scientists. Compose a resume, and send the resume along with a letter indicating an interest in that organization and requesting an internship.
3. Get a lead from the Computer Science Department. When small to medium-sized companies in the Fort Collins/Front Range region wish to hire computer-related summer or part-time employees, they contact the CS Department and email job descriptions. They may or may not refer to them as “internships” but they are internships just the same. The CS Department forwards job announcements through its listserves to all our students’ CS Department email accounts.
Some internships, especially in other fields, are unpaid. However, given the demand for computer-skilled individuals in the workplace, almost any internship related to computer science will be paid.
Yes, though credit is not awarded merely for holding a job. Students who arrange with a CS Department faculty member to obtain credit for what they learn while working can obtain CS486 (Practicum) credit.
Such arrangements must be set up in advance of the work experience. Students interested in obtaining practicum credit should contact a CS faculty member with an interest in the general area in which the work is being performed and work out an agreement as to what will be required to obtain the credit (regular reports, journal, final report, etc.).
Specific instructions on practicum arrangements can be found in the FAQ question below: What are the rules for doing an independent study or practicum?
Practicum credit will not substitute for any required computer science (Group I) class(es).
Yes. The CS Department hires undergraduate students to fill two kinds of positions in the department:
- Laboratory Monitors (or “LabOps”) to secure the labs, perform minor system troubleshooting, and provide general help to students using the department labs. CS majors with 12 or more hours of CS coursework, and a GPA of 3.0 or better are eligible for LabOp positions.
- Undergraduate Teaching Assistants who are responsible for supporting the primary TA, teaching, and mentoring in computer science labs; supporting help desk and help session activities for CS courses; assisting the instructor for the course; and helping with grading and recitations as needed. Students who have a 3.5 or better GPA and a grade of A in the course they intend to assist in are eligible for Undergraduate Teaching Assistant jobs.
Job postings can be found on Handshake.
Job postings for Undergraduate Teaching Assistants are posted on Handshake.
The various independent study / research / practicum courses fall under the rubric of general electives. Currently, there is a limit of at most 12 credits for any combination of CS 486, CS 495 or 295, and CS 498. All these courses require a faculty/staff mentor to monitor their progress.
Independent Study (CS 295/CS 495) and Undergraduate Research (CS 498)
A student choosing to do an independent study or receive credit for undergraduate research can sign up for CS 295/CS 495 (independent study) or CS 498 (undergraduate research) under the supervision of a faculty/staff mentor. For research that is driven by the mentor’s research interests, CS 498 is the appropriate course; otherwise, CS 295/CS 495 is the appropriate choice.
Students interested in taking CS 295/CS 495/CS 498 should fill out the request form, which specifies the number of credits, the topic of study and scope, and the deliverables to be produced by the student. The choice between 295 and 495 depends on the skills to be learned and their equivalency to the level of course materials covered in a lower division course or an upper division course. The number of credits is according to the expected number of hours spent per week, with 1 credit per four hours of documentable work each week. It is recommended that students take 1-2 credits, with a maximum of 4. As a general guideline, grading should be S/U; if a student has performed exceptionally, an A can be given. It is recommended that, in addition to the research deliverables, all projects end in a reflection by the student about what they learned and the potential impact on their future careers.
Serving as an unpaid teaching assistant or other form of service to the department that cultivates a student’s technical skills is acceptable as an independent study.
Important Information about Request Form: Independent Study and Research requires permission from a faculty/staff advisor to serve as the instructor prior to registration. The course of study and expectations should be arranged in advance between the student and the chosen faculty/staff advisor. The number of credits for research/independent study will depend upon the amount of time spent per week, and for practicum additionally depends on relative alignment to computer science curriculum.
Please contact your Academic Success Coordinator for more information and to obtain Request Form.
Note to the Student: It is your responsibility to make the request for an independent study prior to the beginning of the semester.
Practicum (CS 486)
A practicum allows students to receive credit for a paid internship or job. Like an independent study, a practicum requires a faculty/staff mentor.
Unlike independent study, the requirement is 15-30 hours a week for 1 credit or 40 hours a week for 2 credits. Grading is pass/fail (S/U). To be eligible for Practicum, a student must have a job in a tech related field that requires the application of what is being learned in computer science courses. For example, software development or testing jobs are accepted, while IT/helpdesk jobs will not. Job specifications should be provided and should go into the student’s file.
Expectations: Two weeks before the end of the semester, the participating student is expected to submit a report with a reflection that includes the following:
- Description of the job and duties the student engaged in
- Description of what the student learned
- How the job/duties and what they learned relates to the CS Curriculum.
Practicum may not be paid by the department or the university. The student’s manager is expected to:
- Prior to the semester, provide a brief description and of the work expected from the student, AND
- Certify at the end of the semester that the student has participated as expected.
Yes. The integrated degree program (IDP) graduate admissions allows talented CSU students interested in computer science research to enroll in the CS graduate program and complete graduate courses while finishing their undergraduate degrees.
This program will be especially attractive to CS undergraduates who for a variety of reasons have accumulated enough undergraduate credit to graduate early. Such students can take courses towards their graduate degree while at the same time completing courses to finish their undergraduate degree.
The following rules apply to the B.S./M.S. program:
1. Students with at least 75 hours (including at least 15 upper division credits required in their major) and who have at least a 3.0 overall GPA may apply to the M.S. program in computer science under Track III admissions.
2. Courses taken towards the B.S. cannot be used towards the M.S., and vice-versa.
Please read the requirements for the M.S. program.
1. Fill out the online application and make sure to check the IDP box.
2. A written “statement of purpose” must be included with the application that contains:
- A summary of long term professional or personal goals.
- A statement regarding educational goals.
- A statement indicating how participating in the B.S./M.S. combined program will contribute the applicant’s goals.
3. Submit a resume including professional employment, special skills and competencies, publications, awards, or other recognition.
Ready to apply? Use the application guides here to get started. You’ll learn everything you need to know about what to submit, important deadlines, and what to expect during the application process.
The GRE exam is recommended, but not required, for all domestic M.C.S. applicants. International students without a transcript from a university located in the U.S. must submit GRE scores showing a minimum of 75th percentile on the quantitative section of the exam.
All applicants coming from countries in which English is not the official language, and who do not have an undergraduate degree from a country in which the official language is English (Canada, U.K., Australia, USA, New Zealand, etc.) must take the TOEFL or IELTS and earn at least a 92 on the internet-base exam or a minimum of 6.5 on the IELTS. The TOEFL may be waived for applicants who have been living in the U.S. for at least three years if they request a waiver. Please contact us for details.
As a practical matter the only deadlines are very close to the start of the term in which you plan to officially become a degree-seeking graduate student (perhaps six weeks before the start of the term). Since students can take up to three courses prior to admission and count them later in the degree, application deadlines should not be much of a concern for anyone.
Yes, up to three courses may be taken prior to admission and still be counted towards the degree.
Students entering the masters program are expected to be fluent in an object-oriented language (e.g., Java or C++). You should also have coursework in:
- Discrete Mathematics
- Data Structures and Algorithms
- Computer Organization/Architecture
- Software Engineering
- Operating Systems
We do not offer these courses online, though other schools may. These are very common undergraduate computer science courses and are widely available.
The Graduate School makes these decisions. Contact the Graduate School.
Only persons with degrees equivalent to U.S. bachelors degrees are qualified to apply for admission. A 3-year degree is not equivalent to the U.S. bachelor degree. (Nor is the 3-year degree plus 1 year of a second degree).
Probably. Please check the course web page CS414 about the course. Also check the CS314 web page CS314 (the prerequisite for CS414). You may want to review the CS314 text to determine if your background is sufficient.
Applicants who show exceptional promise for success may be admitted to the program with less than a 3.0 undergraduate GPA. You may want to consider taking two or three CS courses before applying for admission. If your grades in these courses are good (A’s and B’s), we can more easily admit you to the Masters program.
Applicants with graduate work in computer science from another university may petition to apply up to 12 hours towards their Masters in CS at CSU. Credit cannot be given officially until a student is admitted. However, students having prior coursework covering topics similar to those found in 500- and 600-level CS courses at CSU from accredited institutions, and passed with a grade of B or better, are very likely to have such requests granted.
No. Courses used to complete one degree may not be used towards another.
Yes. In collaboration with CSU Online we offer students the option of completing online some of the course requirements of the on-campus M.S., the M.C.S., or even the Ph.D. In consultation with your advisor, you may start online and finish on-campus, vice-versa, or a hybrid combination thereof.
ONLINE GRADUATE STUDENTS
No graduate programs in computer science are reviewed for accreditation in the United States by organizations like CSAB/ABET, but Colorado State University is a state-funded regionally accredited Carnegie I research institution (there is no higher level of accreditation in the U.S.). The online version of the Masters of Computer Science program is identical to the resident Masters of Computer Science program.
The CSU CS department does not offer financial aid to distance education students. There may be federal or state programs providing grants or loans for distance education. Please contact the Financial Aid Office.
Since the Ph.D. is a research degree, it must be completed in close cooperation with researchers. This collaborative learning experience is not well suited to distance education in the opinion of our faculty. We therefore do not offer the Ph.D. through distance education.
Courses run during two 16-week terms per year, plus a 12 week summer term, and must be completed on a schedule within the term in which they are taken. The fall semester runs from late August to mid-December, the spring semester runs from late January to mid-May, and the summer runs from mid May to early August. Students must join a course at the beginning of the term, or wait until the next semester.
9 courses are required for the MCS degree. Current tuition is $649 per credit (courses are 4 credits), so tuition is $2,596 per course. Note that tuition and registration for online courses is separate from that for on campus courses. All online students pay the same tuition regardless of residency (there is no in-state out-of-state tuition distinction for online courses).
Students are always encouraged to work ahead in their classes.
Anyone who pays tuition can take courses.
Please visit CSU Online.
How long it takes depends on how many courses you take at one time. Taking one course per semester (including summer) would enable one to complete the degree in approximately 3 years. More energetic students may be able to take 2 courses during the fall and spring semesters, and finish in 2 years.
Registration for online courses is done through the CSU Online website, *not* through the on-campus registration system (RamWeb).
Registering for courses is similar to buying a book on Amazon: go to the “Courses” tab and click on “Credit Courses.” This will lead you to a listing of subjects, and go to the courses listed under “Computer Science.” You can use the filter to select courses being offered in the next term, find the course you wish to take, and add it.