Skip to main content

Computer Science BS

College of Sciences
Undergraduate major / Bachelor of Science

Computer Science BS Program

The computer science major is a solid, flexible program, focused on establishing a firm foundation in computing principles, the development of effective problem-solving and mathematical skills, and the systematic application of theory to the design and development of software. This program also provides preparation for graduate school in computer science. A minimum of 16 semester credits of major requirements must be completed at Metropolitan State.

Computer science is the study of systematic approaches for the design and development of application systems that support the functioning of core industries and services and the theory that underpins these techniques. The theoretical issues range from algorithms and data structures that can be readily applied to develop programs to far more abstract questions such as what is computable and the fundamental questions regarding computing efficiency. The field also studies the software and hardware approaches for the design of computer systems.

The BS program in Computer Science is so designed that at the time of graduation, all students will have the following skills:

  • A good foundation in the field through a set of core courses in the discipline, including programming and data structures, hardware and software architecture, software system design, and algorithms.
  • A good footing in essential mathematical tools such as discrete mathematics and calculus. 
  • The ability to work in group projects and communicate well via written and oral presentations.
  • Knowledge of the ethical and societal issues in computing.
  • A strong knowledge of an object-oriented language and a working knowledge of at least one other language.
  • With the knowledge and skills gained in this program, within a few years after graduation,most students would have the flexibility, versatility, and problem solving skills that can be applied to any problem domain, so they will be productively employed in the computing field in roles such as Computer Programmer, Software Developer, Software Engineer, and Software Systems Analyst.
  • All students will have become responsible citizens with a strong a sense of societal and ethical responsibility in their professional endeavors.


According to the US Department of Labor, the field is expected to experience exceptional growth, with rates that are projected to exceed all other occupational categories.  Most graduates of the program are successfully employed in the industry and some have gone on to master's and PhD programs at well-known graduate schools in the country.  

The following excerpts are taken from the Occupational Outlook Handbook, 2010-20 Edition of the Bureau of Labor Statistics. “Information. Employment in the information sector is expected to increase by 4 percent, adding 118,100 jobs by 2018. The sector contains fast-growing computer-related industries. The data-processing, hosting, and related services industry, which is expected to grow by 53 percent, includes establishments that provide Web and application hosting and streaming services. Internet publishing and broadcasting is expected to grow rapidly as it gains market share from newspapers and other more traditional media. Software publishing is projected to grow by 30 percent as organizations of all types continue to adopt the newest software products.” “Two of the fastest growing detailed occupations are in the computer specialist occupational group. Network systems and data communications analysts are projected to be the second-fastest-growing occupation in the economy. Demand for these workers will increase as organizations continue to upgrade their information technology capacity and incorporate the newest technologies. The growing reliance on wireless networks will result in a need for more network systems and data communications analysts as well. Computer applications software engineers also are expected to grow rapidly from 2008 to 2018. Expanding Internet technologies have spurred demand for these workers, who can develop Internet, intranet, and Web applications.”

Program Educational Objectives

The program is designed to help graduates achieve the following career and professional objectives. The program's graduates will:

  • Have the flexibility, versatility and problem solving skills that can be applied to any problem domain, so they will be productively employed in the computing field in roles such as Computer Programmer, Software Developer, Software Engineer, and Software Systems Analyst;
  • Be successfully employed and accepted into well-established graduate schools; - Have strong writing and presentation skills; and
  • Have a sense of societal and ethical responsibility in their professional endeavors.

Student outcomes

  • Apply knowledge of computing and mathematics appropriate to computer science.
  • Analyze problems and identify and define the computing requirements appropriate to its solution.
  • Design, implement and evaluate a computer-based system, process, component, or program to meet desired needs.
  • Apply mathematical foundations, algorithmic 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.
  • Apply principles of design and development in the construction of software systems of varying complexity.
  • Use current techniques, skills, and tools necessary for computing practice.
  • Function effectively on teams to accomplish a common goal.
  • Understand professional, ethical, legal, security, and social responsibilities.
  • Communicate effectively with a range of audiences.
  • Analyze the local and global impact of computing on individuals, organizations, and society.
  • Recognize the need for continuing professional development, as well as the ability to engage in it.

