# Computer Science Program Requirements

Prof. Ricardo Jimenez explains the use of a spreadsheet application for his Introduction to Computers class.

## Computer Science (CS)

The Computer Science program is designed to provide majors with a solid theoretical and technical foundation in the field of computers. The program provides a balance between problem-solving techniques and system implementation. Majors demonstrate skills in critical thinking, project development, independent study, and research.

The curriculum for the Computer Science major consists of the following components:

- Computer Science Core - 40 credits
- Computer Science Electives - 9 credits
- Mathematics Minor - 20 credits
- Physics - 8 credits
- General Education - 42 credits
- General Elective - 1-3 credits
**Total - 120-122 credits**

## Computer Science Core

The core of CS courses consists of the following:

### CS 231 - Computer Science I

Evolution of hardware and software. Problem analysis and algorithm development. Data types, control structures, subprograms, scope, and recursion. Prerequisite: MAT 109.

### CS 232 - Computer Science II

Programming methodology. Data abstraction. Classes and class templates. Inheritance and polymorphism. Search techniques. Algorithm complexity. Windows programming and applications programming interface (API). Prerequisites: CS 231 and MAT 110.

### CS 311 - Assembly Language

Basic machine organization. Number systems. Data representation. Addressing schemes. Arithmetic and logic instructions. Loops. Subroutines. Pseudo operations. Macros. Input/output. Prerequisite: CS 232.

### CS 331 - Data Structures and Algorithms

Algorithm analysis. Abstract data types. Techniques for the implementation of abstract data types, such as arrays, stacks, queues, trees, heaps, and graphs. Sorting. Prerequisite: CS 232 and MAT 253.

### CS 332 - Computer Hardware Organization

Boolean algebras and switching functions. Gates. Memory devices. Combinational systems, simplification and decomposition. Sequential systems. Analysis and synthesis. Design of digital systems. Prerequisite: MAT 109.

### CS 372 - Software Engineering

Basic tools and techniques for specifying, designing, implementing, verifying and validating large software projects. Prerequisite: CS 212 or equivalent.

### CS 413 - Operating Systems

Operating systems and computer system structures. Process management and synchronization. Memory management. File systems. I/O systems. Distributed systems. Protection and security in operating systems. Prerequisite: CS 331.

### CS 414 - Computer Architecture

System buses. Internal and external memory. I/O. Computer arithmetic. Instruction sets. CPU structure. The control unit and microprogramming. Prerequisites: CS 311 and CS 332.

### CS 426 - Databases

Physical data organization. The network, hierarchical and relational models. Query languages. Design of relational databases. Query optimization. Integrity and security. Distributed databases. Prerequisite: CS 331.

### CS 431 - Concepts of Programming Languages

Survey of programming languages and language features. The syntax of programming languages and an introduction to compilers. Functional, object-oriented and logic programming. Prerequisite: CS 331.

### CS 471 - Computer Networks

Concepts and principles of data communications and computer networks. Network architectures and protocols. Local area networks. Switching and Routing. Distributed processing. Internetworking and current area topics. Prerequisite: CS 331.

### CS 477 - Computer Security

This course is intended to provide an introduction to the standard methods for securing computer applications and computer networks. The topics included are security attacks, security services, conventional encryption, public-key encryption, electronic mail security, PGP, web security, SSL, SET, intruders, viruses, and firewalls. Prerequisite: CS 440 or CS 471.

### CS 487 - Seminar (Integrative Experience, Two Semesters)

Students present topics of current interest in computer science. The material to be discussed will be taken from journals, proceedings or specialized books, but not from regular textbooks. This course serves as an integrative experience for Computer Science majors. Prerequisite: CS 331.

## Computer Science Electives

Computer Science electives consist of three courses selected from the following list:

### CS 328 - Unix, and Systems Concepts

The Unix operating system, shell programming and system administration. Applications to the development of systems software. A large project is implemented. Prerequisite: CS 232.

### CS 341 - Multimedia Systems

Information retrieval, multimedia organization and design. Editing and manipulating hypertext. Audio, video and still image processing. Development of multimedia for networked systems in a cross-platform environment. Prerequisite: CS 211.

### CS 428 - Object-Oriented Design and Software Development

Analysis of the object-oriented approach to systems design. Object-oriented languages: C++ and Smalltalk. Applications to X-Windows programming. A large project is implemented. Prerequisites: CS 328 and CS 331.

### CS 432 - Compiler Design

Language translation and compiler design. Lexical analysis. Syntax analysis. Operator precedence and LR parsers. Parser generators. Intermediate code. Optimization. Prerequisites: CS 331 and MAT 254.

### CS 437 - Computer Graphics

Basic raster graphics algorithms for two-dimensional primitives: scan converting lines, circles, ellipses, filling polygons, clipping, antialiasing. Geometrical transformations: translation and rotation. Viewing in three dimensions. Illumination and shading. Prerequisite: CS 331.

