Undergraduate Program

Why Major in Computer Science?

Computing has become ubiquitous, impacting almost every aspect of modern life and playing an important role in many technological advances. You don’t need previous programming experience to do well in CS@Mines.

Students who enjoy solving puzzles, thinking logically, and looking for patterns are well-suited to computer science. Our curriculum reflects a mixture of theory and practice, including discrete structures, design and analysis of algorithms, principles of programming languages, computer architecture, operating systems, and software engineering.

Computing jobs are among the highest paid, and computing professionals generally report high job satisfaction. Graduates from our program have found employment with many different types of companies including technology, engineering, and financial companies.

CS BS graduates with positive outcomes in 2018-19

Average starting salary for CS BS graduates in 2018-19

Job Opportunities

The U.S. Bureau of Labor reports that the number of computing jobs has been increasing steadily for the last decade. Predictions for new jobs through 2024 also favor computing, and the number of students earning CS degrees is currently not keeping up with projected demand.

But it’s more than just jobs opportunities, it’s also happiness. A Wall Street Journal article on the 10 Best Jobs put Software Engineer in the first spot, with Computer Systems Analyst as number four.

Hear from our students, alumni and faculty why CS@Mines might be perfect for you!


The Computer Science program is accessible to students with or without prior programming experience.
CS@Mines allows you to choose your path with the following options:

CS General

This curriculum allows students to tailor senior level electives toward personal and career interests in areas such as algorithmic robotics, applied algorithms and data structures, high performance computing, machine learning, networking, or security and privacy, graphics, or mobile and web development.


CS + Data Science

All fields are experiencing rapid growth in access to massive amounts of information. In partnership with the Department of Applied Mathematics & Statistics, CS + Data Science retains the CS Core and focuses electives to help students analyze and make meaning of large amounts of data, resulting in smarter decision making, reduction in costs, and increased productivity. Data Science is an emerging discipline at the intersection of computer science and statistics, focusing on the extraction of knowledge from data.


CS + Computer Engineering

Advances in engineering revolve around automation, computerization, and digitization. In partnership with the Department of Electrical Engineering, CS + Computer Engineering retains the CS Core and focuses electives to help students identify the ways hardware and software concepts such as programming, digital circuit design, and embedded systems transform any tech field.


CS + Robotics and Intelligent Systems

Many disciplines of engineering focus on the physical creation and kinematics of robots and intelligent systems. In partnership with the Department of Mechanical Engineering, CS + Robotics and Intelligent Systems retains the CS Core and focuses electives to help students bring life to systems and give machines the ability to operate autonomously.


Degree Overview

The CS degree at Mines is designed to be accessible to students with or without prior programming experience. The Introduction to Computer Science course introduces students to the building blocks of CS and provides a brief introduction to procedural programming in Python. The second computing course, Programming Concepts, emphasizes development of programming skills in an object-oriented language. The third introductory course, Data Structures, provides an understanding of the classic data representation schemes, algorithms, and algorithm analysis that form the foundation for all advanced work in computing.

Required CS courses provide the fundamental skills and knowledge that are critical to success in computing. These courses reflect a mixture of theory and practice, including discrete structures, design and analysis of algorithms, principles of programming languages, computer architecture, operating systems, and software engineering. In the required Elements of Computing Systems course, students consolidate their understanding of CS by constructing a simulator for an entire modern computer from the ground up. The capstone field session course provides students an opportunity to work in teams to create software products for real clients.

Elective courses in CS allow students to explore a variety of important computing topics, such as graphics and visualization, human computer interaction, artificial intelligence, database management, and web programming. Elective courses often relate to recent trends in computing, covering topics such as security, high performance computing, wireless sensor networks, and mobile applications.

Computing is a broad field with applicability to most science and engineering domains. The CS minor is designed for students in other disciplines to receive a solid grounding in the basics, which should enable them to apply their computing skills to solve problems in other domains.

Computer Science Core