Related minors

Metro State connects you to your future. Receive information from Admissions about taking your first step toward a degree!

Already admitted? Find your advisor.

Current students: Declare this program

Once you’re admitted as an undergraduate student and have met any further admission requirements your chosen program may have, you may declare a major or declare an optional minor.

Future students: Apply now

Apply to Metropolitan State: Start the journey toward your Computer Science BS now. Learn about the steps to enroll or, if you have questions about what Metropolitan State can offer you, request information, visit campus or chat with an admissions counselor.

Get started on your Computer Science BS

More ways to earn your degree: Metropolitan State offers the flexibility you need to finish your degree. Through programs at our partner institutions, you can find a path to getting your Computer Science BS that works best for you.

About your enrollment options

Program eligibility requirements

Students expressing interest in the Computer Science BS when they apply for admission to the university will be assigned an academic advisor in the College of Sciences and will be given pre-major status. Official admission to this major program and review of prior course credentials is done directly through the Computer Science and Cybersecurity (CSC) Department.

To be eligible for acceptance to the Computer Science major, students must submit a College of Sciences Undergraduate Program Declaration Form when the following is completed:

  • Have minimum cumulative GPA of 2.5 for ICS 141, ICS 240, and MATH 215 or transfer equivalents  
  • Complete the General Education Goal I Writing Requirement
  • Complete all prerequisite courses with a grade of C- or better
  • Demonstrate competency in the Java programming language either by coursework (e.g., ICS 141) or passing a Java competency exam

Students who do not meet the requirements above or are on academic probation will not be accepted to the major. Students who are not accepted to the major will not be allowed to take advanced courses in the discipline.  All prerequisite and required courses must be completed with grades of C- or above. Transfer coursework equivalency is determined by the Computer Science and Cybersecurity Department.

Guidelines for completing the Computer Science major

  • Students expressing interest in the Computer Science BS when they apply for admission to the university will be assigned an academic advisor in the College of Sciences and will be given pre-major status. 
  • In order to declare the major, students should reference the program eligibility requirements noted in this catalog on the previous page and also noted on a student’s Degree Audit Report (DARs).
  • All courses for the major must be completed with a grade of C- or better.
  • A minimum of 20 semester credits of major requirements must be completed at Metropolitan State. At least 24 credits of coursework must be completed at the upper division level.
  • Students are responsible to both be aware of and abide by prerequisites for CFS, CYBR, and ICS courses for which they enroll, and will be administratively dropped from a course if they have not met prerequisites.
  • Transfer coursework equivalency is determined by the Computer Science and Cybersecurity (CSC) Department and additional guidelines are noted below.

Course requirements

Pre-Major Foundation (28 credits)

In order to declare a Computer Science (CS) major, students are required to complete the following pre-major foundation courses with a grade of C- or better. Math courses should be taken before, or concurrently with, ICS courses. Transfer students are advised to reference the CSC Department's General Guidelines for Transfer Courses and Prerequisites section of this catalog page.

Choose one of the two courses below.

ICS 140 Computational Thinking with Programming

4 credits

An introduction to the formulation of problems and developing and implementing solutions for them using a computer. Students analyze user requirements, design algorithms to solve them and translate these designs to computer programs. The course also provides an overview of major areas within the computing field. Topics include algorithm design, performance metrics, programming languages and paradigms, programming structures, number representation, Boolean algebra, computer system organization, data communications and networks, operating systems, compilers and interpreters, cloud computing, data analytics, mobile computing, internet of things, and artificial intelligence) database, internet, security, privacy, ethics, and other societal and legal issues. Lab work and homework assignments involving flow charting tools and programming using a language such as Python form an integral part of the course.

Full course description for Computational Thinking with Programming

ICS 265 C Programming

4 credits

This course is designed to provide a fast-paced exposure to the C programming language for students majoring in a computer-related discipline. The following topics are briefly reviewed using C syntax: looping, selection, variables, scope rules, functions and pass-by-value arguments. New topics include pass-by-address arguments, formatted and unformatted I/O, user defined types (enum, struct, union), preprocessing directives, file handling, pointers, pointer arithmetic, string manipulation and selected library functions.

