Computer Science

Computer science is an exciting and challenging field that has impact on many parts of our lives. Computer scientists craft the technologies that enable the digital devices we use every day. They develop the large-scale software that powers business and industry, and advance the computational techniques and write the software that supports scientists in their study of the world around us. Many new applications of computing technology remain to be discovered. Indeed, computing will be at the heart of future revolutions in business, science, and society. Students who study computer science now will be at the forefront of those important advances. 

Computer science is concerned with how computers are constructed, how they store and process data, how they are used in problem-solving, and how the quality of those solutions is assessed. It is about the science of creating software for a variety of users. It is about understanding how that software interacts with the hardware on which it is run. Computer science goes well beyond the machine to the study of how people interact with the technologies around them. Applications of computer science reach far and wide. 

Computer science graduates from the University of Colorado Boulder are engaged in a wide variety of jobs with many different companies in locations all over the world. They produce the software and systems that touch lives every day in fields ranging from communications to finance to publishing. They are, of course, software developers, but also have become teachers, writers, doctors, lawyers, scientists, military leaders, and entrepreneurs. They work at some of the largest, most influential companies in the world, at research institutions, non-profits, and at the smallest start-ups of every type imaginable. And many lead highly successful companies that they themselves have founded. 

Program Objectives 

Within three to five years after graduation, computer science graduates:

  • are prepared to be valued individual contributors in a software-oriented organization, to be programmers and designers in an entrepreneurial pursuit, to lead small projects and generally begin preparation for a management career, or to succeed in rigorous postgraduate programs.
  • are able to focus their careers on pure computer science technology or to bring computer science expertise to a companion discipline.
  • are prepared, where appropriate, to specialize in a broad spectrum of computer science sub-disciplines, ranging across formal computer science (e.g., computational science, bioinformatics, and theory), cognitive science (e.g., human/machine learning, human-computer interaction, collaborative work, and human language technologies), and core computing (e.g., systems, networks and software engineering).

Program Outcomes 

Students completing the undergraduate degree in computer science will possess:

  • an ability to apply knowledge of computing and mathematics appropriate to the discipline.
  • an ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  • an ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
  • an ability to function effectively on teams to accomplish shared computing design, evaluation, or implementation goals.
  • an understanding of professional, ethical, legal, security, and social issues and responsibilities for the computing profession.
  • an ability to communicate effectively about computing topics with a range of audiences.
  • an ability to analyze impacts of computing on individuals, organizations, and society.
  • a recognition of the need for and ability to engage in continuing professional development.
  • an ability to use current techniques, skills, and tools necessary for computing practice.
  • an ability to apply mathematical foundations, algorithm principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
  • an ability to apply design and development principles in the construction of software systems of varying complexity.

Department Computing Facility

The Department of Computer Science supports its own domain, www.cs.colorado.edu, and a modern computing infrastructure that supports its research and educational missions. The department has a variety of computing facilities for use by faculty, staff, and students. These include general purpose computing labs provided by the university, additional instructional labs and administrative computing resources provided by the department, and specialized labs dedicated to the work of individual research groups. A wide variety of computing resources are available so that students have the opportunity to learn about and use cutting-edge equipment and software.

Course code for this program is CSCI.

Minor Program

The department offers a minor in computer science that is available to undergraduates on the Boulder campus. The minor offers a basic introduction to the field of computer science; requirements may be found at www.colorado.edu/cs/bsms-degree/minor.

Bachelor's Degree Program(s)

Bachelor's Degree in Computer Science

Requirements

Requirements for the BS degree in computer science include course work in computer science, mathematics, natural science, and the humanities and social sciences, as well as free elective course work. The degree provides considerable freedom in the selection of specific courses to fulfill these requirements, allowing students to tailor the degree to their individual needs and interests. A student may not earn both the BS in computer science and the BA in computer science degrees from CU-Boulder. A student may not earn both the BS in computer science and the minor in computer science from CU-Boulder.  

The department’s goal is to prepare students for an intriguing and satisfying career in computer science. The huge number of technical jobs and the shortage of people to fill them mean that opportunities are great for today’s computer science graduates. 

Tracks in the BS in Computer Science Curriculum

Tracks in the curriculum are geared toward a variety of specializations. These tracks reflect the fact that computer science is transforming such disciplines as medicine, the sciences, and social science. The tracks also illustrate various software and hardware themes within the field of computer science. In addition to the more general degree requirements for all computer science majors, majors need to complete the course requirements for one of the following tracks: 

