Requirements for a computer science major are summarized below. Calculus I and a programming course should be completed first. A student can declare a major in computer science during the 2^{nd} year and still complete the requirements. A 1^{st}-year student who intends to major in computer science should consider one of these typical plans.

**Prerequisites**

COSC 235. Programming and Problem SolvingIn this course students are to learn to write computer programs using the a high level programming language. Students are introduced to problem solving and algorithm development, with emphasis on good programming style. (3/0/3)

Math 181. Calculus I

A graphical, numerical, and symbolic study of the theory and applications of the derivative of algebraic, trigonometric, exponential, and logarithmic functions, and an introduction to theory and applications of the integral. Suitable for students of both the natural and social sciences. A graphing calculator is required. (3/0/3)

__Computer Science Requirements__

COSC 350. Data StructuresThis course is an introduction to the formal study of data structures such as arrays, stacks, queues, lists, and trees along with algorithm design and analysis of efficiency. Prerequisite: "C" or better in Computer Science 235 (3/0/3)

COSC 351. Advanced Data Structures

Advanced data structures, advanced object-oriented programming concepts, and advanced program design principles. Prerequisites: Mathematics 235 and C or better in Computer Science 350. (3/0/3)

COSC 410. Software EngineeringThe goal of this course is to study software engineering through a project-oriented approach. The emphasis will be on the specification, organization, implementation, testing, and documentation of software. Students will work in groups on various software projects. Prerequisite: "C" or better in Computer Science 235. (3/0/3)

Physics 203. Computer Organization and InterfacingThis course is situated at the point where software meets hardware. From there it reaches downward to the microcode level and upward to the system level. To meet the needs of scientists and computer scientists, the logical and physical foundations on which computer systems are built are developed with enough rigor that functioning computer systems can be successfully altered for new applications during the laboratory component of the course. The algorithm design and control programming required for this progresses during the course from the microcode and machine language level, through hand assembly, to full assembly methods. The course concludes with an analytical comparison of competing contemporary architectures. (3/3/4)

*And at least nine semester hours of the following:*

COSC 310. Computer GraphicsThis course is an introduction to computer graphics. Particular emphasis will be placed on the algorithms used to produce 2D graphics with a computer. Topics will include graphics devices, line drawing, polygons, circles, vectors, transformations of pictures, raster graphics, curves, and an introduction to 3D graphics. Prerequisites: Mathematics 181 and "C" or better in Computer Science 235 (3/0/3)

COSC 315. Computer NetworksA comparative study of high-level programming languages, including study of the design, evaluation, and implementation of such languages. Emphasis is placed on the ways in which such languages deal with the fundamentals of programming. Prerequisites: C or higher in Computer Science 235. (3/0/3)

COSC 320. Programming LanguagesThis course is a comparative study of high-level programming languages, including study of the design, evaluation, and implementation of such languages. Emphasis is placed on the ways in which such languages deal with the fundamentals of programming. Prerequisite: "C" or better in Computer Science 235. (3/0/3)

COSC 330. Introduction to DatabasesThis course is a study of data models, including ER, relational, object-oriented, and distributed models. Topics include the theory of normal forms, database design, query languages, and implementation of databases. Prerequisite: "C" or better in Computer Science 235 (3/0/3)This course is an advanced study of the design and programming of Web pages. Topics include commercial Web sites; programming in languages, such as HTML, JavaScript, ASP, and SQL; programming Web interfaces to databases; e-commerce; Web design concepts; and computer security. Prerequisite: "C" or better in Computer Science 235 (3/0/3)

COSC 335. Advanced Web Programming

COSC 340. Theory of ComputationThis course is a study of formal models of computation, such as finite state automata and Turing machines, along with the corresponding elements of formal languages. These models are used to provide a mathematical basis for the study of computability and to provide an introduction to the formal theory behind compiler construction. Prerequisites: "C" or better in Computer Science 235 (3/0/3)

COSC 360. Operating SystemsThis course discusses fundamental concepts that are applicable to a variety of operating systems, such as tasking and processes, process coordination and synchronization, scheduling and dispatch, physical and virtual memory communications and networking. Prerequisites: "C" or better in Computer Science 350 (3/0/3)

COSC 370. Data and VisualizationData and Visualization is part of the interdisciplinary field of computational science. The course contains a brief introduction to the network environment and the UNIX operating system. Because large Web-accessed databases are becoming prevalent for storing scientific information, the course will cover the concepts and development of distributed relational databases. Effective visualization of data helps scientists extract information and to communicate results. Thus, students will learn fundamental concepts, tools, and algorithms of computer graphics and scientific visualization in two and three dimensions. Throughout, applications in the sciences will be emphasized. Prerequisites: "C" or better in Computer Science 235 (3/0/3)COSC/MATH 435. Cryptology