Full course description for C Programming

Complete all five of the following courses. The cumulative GPA for ICS 141, ICS 240, and MATH 215 (or equivalents) must be at least 2.5 (A=4) in order to declare a major.

MATH 120 Precalculus

4 credits

This course is designed to prepare students for calculus. Topics include polynomial, rational, exponential, logarithmic, and trigonometric functions; the algebra of functions; multiple function representations; and an introduction to analytic geometry.

Full course description for Precalculus

ICS 141 Problem Solving with Programming

4 credits

Structure, design, and implementation of object-oriented computer programs. Topics include objects, classes, GUI, and layout managers. Introduction to containment, inheritance, and polymorphism. Programming projects involving multiple classes. Emphasis on methods, parameter passing, and arrays of objects. Exploration of problem-solving and algorithm-design techniques using pseudocode, Unified Modeling Language (UML) class diagrams, and simple patterns. Design of good test cases and debugging techniques.

Full course description for Problem Solving with Programming

Calculus Requirement

Choose one of the two courses below.

MATH 208 Applied Calculus

4 credits

This course provides an overview of the differential calculus for single and multivariable functions and an introduction to the integral calculus and differential equations, with an emphasis on applications to the natural and physical sciences. Particular topics covered in the course include limits, ordinary and partial derivatives, applications of derivatives, definite integrals, fundamental theorem of calculus, applications of definite integrals, models involving differential equations, Eulers method, equilibrium solutions.

Full course description for Applied Calculus

MATH 210 Calculus I

4 credits

Since its beginnings, calculus has demonstrated itself to be one of humankind's greatest intellectual achievements. This versatile subject has proven useful in solving problems ranging from physics and astronomy to biology and social science. Through a conceptual and theoretical framework this course covers topics in differential calculus including limits, derivatives, derivatives of transcendental functions, applications of differentiation, L'Hopital's rule, implicit differentiation, and related rates.

Full course description for Calculus I

Major Requirements (60 or 68 credits)

Once the pre-major foundation courses are complete, the following courses are required with a grade of C- or better. Students who haven’t declared or not accepted into the major will not be allowed to take 400-level courses in the discipline. Students are advised to reference the CSC department's General Guidelines section of this catalog page for further details on prerequisites.

Core Requirements (32 credits)

The Capstone course, ICS 499, should be taken in the final semester of your program, or at least during the semester you complete the last of the other required major courses.

ICS 311 Database Management Systems

4 credits

Covers concepts and methods in the definition, creation and management of databases. Emphasis is placed on usage of appropriate methods and tools to design and implement databases to meet identified business needs. Topics include conceptual, logical and physical database design theories and techniques, such as use of Entity Relationship diagrams, query tools and SQL; responsibilities of data and database administrators; database integrity, security and privacy; and current and emerging trends. Use of database management systems such as MySQL. Coverage of HCI (Human Computer Interaction) topics. Development of GUI front ends to databases with application of HCI principles to provide a high level usability experience. Overlap: ICS 311T Database Management Systems.

Full course description for Database Management Systems

ICS 365 Organization of Programming Languages

4 credits

This course is a comprehensive introduction to the principal features and design of programming languages. It provides a comparative study of programming paradigms including structured programming, object-oriented programming, functional programming and logic programming. This course is a survey of programming concepts and constructs including data types, control structures, subprograms and parameter passing, nesting and scope, derived data types, input and output, and dynamically varying structures. Also covered are the principles of lexical and semantics analysis.

Full course description for Organization of Programming Languages

ICS 372 Object-Oriented Design and Implementation

4 credits

System development using the object-oriented paradigm. Programming topics include: inheritance, polymorphism, dynamic linking, generics, Graphical User Interfaces, and data serialization. Use-case and state-based approaches for the discovery of conceptual classes. Design principles including the Liskov Substitution Principle, Open Closed Principle, and Stable Dependencies Principle. Design patterns such as Factory, Iterator, Adapter, Facade, Bridge, Observer, Command, State, Composite, Singleton, and Mediator. Employment of design principles, design patterns, and the Model View Controller in the design of object-oriented systems. System implementation. Refactoring. Group projects.

