CS 100. An Introducation To Computer Science
(Class 1, Cr. 1)
Prerequisite: none.
This course is intended to: integrate freshman computer science majors into the department; help them adjust to university life; assist them in developing their academic and intellectual capabilities; introduce them to contemporary issues in computer science; provide an overview of the careers open to those with degrees in computer science. This course must be taken Pass/No Pass only. Credit by exam is not available for this course.
CS 123. Programming I: Java
(Class 3, Cr. 3)
Co-requisite: MA 151 or MA 163, or equivalent.
This course is an introduction to computer science and computer programming. The primary language for this course is Java. The topics of the course include: identifiers, basic data types, operators, expressions, control statements, methods, recursion, program structure, arrays, objects, classes, inheritance, polymorphism, and the design of simple graphical user interfaces.
CS 124. Programming II: C++
(Class 3, Cr. 3)
Prerequisite: CS 123 with C or better, or equivalent.
This course is an extension of CS 123 that introduces the C++ programming language. The topics of the course include: functions, program structure, pointers, objects, classes and inheritance in C++, files, standard template library, streams and the preprocessor.
CS 206. Computer Algebra and Programming
(Class 3, Cr. 3)
Prerequisite: MA 164 with C or better.
Using a computer algebra system to solve mathematics problems, learning how to translate mathematical notation and procedures into the language of the computer algebra system. Learning the basic concepts of programming languages, comparing programming concepts with mathematical concepts.
CS 223. Computer Architecture and Assembly Language
(Class 3, Cr. 3)
Prerequisite: CS 124 with C or better, or equivalent.
An introduction to the fundamental concepts of computer architecture progressing from the digital logic level to the microarchitecture level and then to the instruction set level. Assembly language and the assembly process will also be included.
CS 275. Data Structures
(Class 3, Cr. 3)
Prerequisite: CS 124 with C or better, or equivalent.
Data structures describe the way that computer programs organize and store information. This course introduces the specification, representation and manipulation of the basic data structures common to much of computer programming, such as: linked lists, arrays, stacks, queues, strings, trees, graphs, search trees, heaps, hash tables, and B-trees.
CS 302. Operating Systems
(Class 3, Cr. 3)
Prerequisite: CS 223 and CS 275 with C or better, or consent of instructor.
An operating system manages all of the hardware and software resources of a computer. This course provides an introduction to the basic concepts and terminology of operating systems. Topics will include multiprogramming, CPU scheduling, memory management, file systems, concurrent processes, multiprocessors, security, and network operating systems.
CS 309. Discrete Mathematical Structures
(Class 3, Cr. 3)
Prerequisite: MA 164 with C or better.
This course is the study of finite and discrete mathematical structures relating to the theory of computation. Topics will include directed and undirected graphs and their relation to these structures, combinatorial problems inherent in computation, Boolean algebra, and recurrence relations.
CS 316. Programming Languages
(Class 3, Cr. 3)
Prerequisite: CS 275 with C or better.
The study of programming language features and their implementation in different types of programming languages. The design goals and motivations for various languages will be discussed. Topics will include a comparison of block-structured, object-oriented, functional, and logic programming languages. The advantages and disadvantages of each type of language will be considered. Specific examples of each type of language will be included.
CS 332. Algorithms
(Class 3, Cr. 3)
Prerequisite: CS 275 with C or better.
An algorithm is a procedure for solving a problem in a finite number of steps. Algorithms, along with data structures, form the fundamental building blocks of computer programs. The types of algorithms discussed will include sorting, searching, probabilistic, graph, and geometric algorithms. The following algorithm techniques are covered: backtracking, divide and conquer, branch and bound, greedy method, and dynamic programming.
CS 342. Introduction to Computer-Based Biomedical Image Analysis
(Class 4, Cr. 4)
Prerequisite: MA 154.
Introduction to image data acquisition, manipulation, and analysis. Biomedical materials to be analyzed include elcetrophoretic gels, bacterial agar plates, cells and tissues, x-ray films, and CAT scan images. Personal computer systems and the basic programming skill of C language also will be introduced.
CS 404. Distributed Systems
(Class 3, Cr. 3)
Prerequisite: CS 302 with C or better, or consent of instructor.
A distributed system is two or more computers working together as a single unit. These systems are essential to the understanding of present and future computer applications. This course will include the following topics: concurrent processing, threads, network programming, distributed file systems, remote procedure calls, sockets, distributed objects, client-server models, and Internet protocols.
CS 410. Automata and Computability
(Class 3, Cr. 3)
Prerequisite: CS 275 and CS 309 with C or better, or MA 453 and consent of instructor.
A finite automaton is a mathematical model for a computational system. Computer science embodies many examples of finite state systems. This course will cover the basic principles of deterministic and non-deterministic finite automata, Turing machines, formal language theory, regular expressions, context-free grammars, the halting problem, and unsolvability.
CS 416. Software Engineering
(Class 3, Cr. 3)
Prerequisite: CS 302 with C or better.
Software engineering is the study of the theory, methods, and tools which are needed to develop large, complex software systems. This course covers the specification, design, documentation, implementation, and testing of software systems. Software life cycle, principles of project management, and case studies are also covered. A group project will be assigned.
CS 420. Senior Design Project
(Class 3, Cr. 3)
Prerequisite: Senior level standing in Computer Science major.
The objective of this course is to provide students with concrete experience in writing advanced computer programs for practical application in science or industry. The student develops the necessary software using appropriate techniques and prepares documentation for the use and support of the completed system.
CS 442. Database Systems
(Class 3, Cr. 3)
Prerequisite: CS 275 with C or better.
A database is a system whose purpose is to organize, retrieve, and maintain large amounts of information. This course introduces the concepts and structures used in designing and implementing database systems. Topics include hierarchical, network, relational, and object-oriented data models, database design principles, normalization, data dictionaries, query languages and processing.
CS 455. Computer Graphics
(Class 3, Cr. 3)
Prerequisite: MA 265 and CS 275 with C or better.
Computer graphics provides a mechanism for creating and manipulating images by means of a computer. This course covers two-dimensional curve drawing, view transformations, geometric modeling, projections, ray tracing, surface patch, three-dimensional object rendering, shading, and animation. Windows programming using OpenGL and MFC will also be introduced.
CS 490. Topics in Computer Science for Undergraduates
(Class 1 to 5, Cr. 1 to 5)
Supervised reading and reports in various fields. Open to students only with the consent of the department.
CS 590. Topics in Computer Science
(Class 1 to 5, Cr. 1 to 5)
Directed study for students who wish to undertake individual reading and study on approved topics.