Skip to main content

Computer Science Program in Minnesota

College of Sciences / Computer Science and Cybersecurity
Undergraduate major / Bachelor of Science

About The Program

Computer Science BS 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 and online, 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.

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

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

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 Program in Minnesota 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 Program in Minnesota

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 Program in Minnesota 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.

Courses and Requirements

SKIP TO COURSE REQUIREMENTS

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

ICS 240 Introduction to Data Structures

4 credits

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

Prerequisites

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