### CS 438 - Web Programming and Administration

This course covers Web programming with an emphasis on CGI and server side programming. It explores Web servers' features, configuration, and programming. It also analyses the development of dynamic content and online database handling. Current programming languages and tools for the Web such as CGI, Perl and Java are covered. Case studies such as e-commerce, online data base management, or distance education will be discussed. Prerequisite: CS 338 or equivalent.

### CS 453 - Artificial Intelligence

Programming languages for Artificial Intelligence. Predicate calculus. Search. Knowledge representation. Natural language understanding. Planning. Prerequisite: CS 331.

### CS 454 - Robotics

Design and control of stationary and mobile robots. Robot morphology. The nature of the drive mechanisms (electrical, mechanical, pneumatic, and hydraulic) are described, as well as sensors, motors, effectors, and the various peripheral modules. Simple feedback mechanisms. Prerequisite: CS 331.

### CS 456 - Introduction to Expert Systems

Applications-oriented facet of Artificial Intelligence. The course will introduce applications of expert systems in various fields, e.g. business, education, and medicine. Prerequisite: CS 331.

### CS 478 - Applied Cryptography

This course provides an introduction to cryptography and its applications emphasizing programming aspects. The topics included in this course are ciphers, one-way functions, communications using symmetric cryptography, communications using public-key cryptography, digital signatures, and key exchange. Prerequisite: CS-232 or equivalent.

## Mathematics Minor

Given the close interaction between mathematics and computer science, a minor in mathematical sciences is required, consisting of at least 20 credits in mathematics courses, including:

### MAT 211 - Calculus I

Limits of functions and approximation; differentiation and integration of elementary functions; maxima and minima applications. Prerequisite: MAT 110 with a grade of C or above, or appropriate math SAT or ACT score.

### MAT 212 - Calculus II

Advanced techniques of differentiation and integration; polar coordinates, sequences and series. Prerequisite: MAT 211 with a grade of C or above.

### MAT 253 - Discrete Mathematics I

Sets, counting, methods of proof. Logic. Relations, types of relations, functions, types of functions. Recursive functions. Prerequisite: MAT 110.

### MAT 254 - Discrete Mathematics II

Systems of linear equations, matrices, matrix operations. Graphs, lattices, Boolean algebras, regular expressions, finite state automata. Decidability, formal languages and grammars. Computational complexity. Prerequisite: MAT 253.

### MAT 356 - Statistics for Science

Analysis of data, histograms, measures of central tendency and of dispersion. Probability, normal curve. Statistical tests; hypothesis testing. This course is designed for science majors (Biology, Physics, Chemistry, Computer Science, Mathematical Sciences). Prerequisite: MAT 211 and at least another MAT course above MAT 212.

### The following are suggested:

### MAT 213 - Calculus III

Multivariable calculus; functions of several variables; partial derivatives; multiple integration; theorems of Green, Gauss and Stokes; introduction to linear differential equations. Prerequisite: MAT 212 with a grade of C or above.

### MAT 314 - Differential Equations

Linear differential equations; systems of differential equations; solutions by series and by numerical methods; applications. Prerequisite: MAT 212.

### MAT 332 - Linear Algebra

Systems of linear equations, matrices, vector spaces, linear transformations, determinants. Quadratic forms, eigenvalues and eigenvectors. Prerequisites: MAT 211 and MAT 253.

### MAT 374 - Theory of Computation

A study of mathematical, engineering and linguistic foundations of theoretical computer science: abstract machines and languages, formal grammars, finite-state machines, finite-state languages, automata, Turing machines, recursive functions. Prerequisite: MAT 254.

### MAT 451 - Probability Theory

Probability spaces, distribution functions, central limit theorem, conditional probability. Prerequisites: MAT 213.

### MAT 452 - Mathematical Statistics

Sampling theory, statistical inference, hypothesis testing. Prerequisite: MAT 451.

### MAT 456 - Numerical Analysis

A survey of numerical and computational methods for solving algebraic problems. Zero location, maxima and minima, Newton's methods, vector and matrix operations, characteristic value problem, numerical approximation to differential equations. Use of computer algorithms and programming is involved. Prerequisites: MAT 314 and 332.

**Note:** A minimum grade of C is required in all courses in the CS Core, CS Electives, Science, Mathematics and minor.

## Physics

The following are co-requisites of the CS major and must be passed with a grade of C or better:

### PHY 201 - General College Physics I and Lab

Mechanics, heat, wave phenomena, electricity and magnetism, optics, modern physics.

### PHY 202 - General College Physics II and Lab

Mechanics, heat, wave phenomena, electricity and magnetism, optics, modern physics.

**Note:** The credits in Mathematics and Physics satisfy the Barry distribution requirements in Science and Mathematics.