An introduction to cryptology and modern applications. Students will study various historical and modern ciphers and implement select schemes using mathematical software. Cross-listed with MATH 435. Prerequisites: MATH 220 and either MATH 235 or 260. (3/0/3)

COSC 470. Advanced Independent Study in Computer Science

Independent study of selected topics in Computer Science at an advanced level. specific topics vary from semester to semester. Prerequisite: Permission of the instructor. (Variable credit in class or lab up to 4 hours)COSC 480. Special Topics in Computer ScienceSpecific topics offered will vary from semester to semester. Prerequisite: Permission of instructor (3/0/3) Topics have included network security, symbolic computation, computer-human interaction, artificial intelligence, and multicore programming.

__Mathematics Requirements__

Mathematics 182. Calculus IIA graphical, numerical, and symbolic study of the theory, techniques, and applications of integration, and an introduction to infinite series and/or differential equations. A graphing calculator is required. Prerequisite: Mathematics 181 or equivalent. (3/0/3)

Mathematics 220. Linear AlgebraThe theoretical and numerical aspects of finite dimensional vector spaces, linear transformations, and matrices with applications to such problems as systems of linear regression. A graphing calculator is required. Prerequisite: Mathematics 182. (3/0/3)

Mathematics 235. Discrete Mathematical ModelsAn introduction to some of the important models, techniques, and modes of reasoning of non-calculus mathematics. Emphasis on graph theory and combinatorics. Applications to computing, statistics, operations research, and the physical and behavioral sciences. (3/0/3)

**At least one of the following:**

Mathematics 140. StatisticsAn introduction to statistical thinking and the analysis of data using such methods as graphical descriptions, correlation and regression, estimation, hypothesis, testing, and statistical models. A graphing calculator is required. (3/0/3)

Mathematics 201. / COSC 201. Modeling and Simulation for the SciencesModeling and Simulation is part of the interdisciplinary field of computational science. Large, open-ended scientific problems often require the algorithms and techniques of discrete and continuous computational modeling and Monte Carlo simulation. Students will learn fundamental concepts and implementation of algorithms in various scientific programming environments: a computer algebra system, distributed computation, and parallel processing. Throughout, applications in the sciences will be emphasized. Prerequisite: None (3/0/3)

Mathematics 320. Mathematical ModelingThe study of problem-solving strategies to solve open-ended, real-world problems. The computer algebra system Mathematica will be used to aid in the modeling process. Prerequisites: Mathematics 220 and Computer Science 235 or Computer Science 220 (3/0/3)

Mathematics 330. Numerical MethodsThe study of the theory and computer implementation of numerical methods. Topics include error analysis, zeros of polynomials, numerical differentiation and integration, and systems of linear equations. Prerequisites: Mathematics 182 and computer programming ability. (3/0/3)

Mathematics 421. ProbabilityA study of probability models, random variables, estimation, hypothesis testing, and linear models with applications to problems in the physical and social sciences. Prerequisite: Mathematics 210 or permission of instructor. (3/0/3)

**And at least one of the following:**

Mathematics 431. Abstract AlgebraThe axiomatic development of abstract algebraic systems, including groups, rings, integral domains, fields, and vector spaces. Prerequisite: Mathematics 220 (3/0/3)

COSC 340. Theory of Computation

This course is a study of formal models of computation, such as finite state automata and Turing machines, along with the corresponding elements of formal languages. These models are used to provide a mathematical basis for the study of computability and to provide an introduction to the formal theory behind compiler construction. Prerequisites: "C" or better in Computer Science 235 (3/0/3)

__Ethics Requirement__ (*one of the following*)

PHIL 210. Bio-Medical Ethics

An introduction to ethics through a study of its applications in the area of health care. The course includes a survey of the major ethical theories and focuses

on a selection of important problem areas such as euthanasia, reproductive technologies, human experimentation, and the justice of health care distribution. This course may count toward the requirements for the Medical Humanities Program. (3/0/3)

PHIL 213. Ethics and Business

An introduction to ethics through discussion and analysis of major ethical systems, theories of social and economic justice, and specific case studies in the area of business. (3/0/3)

PHIL 15. Environmental Ethics

An exploration of the challenges presented by the ethical analysis of environmental issues. The course explores both the theoretical and practical aspects of these issues. This course may count toward the requirements in Environmental Studies. (3/0/3)

PHIL 18. Computers, Ethics and Society

An introduction to ethics in relation to computers, cyberspace, and the digital era. Through the detailed analysis of selected case studies, the course will explore the questions raised by computer technologies and their impact on business, scientific research, and society. (3/0/3)