Skip to main content

 Register today for fall courses

Professor in front of computer monitors with students

Computer Science BS

About The Program

The computer science major provides 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. Metropolitan State’s computer science program, available on campus in Minnesota, also provides preparation for graduate school in computer science. A minimum of 16 semester credits of major requirements must be completed at Metro State to earn a Bachelor of Science in Computer Science.

Remote video URL

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 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.

Computer science degree career prospects

According to the U.S. Department of Labor, the computer science 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 Metro State computer science program undergraduates have gone on to master's and PhD programs at well-known graduate schools in the country.

Program Educational Objectives

The computer science program is designed to help graduates achieve the following career and professional objectives. 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
  • Have a sense of societal and ethical responsibility in professional endeavors

Computer Science student learning outcomes

  • Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
  • Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
  • Communicate effectively in a variety of professional contexts.
  • Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
  • Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
  • Apply computer science theory and software development fundamentals to produce computing-based solutions.

How to enroll

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 interested in the Computer Science Bachelor of Science degree will be given premajor status when admitted to the university. They will be assigned an academic advisor in the College of Sciences.

For acceptance into the Computer Science major, students must submit an Undergraduate Program Declaration Form when the following conditions are met:

  • have a minimum GPA of 2.5 for ICS 141, ICS 240, and MATH 215 or transfer equivalents;
  • have a grade of C- or higher for all major prerequisites;
  • complete the General Education Goal I Writing Requirement; and
  • demonstrate competency in the Java programming language either by coursework (e.g., ICS 141) or passing a Java competency exam.

Students in premajor status are unable to take any 400-level major courses. Official acceptance into this major program and the review of transfer coursework equivalency and qualifications are done through the Computer Science and Cybersecurity (CSC) Department.

Courses and Requirements


Requirements for completing the Computer Science major

  • All newly admitted students will be assigned academic advisors and are placed in premajor status until they have met the program eligibility requirements. The Undergraduate Program Declaration Form must be submitted for a student to be considered for acceptance into the major.
  • All courses in the major must be completed with a grade of C- or better.
  • At least 16 credits of major requirements must be completed at Metro State University.
  • At least 32 credits of upper-division (i.e., 300-level, or higher) coursework must be completed in the major.
  • Read and understand the guidelines for transfer courses and prerequisites as listed in the General Guidelines section.

Major Requirements

+ Premajor Foundation (28 credits)

To declare the Computer Science major, students are required to complete the following premajor foundation courses with a grade of C- or higher and a minimum GPA of 2.5 for ICS 141, ICS 240 and MATH 215 or transfer equivalents. For further details, reference the General Guidelines section below.

Choose one of the following two courses.

This course introduces fundamental concepts in computer programming and the development of computer programs to solve problems across various application domains. Topics include number systems, Boolean algebra, variables, decision-making and iterative structures, lists, file manipulation, and problem deconstruction via modular design approaches. Lab work and homework assignments involving programming using a language such as Python form an integral part of the course.

Full course description for Computational Thinking with Programming

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 of the following five courses.

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

Structure, design, and implementation of object-oriented computer programs. Topics include sequential structures, selection structures, repetition structures, recursion, quadratic sorting algorithms, exceptions, objects, and classes. Emphasis on methods, parameter passing, arrays, and arrays of objects. Exploration of problem-solving and algorithm-design techniques using pseudocode and Unified Modeling Language (UML). Design of good test cases and debugging techniques are highlighted. Programming projects involving multiple classes.

Full course description for Problem Solving with Programming

This course provides basic introduction to data structures and algorithms and emphasizes the relationship between algorithms and programming. Students will learn intermediate object-oriented design, programming, testing and debugging. Topics include inheritance, polymorphism, algorithm complexity, generic programming, linked list, stack, queue, recursion, trees, hashing, searching, and sorting.

Full course description for Introduction to Data Structures

Calculus requirement: choose one of the following two courses.

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

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

+ Core (32 credits)

Once the premajor foundation are complete, students must complete all of the following courses with a grade of C- or higher.

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.

Students who have not declared their major or have not been accepted into the major will not be allowed to take any 400-level major courses. For further details on prerequisites, reference the General Guidelines section below.

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 and development of 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

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

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

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

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

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 upper-division credits, or a minor in a field approved by the academic advisor, are required for the Computer Science major.

Electives Option:

Complete a minimum of eight upper-division credits (i.e, 300-level, or higher) of elective courses. Consult with academic advisor on acceptable electives.

Note the following:

-At least 4 credits of electives must come from upper-division (i.e., 300-level, or higher) ICS courses, not already required for the major, with the following exceptions: ICS 350I, ICS 370, ICS 38*, and ICS 48*.

-The contents of ICS 490 Special Topics in Information and Computer Sciences and ICS 492 Seminar on Emerging Technologies vary from semester to semester and may be taken more than once for elective credits (with permission of the CSC department) as long as they cover different topics.

-Any 300-level or higher CFS, CYBR, ICS, MATH or STAT course may be used as an elective except for the following courses: CFS 350I, CFS 499, CYBR 350I, CYBR 362, CYBR 498, CYBR 499, ICS 370, MATH 350I, MATH 499 and STAT 350I.

-A maximum of 4 credits in ICS 350I Individualized Internship spread over 1-3 semesters may be used as elective credits.

Minor Option:

Work with your academic advisor to assess if the minor option is appropriate for your degree and career plan. Students with a previous bachelor's degree should talk to their advisor about whether that degree can be used in lieu of a minor. 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.

+ General Guidelines
Transfer Courses

Transfer coursework equivalency is determined by the Computer Science and Cybersecurity (CSC) department and is initially evaluated upon admission with updates documented on the Degree Audit Report (DARS). When transferring coursework, please be aware that many universities, community, and technical colleges offer 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 course at another institution is equivalent to one of our lower-division courses. To calculate 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.


Students must be aware of and abide by prerequisites for all courses for which they are enrolled. No student may be enrolled in a course unless they have completed all course prerequisites with a grade of C- or higher. Students will be administratively dropped from a course if they have not met the required 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.