General Computing. The general computing track provides a broad-based background drawing from the entire spectrum of computing. Depending on the courses selected, students can be exposed to the design and architecture of computers, the development of software, and the theory and techniques used in designing efficient computer programs. Students can also learn about application of computers to problems in science, in human-computer interaction, and in data management. This track prepares students for careers in many different areas of computer science. 

Computational Biology. Computer science is rapidly becoming critical to many areas of biology, medicine, and health. This track’s flexible requirements reflect the diverse fields of computer science that are applied to problems in biology or health, including human-computer interfaces, database design and data mining, algorithms, machine learning, and numerical computation. Students graduating from this track will be ready to work in teams to develop the software and systems for a variety of biomedical applications. 

Computational Science and Engineering. Problems considered by computational scientists include climate and weather prediction, spacecraft design, video game construction, and the discovery of new medicines and treatments among many others. This track emphasizes courses in numerical computation, high-performance scientific computing, and supporting areas of science and computer science. It provides exposure to leading-edge computing systems. 

Human-Centered Computing. Students in this track will learn how to design, build, and evaluate socio-technical systems of the future that will tie together technology with communication, collaboration, and other social processes to address the challenges and opportunities of our world. The learning opportunities in this track draw on and integrate research in human computer interaction, design of interactive systems, computer supported cooperative work, computer supported collaborative learning, educational technology, tools that support creativity, user-developed knowledge collections, and gaming. 

Networked Devices and Systems. It is the role of networked systems professionals to select, design, deploy, integrate, evaluate, and administer network and communication infrastructures. This track emphasizes courses in deployment of networks with specific design and protocol requirements, applying networking to deploy services in multimedia, information storage and distribution, security, and services on the Internet such as the Web and e-mail, and operating systems analysis and management. 

Software Engineering. Software permeates the very fabric of modern society. This track emphasizes courses in core software engineering concepts, methods, and tools, the understanding of user requirements and user interface design, the ability to design programming languages and software tools that support software development, and working in teams to achieve complex objectives. The position of software engineer is consistently ranked as one of the "best jobs" in the USA. 

Systems. Computers benefit almost every part of our lives—from entertainment to cars to phones to medical devices. Computer systems engineers work with hardware and software to help application developers make these devices a reality. This track emphasizes courses in direct control of hardware through low-level software, the design and implementation of operating systems and programming languages, networking and performance analysis, as well as embedded system design.

Additional information about the department’s programs is available at www.cs.colorado.edu or by contacting the department at 303-492-7514.

Curriculum for BS (CS)

Required Courses and Semester Credit Hours

First Year
Fall Semester

  • CSCI 1000 Computer Science as a Field of Work and Study—1
  • CSCI 1300 Computer Science 1: Programming—4
  • APPM 1350 Calculus 1 for Engineers—4
  • Natural science—4
  • Humanities and social sciences—3
    Semester credit hours—16

Spring Semester

  • CSCI 2270 Computer Science 2: Data Structures—4
  • APPM 1360 Calculus 2 for Engineers—4
  • Natural science—5
  • Humanities and social sciences—3
    Semester credit hours—16

Second Year
Fall Semester

  • CSCI 2400 Computer Systems—4
  • CSCI 2824 Discrete Structures—3
  • CSCI —— Track Foundation/Core or Computer Science Elective—3
  • CSCII —— Track Foundation/Core or Computer Science Elective—3
  • Free Elective — 3
    Semester credit hours —16

Spring Semester

  • CSCI 3104 Algorithms— 4
  • CSCI 2830 Linear Algebra with Computer Science Applications — 3
  • CSCI ——  Track Foundation/Core or Computer Science Elective — 4
  • Humanities and social sciences — 3
    Semester credit hours —14

Third Year
Fall Semester

  • CSCI 3155 Principles of Programming Languages — 4
  • CSCI —— Track Foundation/Core or Computer Science Elective— 4
  • Probability or statistics — 3
  • Humanities and social sciences — 3
  • Free elective — 3
    Semester credit hours —17

Spring Semester

  • CSCI —— Track Foundation/Core or Computer Science Elective— 3
  • CSCI —— Track Foundation/Core or Computer Science Elective— 3
  • CSCI —— Track Foundation/Core or Computer Science Elective— 3
  • WRTG 3030 Writing on Science and Society — 3
  • Natural science — 4
    Semester credit hours—16

Fourth Year
Fall Semester

  • CSCI —— Track Capstone — 4
  • CSCI —— Track Foundation/Core or Computer Science Elective — 3
  • Natural science — 4
  • Humanities and social sciences — 3
  • Free elective — 3
    Semester credit hours—17

