Computer Science BS

College of Sciences
Undergraduate major / Bachelor of Science

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

Prospects

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.

Enrolling in this program

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.

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) 
  • Demonstrated competency in the Java programming language either through completion of coursework (e.g., ICS 141 or ICS 240) or passing a Java competency exam.

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.

Current students: Declare your program

Once you’re admitted as an undergraduate student and have met any further requirements your chosen program may have, you declare your major or declare a 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 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 CSC 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.
  • 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.
 

Elective or Minor Requirements

The remaining requirements for the major 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

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.

Course requirements

Prerequisites

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

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

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

Full course description for Programming with Objects

Requirements (120 credits)

Required (32 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 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

Eight credits of upper-division elective are required or, a minor in a field approved by the academic advisor. NOTE: ICS 300 or 400 level course not in the required course list can be an elective (ICS 490, Special Topics, may be taken twice to count for both electives), except for ICS ICS 370, or ICS 381. At most 4 credits of elective may also come from an internship (ICS 350i), or upper division mathematics or statistics courses.

Note: ICS 300 or 400 level course not in the required course list can be an elective (ICS 490, Special Topics, may be taken twice to count for both electives), except for ICS ICS 370, or ICS 381. At most 4 credits of elective may also come from an internship (ICS 350i), or upper division mathematics or statistics courses.