Computer Science Major BS
The computer science major is a solid, flexible program, focused on establishing a firm foundation in the theory of computing, 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 of 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.
At the time of graduation, all students will have the following skills.
- An ability to apply knowledge of computing and mathematics appropriate to computer science
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution
- An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs
- An ability to 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
- An ability to apply design and development principles in the construction of software systems of varying complexity
- An ability to use current techniques, skills, and tools necessary for computing practice
- An ability to function effectively on teams to accomplish a common goal
- An understanding of professional, ethical, legal, security, and social issues and responsibilities
- An ability to communicate effectively with a range of audiences
- An ability to analyze the local and global impact of computing on individuals, organizations, and society
- Recognition of the need for and an ability to engage in continuing professional development
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 math and calculus in order to explore the theoretical foundations of computing. Additional mathematical study is highly recommended. Math and programming prerequisites should be completed early in the major.
Students familiar with a non-object-oriented programming language such as C are likely to find neither ICS 140 nor ICS 141 appropriate as their first course in the program. Such students are encouraged to take ICS 180 Java for Transfer Students, which is designed for students who have experience programming in C, C++, or C#, but need to learn the Java language. The grade they obtain in ICS 180 will be used in lieu of the ICS 141 grade to make acceptance decisions to 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 program requirements for the computer science major. Since programming ability is crucial for success in the Computer Science and Computer Information Technology majors, the ICS Department invites students who may have programmed recently for one-on-one sessions with their advisor to discuss their programming background. Waiver exams are used to help students evaluate their skills and to place them appropriately in the introductory programming sequence.
Acceptance to the Program
To be eligible for acceptance to the Computer Science major, students must submit a College of Arts and Sciences Undergraduate Program Declaration Form when the following is completed:
- Minimum cumulative GPA of 2.5 for ICS 141 (or ICS 180), ICS 240 and MATH 215 or transfer equivalents
- Two writing courses as defined to meet general education requirements
- Prerequisite courses (see below) with a grade of C- or better
Students who do not meet the requirements above 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.
Major Prerequisites (24 credits)
- MATH 120 Precalculus
- MATH 210 Calculus I
- MATH 215 Discrete Mathematics
- ICS 140 Programming Fundamentals
- ICS 141 Programming with Objects or ICS 180 Java for Transfer Students
- ICS 240 Programming with Elementary Data Structures
Students learn to program in ICS 140 Programming Fundamentals, ICS 141 Programming with Objects and ICS 240 Programming with Elementary Data Structures, using the 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.
Required Core Courses (28 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. Courses in mathematics and computing theory provide preparation for graduate or theoretical study. The upper-division courses (300--400-level) should be completed in the middle of the degree, except for ICS 499 ICS Capstone Project, which is taken in one of the last two semesters. To graduate, students must complete at least 32 credits of upper division coursework in the major.
Required courses include the following:
Choose one of the following math courses
- MATH 211 Calculus II
- MATH 251 Introduction to Probability and Statistics
- MATH 315 Linear Algebra and Applications
- MATH 340 Mathematical Modeling
Note: This chosen course cannot also be counted as an elective.
Computer Science Requirements
- ICS 340 Data Structures
- ICS 362 Computer Organization and Architecture
- Programming competency in C or C++.
This may be satisfied by doing appropriate course work, by taking a competency test administered by the department, or by successfully completing ICS 365 Comparative Programming Languages. ICS 365 meets the Group 1 Elective requirement as well.
- ICS 370 Software Design Models
- ICS 441 Foundations of Computing Theory
- ICS 462 Operating Systems
- ICS 499 ICS Capstone Project
Electives (12 credits)
Elective courses allow concentrated work in an area of choice. Choices include theoretical computing topics, networking, project management, internships and advanced mathematics. Students are encouraged to choose a set of elective courses which form a cohesive package. A maximum of four lower-division elective credits may be accepted as a Group 3 elective provided he coursework is equivalent to an upper-division MATH or ICS or CFS course at Metropolitan State University or one of the lower-division courses listed under Group 3. Courses taken to meet required core courses, except ICS 365 may not also count as electives.
Electives for the computer science major must be distributed as follows:
Group 1. At least one of the following:
- ICS 365 Comparative Programming Languages
- ICS 425 Client/Server Architectures
- ICS 460 Computer Networks
- ICS 470 Software Engineering
Group 2. At least one of the following:
- Any upper division (300 level or higher) MATH course
- ICS 311 Database Management Systems
- ICS 325 Internet Application Development
- ICS 382 Computer Security
- Additional Group 1 electives
- MATH 251 Introduction to Probability and Statistics
- DSCI 420 Project Management
Group 3. Any combination of the following: (at most 4 credits)
- ICS 225 Web Design and Implementation
- CFS 280 Introduction to Computer Forensics
- CFS 380 Digital Evidence Analysis
- CFS 480 Introduction to Electronic Discovery
- CFS 484 Computer Laws
- ICS Internship
- Any lower division electives transferred from other institutions
- ICS 492 Seminar on Emerging Technologies
- Student Designed Independent Study
The contents of ICS 490 Special Topics in Information and Computer Sciences and ICS 492 Emerging Technology vary from semester to semester. ICS 492 is always applied to Group 3, but any specific offering of ICS 490 will state the group to which it belongs.
No student may be enrolled in an ICS or CFS course unless he/she has completed all course prerequisites with a grade of C- or better.