Spring Semester

  • CSCI ——  Track Capstone — 4
  • CSCI —— Track Foundation/Core or Computer Science Elective — 3
  • Upper-division humanities and social sciences — 3
  • Humanities and social sciences — 3
  • Free elective — 3
    Semester credit hours—16
    Total credit hours—128

Graduate Degree Program(s)

Graduate Study in Computer Sciences

General Admission Requirements

Graduate students should consider a major in computer science if they are primarily interested in the general aspects of computational processes, both theoretical and practical, e.g., methods by which algorithms are implemented on a computer, techniques for using computers accurately and efficiently, design of computer systems, and languages and interfaces. A student who is primarily interested in the results of a computer process and its relation to a particular area of application should major in another field and consider a minor in computer science.

Applicants are considered for graduate study in computer science if they hold at least a bachelor’s degree or its equivalent from an institution comparable to the University of Colorado. They should have considerable programming experience, sufficient mathematical maturity to understand pure mathematics courses at the upper-division level, and a number of academic computer science courses.

Applicants should satisfy the following requirements for mathematics courses: at least three semesters of mathematics at the level of sophistication of calculus or above, courses such as: differential equations, linear algebra, probability, statistics, and abstract algebra. These courses need not be in a mathematics department; however, they should require mathematical maturity expected of a junior or senior mathematics undergraduate.

In computer science, applicants should have the equivalent of the following University of Colorado courses: CSCI 1300 Computer Science 1: Programming; CSCI 2400 Computer Systems; one course out of CSCI 3155 Programming Languages or CSCI 3753 Operating Systems; CSCI 2270 Computer Science 2: Data Structures; and either CSCI 3104 Algorithms or CSCI 3434 Theory of Computation; and one other upper-division computer science course. Upper-division courses in areas such as artificial intelligence, databases, numerical computation, operating systems, parallel processing, software engineering, and others can be substituted for courses on the above list. However, courses on the list are prerequisites to many of the graduate-level offerings and admitted students lacking their equivalent are usually required to make them up, without graduate credit. Students who lack this computer science background but who have exceptionally strong credentials in another field should contact the department for individual consideration.

Applicants should have a GPA of at least 3.000 (on a scale of 4.000). Applicants having the listed qualifications are, if accepted, classified as regular degree students. Applicants with an average below 3.000 and above 2.750 and/or lacking certain of the prerequisites listed above are sometimes considered for admission as provisional students.

These requirements apply to both the master’s and PhD programs. Applicants should be aware that admission to both programs is very competitive, and meeting the requirements does not ensure admission. Admission to the PhD program is especially competitive, and successful applicants, in general, have records considerably stronger in breadth and quality than these minimum standards suggest.

PhD applicants are required to submit scores from the aptitude portion of the Graduate Record Examination (GRE). GRE scores are optional for master’s applicants but are required if the undergraduate GPA is less than 3.000 (but above a 2.750). These scores are encouraged if previous study was at an institution lacking a strong national reputation.

Financial aid is available to PhD students in the form of teaching and research assistantships and fellowships. Aid is sometimes available for master’s students as teaching assistants or graders, but positions are assigned only at the beginning of a semester.

Admission to the graduate programs (both MS and PhD) is offered only for fall semester. Applications from both domestic and U.S. students and international students should be received by December 15.

Master’s Degree

Admission requirements for this program are given above under General Admission Requirements. Plan I (thesis) or Plan II (no thesis) may be followed. In either plan, students must complete 30 credit hours of course or thesis work. The requirements for Plan I are as stated under the general requirements of the Graduate School section in this catalog. Students in Plan I receive 6 credit hours for thesis work and are examined orally on their thesis. Under either plan a student may take 6 hours in a minor field. Students are expected to work out an acceptable program of course work with their advisor. Specific courses depend on the student’s background and field of specialization, but four of the courses must satisfy a breadth requirement.

Doctor of Philosophy Degree

Admission requirements for this program are listed under General Admission Requirements. Students in this program must pass a preliminary examination in one subarea of computer science to be eligible for admission to PhD candidacy. A minimum of 30 semester hours in courses numbered 5000 or above is required for the degree, but the number of hours in formal courses are ordinarily greater than that total. Specific courses depend on the student’s background and field of specialization. 

Following the formal course work, a student must pass a comprehensive examination aimed primarily at determining whether the student is adequately prepared to begin doctoral thesis work. 

Finally, students who have completed a minimum of 30 semester hours are expected to prepare a doctoral thesis based on original research in the field of computer science. After the thesis has been completed, an oral final examination on the thesis and related topics is conducted by a committee of at least five graduate faculty members.

Further details on either the master or doctoral degree programs are available at www.colorado.edu/cs/current-students/graduates.