## Computer Science Courses

### CS 111 Problem-Solving and the Computer (3)

An introduction to computers as a tool in problem-solving, using BASIC as a language. Includes simple programming of problems in algebra or statistics. Draws models from the social and physical sciences. Does not require previous computer experience.

### CS 142 Programming in C++ (3)

An introduction to advanced software engineering concepts using C++ and structured programming. Rudiments of the language and program optimization are stressed.

### CS 150 Object Oriented Programming (3)

An introduction to the theory and practice of object oriented programming. Topics include objects, classes, inheritance, simple data structures, and basic concepts of software development. Prerequisite: CS 142

### CS 241 Machine Language with Assembler (3)

Basic principles of machine language programming. Computer organization and representation of numbers, strings, arrays, list structures, all at the machine level. Includes Assembler language. Prerequisite: CS 142.

### CS 242 Computer Architecture (3)

This course introduces students to the fundamentals of computer architecture. Topics include transistors, logic gates, basic processor components, memory, input/output devices, and low-level machine instructions. Prerequisite: CS 142

### CS 245 Computer Data Structures (3)

A study of the use of a high-level language to implement complex data structures. These include lists, trees, graphs, networks, storage allocations, file structure, and information storage and retrieval. Prerequisite: CS 142.

### CS 250 Database and Applications (3)

This course introduces students to the theory and practice of relational databases. Topics include data modeling and database design, the relational algebra and relational calculus, data definition and manipulation languages using SQL, query processing and optimization, transaction management, security, privacy, integrity management. Prerequisite: CS 142

### CS 314 Mathematical Models and Computer Techniques (3)

Mathematical models with an emphasis on constrained optimization problems. Topics include linear programming, network and integer models, and multi-objective optimization. Prerequisites: CS 142, MATH 202.

### CS 320 Software Engineering (3)

This course is an introduction to the software development process and design. Topics covered include concepts and techniques for designing, developing, and modifying large software systems; design patterns and modeling languages; specification and documentation; version control; testing and debugging; project team organization and management. Prerequisite: CS 150

### CS 322 Computer Networks (3)

This course is an introduction to the theory and practice of computer networks, the software protocols that allow them to operate, and the applications that make use of them. Topics covered include direct-link networks, packet switching, internetworking, end-to-end protocols, network applications, and network security. Prerequisite: CS 242

### CS 341 Analysis of Algorithms (3)

Theoretical analysis of various algorithms. Topics to include sorting, searching, selection, matrix multiplication and multiplication of real numbers. Prerequisite: CS 245.

### CS 342 Principles of Compilers (3)

This course introduces students to the essential elements of building a compiler: scanning, parsing, semantic analysis, and code-generation etc. Familiarity with how modern programming languages behave is assumed. Prerequisites: CS 150 and CS 242

### CS 344 Operating System Principles (3)

Analysis of the computer operating systems including Batch, Timesharing, and Realtime systems. Topics to include sequential and concurrent processes, processor and storage management, resource protection, processor multiplexing, and handling of interrupts from peripheral devices. Prerequisite: CS 245.

### CS 350 Computer Graphics (3)

This course studies the principles of computer graphics. Topics include geometric modeling, 3D viewing and projection, lighting and shading, color, and the use of one or more technologies and packages such as OpenGL. Prerequisite: CS 150, MATH 204

### CS 352 Web Applications and Development (3)

This course covers fundamentals of web applications and development, including common web protocols and standards. Topics include HTML, CSS, and development using JSP. Prerequisite: CS 150

### CS 456 Introduction to Programming Languages (3)

This course introduces students to the key features of programming languages. Topics include structuring data, computation, and whole programs, data types, type checking, exception handling, concurrent processes, synchronization, modularity, encapsulation, interfaces, separate compilation, inheritance, polymorphism, dynamic binding, subtyping, overloading etc. Prerequisite: CS 342 and CS 344.

### CS 463 Introduction to Numerical Methods (3)

Deals with solutions to equations, matrix methods, linear systems of equations, matrix inversion, eigenvalue problems, numerical differentiation. Prerequisites: CS 142, MATH 204, 322.

### CS 483 Introduction to the Theory of Computation (3)

This course is an introduction to the main theory and concepts in computation. The main topics include Turing machines, the Church-Turing thesis; decidability; halting problem; reducibility; undecidable problems; time classes; P, NP, NP-complete; space classes; hierarchy theorems; probabilistic algorithms. Prerequisite: CS 341, CS 342

### CS 490 Capstone Project (3)

This course is designed to be the culminating experience for Computer Science and Information Security majors. Students are expected to complete a significant project under the supervision of a faculty member. Knowledge and skills learned in the curriculum are to be applied, documented and demonstrated in the capstone project.

### CS 498 Special Topics in Computer Science (variable credit)

This course will cover special topics not available in the current CS curriculum when significant interest among students and faculty arises.