Program Overview

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.

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.

Program Outcomes

At the time of graduation, all students will have the following skills.

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

More information about this program

Declare Your Program

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 Writing Requirement (GELS Goal I, Part I)
  • Complete prerequisite courses with a grade of C- or better.

Students who do not meet the above requirements or are on academic probation will not be accepted to the major. Students not accepted to the major will not be allowed to take advanced courses in the discipline.

Declare Your Program Button

Requirements

Program Application Requirements

Competence in standard programming practices is essential to an in-depth study of the science of computing. Although many of the activities of computer professions are not programming-related, the language of computing is founded on programming. In addition, computer science has its roots in the discipline of mathematics.

At a minimum, computer science students must have an understanding of discrete mathematics and calculus in order to explore the theoretical foundations of computing. Mathematics and programming prerequisites should be completed early in the major.

Programming skills erode when left unused for long periods of time. As a consequence, programming classes taken more than five years ago will not be applied to meet the requirements for this major.

Since programming ability is crucial for success in computer science, the ICS Department invites students without recent transcripted credits in programming courses for one-on-one sessions with their advisor to discuss their programming background.

Students  may take waiver exams for introductory courses to help determine their appropriate placement in the introductory programming sequence.

Students get introduced to programming in ICS 140 Computational Thinking with Programming in the Python programming language. Next in the programming sequence are ICS 141 Programming with Objects and ICS 240 Elementary Data Structures, both using the Java programming language. Mathematics courses should be taken concurrently with these courses. Students should note individual course prerequisites and enroll in the proper sequence of courses. The prerequisite courses should be completed before upper-division (300-level) classes are taken in the major. Transfer credit for the major prerequisite courses is common as is demonstrating competency through passing departmental waiver exams.

These courses are designed to deepen student understanding of the discipline of computer science. The study of computer hardware, operating systems and software design processes provides the understanding of the operation of the computer necessary for the development of robust, efficient systems. The capstone and software design classes provide students with the project management, teamwork, presentation and business writing experiences that employers have identified as keys to professional success.

In addition, students address ethical issues and professional responsibilities in the capstone course. The upper-division courses (300- or 400-level) should be completed in the middle of the degree, except for ICS 499 Software Engineering and Capstone Project, which is taken in one of the last two semesters (preferably the final semester). To graduate, students must complete at least 32 credits of upper division coursework in the major.

Other Requirements

The remaining requirements may be fulfilled in one of two ways:

  • Do a minor (or previous bachelor's degree)in field approved by the advisor, or
  • Complete 8 credits of elective coursework as described below.

Students are encouraged to consult their advisors early in the program to make a decision on the above choices.

Recommended fields for a minor include Applied Mathematics, Biology, Chemistry, Computer Forensics, 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.

Elective courses allow concentrated work in an area of choice. Choices include practical and theoretical advanced computing topics, computer security, internships, and advanced mathematics. Students are encouraged to choose a set of elective courses that form a cohesive package.

Electives for the computer science major must be distributed as follows:

  • At least 4 credits from one upper-division ICS course other than ICS 350I (internship) or ICS 370
  • At least 4 credits from an upper-division MATH course or an upper-division ICS course other than ICS 370

Other Electives

The contents of ICS 490 Special Topics in Information and Computer Sciences and of ICS 492 Seminar of Emerging Technologies vary from semester to semester, and may be taken more than once (with different topics for elective credit. Any specific offering of ICS 490 will state whether it may be applied as an elective.

No student may be enrolled in an ICS or CFS course unless they have completed all course prerequisites with a grade of C- or better.

Courses required for your specific program are listed in the right column on this page. They include prerequisite, foundation, core and elective courses. Contact your advisor with questions concerning your degree plan.

How Admissions Works

We are looking forward to you joining us. Take the first step by filling out this application.
Course List

Prerequisites

Computer Science Major Prerequisites (24 credits)

Students get introduced to programming in ICS 140 Computational Thinking with Programming in the Python programming language. Next in the programming sequence are ICS 141 Programming with Objects and ICS 240 Elementary Data Structures, both using Java programming language. Mathematics courses should be taken concurrently. Students should note individual course prerequisites and enroll in the proper sequence of courses. The prerequisite courses should be completed before upper-division (300-level) classes are taken in the major. Transfer credit for the major prerequisite courses is common.

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

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • One of the following classes is required:
    • 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.

      Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
    • 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.

      Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • MATH 215 Discrete Mathematics
    4 credits

    Using applications to motivate the material, stressing problem-solving techniques, and with meaningful connections to computer science, this course covers systems of linear equations, matrices, combinatorics, probability, logic and mathematical reasoning.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • ICS 141 Programming with Objects
    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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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 algorithm complexity, generic programming, linked list, stack, queue, recursion, trees, searching, and sorting.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8

Requirements ( 120 total credits)

Required Courses (36 credits)

These courses are designed to deepen student understanding of the discipline of computer science. The study of computer hardware, operating systems and software design processes provides the understanding of the operation of the computer necessary for the development of robust, efficient systems. The capstone and software design classes provide students with the project management, teamwork, presentation and business writing experiences that employers have identified as keys to professional success.
In addition, students address ethical issues and professional responsibilities in the capstone course. The upper-division courses (300- or 400-level) should be completed in the middle of the degree, except for ICS 499 Software Engineering and Capstone Project, which is taken in one of the last two semesters (preferably the last semester). To graduate, students must complete at least 32 credits of upper division coursework in the major.

  • ICS 232 Computer Organization and Architecture
    4 credits

    Introduces machine language, digital logic and circuit design, data representation, conventional von Neumann architecture, instruction sets and formats, addressing, the fetch/execute cycle, memory architectures, I/O architectures, as well as hardware components, such as gates and integrated chips.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • ICS 340 Algorithms and Data Structures
    4 credits

    Exploration of the design and implementation of data structures and algorithms fundamental to computer systems and applications and to software engineering. Topics include trees, graphs, basic analysis of algorithmic complexity, fundamental questions of computability, and introduction to the algorithmic basis of intelligent systems. Programming projects.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • 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.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8
  • ICS 499 Software Engineering and Capstone Project
    4 credits

    This course focuses on the theory and practice of effectively and efficiently building software systems that satisfy the requirements placed upon them by customers. This course gives an overview of the software lifecycle and introduces various process models used to develop software.

    Course Outline Class Schedule <<<<<<< HEAD ======= >>>>>>> 35179410ff55d83bece68cc1d84aadaa0fa744b8