The flowchart below lists all required computer science courses numbered 200 and above with arrows indicating prerequisites. This is not intended as a list of all required courses but rather an indication of the breadth and depth of material covered as part of the Computer Science degree.

Overall, all Computer Science majors must take at least 12 credit hours of computer science courses, not including CSCI-101.

CS Core Curriculum flowchart

The Computer Science core consists of the following 11 courses:

  • CSCI-101 Introduction to Computer Science
  • CSCI-261 Programming Concepts
  • CSCI-262 Data Structures
  • CSCI-306 Software Engineering
  • CSCI-341 Computer Organization
  • CSCI-358 Discrete Mathematics
  • CSCI-370 Advanced Software Engineering
  • CSCI-400 Principles of Programming Languages
  • CSCI-403 Database Management
  • CSCI-406 Algorithms
  • CSCI-442 Operating Systems

Computer Science Electives

In addition to the core courses listed above, students must take at least 12 credit hours of elective computer science courses. Any 400-level course with a prefix of CSCI will meet this requirement.

Free Electives

Also in addition to the core course requirements, students must also earn an additional 19 hours of free electives. Unlike the Computer Science Electives, the free elective hours are not restricted to courses within the department but rather may be use for minors or majors with other departments or simply to take classes that you find interesting.


The requirements for your major may be dependent upon the year you enter Colorado School of Mines and are reflected in the corresponding bulletin. Sample flowcharts indicating a generic schedule for a Computer Science major’s four year career are available. However, the information represented in the sample flowcharts are recommendations. For specific course requirements, please refer to the appropriate catalog. The current as well as past catalogs are available at catalog.mines.edu.

Minors, ASIs and Double Majors

If you plan to obtain two BS degrees, be sure to review the Multiple Degrees section of Undergraduate Degree Requirements in the catalog.

If you plan to obtain a minor or ASI from another department, you should review these general requirements.

BS + MS in Computer Science

The Department of Computer Science is pleased to offer students the opportunity to earn both a Bachelor of Science (BS) and a Master of Science (MS) degree simultaneously.

Features of the Combined Program

  • The CS@Mines Combined Program is for students who earn a bachelor’s degree in Computer Science (CS) OR a bachelor’s degree in another program with a minor degree in CS. Students earning a minor in CS should complete the following courses in order to be prepared for the graduate program: CSCI 261, CSCI 262, CSCI 341, CSCI 306, and CSCI 358.
  • Students may be able to complete a Non-Thesis or Thesis M.S. in at least one additional year to the B.S. Normally a Master’s Degree requires 36 credit hours and takes two years to complete. Under the Combined Program, students will count two courses(CSCI406 and CSCI442) toward both degrees, so only 30 additional credit hours are needed to complete the degree.
  • Students selecting the Non-Thesis option will be required to complete 30 credit hours of coursework.
  • Students selecting the Thesis option will be required to complete 18 credit hours of coursework and a thesis (12 credit hours).
  • There are two required graduate-level courses: CSCI564 (Advanced Architecture) and CSCI561 (Theory of Computation). The remaining courses are all electives.
  • No more than 6 credits of elective courses may be taken outside the Department.
  • No more than 9 credits of 400-level course work may count toward graduate degree requirements (i.e., at most one 400-level course in addition to CSCI406 and CSCI442). Only CSCI406 and CSCI442 may be double counted.

Admission Criteria

  • Students may not apply for the combined program until they have taken five or more Computer Science classes at CSM (classes transferred from other universities will not be considered). This requirement may be met by any 200-level or above course with a CSCI prefix (e.g., CSCI261, CSCI306, CSCI442, CSCI498 etc.) except CSCI370, CSCI499 and CSCI 274. CSCI 274 is only a one-credit hour course. Since CSCI370 (Advanced Software Engineering) is based almost exclusively on team work, it may not be counted as one of the five courses. Independent study courses (i.e., CSCI499) have varying requirements and are therefore also not included.
  • Students earning a minor in Computer Science should complete the following courses in order to be prepared for the graduate program: CSCI 261, CSCI 262, CSCI 341, CSCI 306, and CSCI 358.
  • Students should have an overall GPA of at least 2.5 and a GPA of 3.2 for courses in the major. The calculation of GPA in the major will be based on all 200-level or above CSCI courses except those excluded above (i.e., CSCI370, CSCI499 and CSCI 274). If a course is taken multiple times, all of the grades will be included in the gpa calculation.
  • Interested students with a lower GPA must write an essay to explain why they should be admitted to the program. See Application Procedure below.