Full course description for Object-Oriented Design and Implementation

ICS 440 Parallel and Distributed Algorithms

4 credits

Covers design and development of parallel and distributed algorithms and their implementation. Topics include multiprocessor and multicore architectures, parallel algorithm design patterns and performance issues, threads, shared objects and shared memory, forms of synchronization, concurrency on data structures, parallel sorting, distributed system models, fundamental distributed problems and algorithms such as mutual exclusion, consensus, and elections, and distributed programming paradigms. Programming intensive.

Full course description for Parallel and Distributed Algorithms

ICS 460 Networks and Security

4 credits

Principles and practices of the OSI and TCP/IP models of computer networks, with special emphasis on the security of these networks. Coverage of general issues of computer and data security. Introduction to the various layers of network protocols, including physical, data link, network, and transport layers, flow control, error checking, and congestion control. Computer system strengths and vulnerabilities, and protection techniques: Topics include applied cryptography, security threats, security management, operating systems, network firewall and security measures. Focus on secure programming techniques. Programming projects.

Full course description for Networks and Security

ICS 462 Operating Systems

4 credits

Principles, techniques, and algorithms for the design and implementation of modern operating systems. Topics include operating system structures, process and thread scheduling, memory management including virtual memory, file system implementation, input output systems, mass storage structures, protection, and security. Students will implement process, memory, and file management algorithms.

Full course description for Operating Systems

Electives (8 credits) or Approved Minor

Either eight credits of approved upper-division electives, or complete a minor in a field approved by the academic advisor, is required for the Computer Science major.

Elective Option (8 credits)

Students are required to take a minimum of 8 credits of elective courses as part of the major and a means to meet the 24 credit upper division course requirement. Consult with academic advisor on acceptable electives. • At least 4 credits of electives must come from any 300-level or higher ICS courses, not already required for the major, with the following exceptions: ICS 350I, ICS 370, ICS 381, ICS 383, ICS 390, and ICS 495. • Repeatable exceptions: ICS 490 Special Topics in Information and Computer Sciences and ICS 492 Seminar on Emerging Technologies may be taken more than once for elective credit, so long as the topics differ. • Any upper division Cybersecurity, Mathematics, or Statistics course may be used as an elective except for internships and seminars. • Internship/Residency: A maximum of 4-credits in ICS 350I Individualized Internship may be spread over 1-3 semesters.

Minor Option

Work with your academic advisor to assess if the minor option is appropriate for your degree and career plan. Students are allowed to have up to 8 credits overlapped with their current or previously completed major or minors. Recommended fields for a minor include (but are not limited to): Industrial and Applied Mathematics, Applied Statistics, Biology, Chemistry, Computer Forensics, Cybersecurity, Design of User Experience, Game Studies, Physics, Project Management, and Technical Communication. Students with a previous Bachelor's degree should talk to their advisor about whether that degree can be used in lieu of a minor.

General Guidelines

Transfer coursework equivalency is determined by the Computer Science and Cybersecurity (CSC) Department and initially evaluated upon admission with updates documented on Degree Audit Report (DARs). When transferring coursework, please be aware of the following:

Transfer Courses

• Many universities and community colleges offer courses equivalent to all of our Pre-Major courses. Many technical colleges offer some courses equivalent to some of our Pre-Major courses. • Sometimes a course at the lower division at another university or college is equivalent to one of our upper division courses, or an upper-division courses at another university is equivalent to one of our lower-division courses. • For the purpose of calculating upper division credits for the major electives or for university graduation requirements, the status of the course at the institution where the student took the course is what matters.


• Math courses should be taken before, or concurrently with, foundation ICS courses. • Students are responsible to both be aware of and abide by prerequisites for CFS, CYBR, and ICS courses for which they enroll, and will be administratively dropped from a course if they have not met prerequisites • For some courses, prerequisites are enforced automatically by the registration system. • If your DARS report shows you have met the prerequisites for a course, and the registration system will not let you register, please contact your academic advisor.