Application Procedure

  • Complete the Online Application.
  • For online applications from CSM undergraduates, the application fee is only $25.
  • Indicate whether you intend to pursue the Non-Thesis or Thesis M.S. in Mathematical & Computer Sciences. Note that you may change from Non-Thesis to Thesis (or vice versa) if you change your mind.
  • Students are not required to take the GRE or submit letters of recommendation. The system currently requires letters of reference, even though our department does not. You will need to enter a first and last name for the recommender (doesn’t have to be real, you could use ‘a’ for first name and ‘b’ for last name). You should also specify that the recommender will not be submitting online.
  • Students must submit a transcript.
  • Students who meet the gpa requirements do not need to write a unique “Statement of Goals” for the application. To ensure that your application will be correctly processed, the Statement of Goals should be: “I am currently a CS major at CSM. I meet the gpa requirements. I would like to apply for the Combined B.S./M.S. program.”
  • Students who do not meet the gpa requirements must submit an essay to explain why they have a low gpa and to provide convincing arguments for their ability to do graduate level work.
  • Students may apply as early as the first semester, Junior year. Admission must be granted no later than the end of registration, last semester Senior year. Be sure to check the application cut-off dates on the Graduate School website.
  • Since you are not allowed to “officially” work on both degrees at the same time, you must enter a date for “expected BS completion date” on the Educational Information page of the online application. Then enter an Intended Entry semester for the graduate program that is after that date.

Taking 500-level Courses

  • Students should not take 500-level courses until they are admitted into the program. You must be admitted by Census Day of the semester you begin to take graduate courses.
  • Students taking 500-level courses during their senior year will need to obtain approval from their advisor and the course instructor. You should check the box for Graduate Credit only. If you have been accepted into the program prior to taking any graduate courses, those credits should automatically transfer to your MS degree as soon as you receive your undergraduate degree.
  • If a student takes 500-level courses prior to obtaining their BS degree, his or her account will have a hold that says Graduate CSM BS Degree (Need Proof of CSM BS Degree). This hold will remain until the start date of the graduate program. Note that students must turn in an undergraduate transcript upon graduation, and there will be a delay before they are able to register for graduate courses.
  • If prior consent is not received or if the student has not been accepted by OGS as a combined program student, all 500-level graduate courses taken as an undergraduate Combined Degree Program student will be applied to the student’s undergraduate degree transcript. If these are not used toward an undergraduate degree requirement, they may, with program consent, be applied to a graduate degree program as transfer credit.
  • Some courses within Computer Science are co-taught as 400/500 level (e.g., CSCI474/CSCI574). Since there are a limited number of graduate courses offered each semester, students who want to pursue the combined master’s should enroll in these courses at the 500 level.

Financial Aid

  • Courses taken as an undergraduate student but applied directly toward a graduate degree are not eligible for undergraduate financial aid or the Colorado Opportunity Fund.
  • Upon completion of their undergraduate degree requirements, a Combined Degree Program student is considered enrolled full-time in his/her graduate program. Once having done so, the student is no longer eligible for undergraduate financial aid, but may now be eligible for graduate financial aid.
  • To complete their graduate degree, each Combined Degree Program student must register as a graduate student for at least one semester.


  • If possible, students should apply during Spring semester of their junior year, in order to begin taking 500-level courses during the Fall semester of the senior year.
  • To be able to earn the MS degree in five years, students will need to carry a heavier load during Spring semester of the junior year and both semesters of the senior year. Note that there is no requirement to finish in five years, so students may follow a more normal schedule and take an extra semester to complete their degree.
  • The timeline for completing the degree will vary depending on whether students select the thesis or non-thesis option. These are described below.

MS Project Track

Students are required to take 6 credits of CSCI700 to fulfill the MS project requirement. (It is recommended that the 6 credits consist of two consecutive semesters of 3 credits each.) At most 6 hours of CSCI700 will be counted toward the Masters non-thesis degree. Deliverables include a report and a presentation to a committee of two EECS faculty including the Advisor (at least one committee member must be a CS faculty member). Deliverables must be successfully completed in the last semester in which the student registers for CSCI700. A student must receive two “pass” votes (i.e., a unanimous vote) to satisfy the project option.

MS Thesis Defense

At the conclusion of the MS (Thesis Option), the student will be required to make a formal presentation and defense of her/his thesis research. A student must “pass” this defense to earn an M.S. degree.

You may want to review the detail requirements in this sample timeline. For students in the combined program to complete the degree in five years, items listed in the sample timeline as 1st Semester and 2nd Semester should be completed during the senior year.

Minors and Areas of Special Interest

For the most up-to-date information, please consult the catalog.

Area of Special Interest in Computer Sciences

  • CSCI-262: Data Structures
  • CSCI-306: Software Engineering
  • CSCI-358: Discrete Mathematics & Algebraic Structures
  • CSCI-406: Design & Analysis of Algorithms


  • CSCI-262: Data Structures
  • CSCI-306: Software Engineering
  • CSCI-341: Computer Organization
  • CSCI-442: Operating Systems

Minor in Computer Sciences

  • CSCI-261: Programming Concepts
  • CSCI-262: Data Structures
  • CSCI-306: Software Engineering
  • CSCI-406: Design & Analysis of Algorithms
  • Two 400-level CSCI classes


  • CSCI-261: Programming Concepts
  • CSCI-262: Data Structures
  • CSCI-341: Computer Organization
  • CSCI-442: Operating Systems
  • Two 400-level CSCI classes

Minor in Computer Engineering

The Computer Engineering minor combines key software and hardware concepts, such as programming skills and digital circuit design, to create hardware-software systems that are used in embedded systems. Students should choose 18 credits from the classes below.

  • CSCI-261: Programming Concepts
  • CSCI-262: Data Structures
  • CSCI-341: Computer Organization
  • CSCI-442: Operating Systems
  • EENG-281 Intro to Electrical Circuits, Electronics and Power or EENG 282: Electrical Circuits
  • EENG-284: Digital Logic
  • EENG-383: Microcomputer Architecture

*If a student is in a major that does not require CSCI261, the student must take only three of the CSCI courses.

Minor in Data Science

The Data Science minor is an emerging discipline at the intersection of computer science and statistics, focusing on the extraction of knowledge from data. This minor introduces students to necessary skills in data analysis, manipulation, and storage.

  • CSCI-261: Programming Concepts
  • CSCI-262: Data Structures
  • CSCI-303: Introduction to Data Science
  • CSCI-403: Database Management
  • CSCI-470: Intro to Machine Learning
  • MATH-201: Probability and Statistics for Engineers


  • CSCI-261: Programming Concepts
  • CSCI-262: Data Structures
  • CSCI-303: Introduction to Data Science
  • MATH-201: Probability and Statistics for Engineers
  • MATH-334: Intro to Probability
  • MATH-335: Intro to Mathematical Statistics

Minor in Robotics and Intelligent Systems

The Robotics and Intelligent Systems minor focuses on the software needed to operate robots and other intelligent systems. The software processes information to achieve objectives, learn from past experience, adapt to a changing environment, and interact smoothly with people.

  • CSCI-261: Programming Concepts
  • CSCI-262: Data Structures
  • CSCI-404: Artificial Intelligence
  • CSCI-473: Human-Centered Robotics
  • MATH-201: Probability and Statistics
  • MEGN441: Introduction to Robotics

A complete list of undergraduate courses can be found in the Computer Science Undergraduate Catalog by clicking on the “Courses” tab.