CPS1110. Computer Literacy (I,II; 2)
This course presents students with a study of various methods of problem-solving by computers and other means through use of examples, simple exercises and theory. Further topics include using computer systems for word processing, Internet browsing, PC spreadsheets and databases, and other desk top publishing techniques. Prerequisite: None.
CPS1115. Computer Fundamentals (I,II; 2)
This course presents students with a study of various methods of problem-solving techniques pertaining to current industry computer applications. Topics covered include an introduction to BASIC programming and algorithmic design, word processing, Internet browsing, PC spreadsheets and databases, document presentation and other desk top publishing techniques. Prerequisite: None.
CPS1191. Computer Science I (I; 4)
Number systems, computer history, time sharing, system commands, file editing, algorithms, flow-charting, pseudo-code, top-down design, branching, looping, arrays, strings, basic input and output (I/O) operations, report writing, scientific applications, business applications and graphics . Co-requisite: MTH1750.
CPS1192. Computer Science II (II; 4) [Programming and Algorithms]
Importance of program design, modular function and object oriented programming; flow-charting, pseudo-code, and top-down design, use of text files, binary files, and fundamentals of higher languages such as C, C++, MATLAB, and Mathematica. Prerequisities: CPS1191 Computer Science I.
CPS2215. Internet and Web Essentials (I,II; 2)
CPS2220 Introduction to Assembler Language (II; 3)
Structure and organization of the VAX 11 Assembler Language, VAX 11 hardware organization, addressing modes, advanced data types, object code generation, multi pass assemblers, branching, linkage to higher level languages, disk and terminal input/output programming. Prerequisite: CPS 1192, or permission of instructor.
CPS2236. Contemporary Operating Systems (II; 3)
The objective of this course is to tech basics of an operating system from the point of view of both end-users and programmers. Existing popular operating systems such as UNIX and Windows NT will be used as practical examples to work with. Students will learn about the history of UNIX, the UNIX file system, the Visual Editor (vi), UNIX communications, the UNIX shell, programming under UNIX, and system administration. NT topics will include NT tools, administering users, groups, profiles, printing, domain controllers, and other configuration, troubleshooting and management tasks as time permits. Prerequisite: None.
CPS2271 Data Structures (I; 4)
Linked Lists, doubly linked lists, circular lists, stacks, queues; search strategies, hashing; internal sorting algorithms, external sort/merge algorithms; binary trees, B-trees, B+ trees; sequential files, random access files, file update algorithms. Prerequisite; CPS1192
CPS2680. Scientific Visualization (II; 3)
Survey of different visualization software tools, sources for data, visualization pipeline, grids, file formats, and graphics libraries; concepts of 2D and 3D coordinate systems, continuous and discrete systems, polygonal representation, lighting, shading, rendering pipeline, transforms and surfaces, camera, and applied visualization problems; grid representations, cell representations, ray casting, algorithms for manipulating images, and the limitations of grids; pipeline and isosurface, volumetric rendering, vector visualization, image processing, applications in the biological sciences, and other advanced topics and techniques. Prerequisite: CPS1192 Computer Science II. [Note: This course may be available only through the RRSCS Consortium]
CPS3316. Computer Networks (II; 3)
This course teaches students fundamentals of computer networks, covering topics on local and wide area networks, media, topologies, layered networking models, hardware and software; network setup and administration, network architecture, communication protocols, and aspects of network administration that include server folders and permissions. Prerequisites: CPS1191.
CPS3320. Database Systems (II; 3)
The objective of this course is to introduce relational database systems and provide practical experience in using a popular database package. Contemporary database systems such as Oracle and Microsoft Access will be used extensively in this course. Students will learn about relational database principles, the SQL query language, application development using forms, creating and using tables and queries, database design and implementation issues. Prerequisites: CPS1191 and CPS1192 or permission of instructor.
CPS3325. Java Programming (II; 3)
The objective of this course is to teach the basis of Java programming and object-oriented programming. Students will learn both Applets and application programming in Java. The topics covered include compilers and interpreters, objects and primitive data, control flow, writing classes, enhancing classes, arrays, and vectors, inheritance, exceptions, and I/O streams, software engineering, recursive programming, and implementation of data structures. Prerequisites: CPS1191 or its equivalent.
CPS3330. Simulation and Modeling (I; 3)
Importance of modeling to science and engineering,, history of modeling, cost effectiveness, time-effect; terminology, types of models and simulations; estimation of model outcomes, importance of model algebraic equations, computer visualization of models; validation of models with data, analysis of experimental errors, and systematic errors. Prerequisites: Calculus II. [Note: This course may be available only through the RRSCS Consortium]
CPS3340. Computer Architecture (II; 3)
The goal of this course is to give students a solid foundation in the fundamental concepts of CPU, memory system and I/O system design, and to expose them to a number of more advanced topics in these areas. Instruction set architecture, memory subsystem organization, interfacing concepts and issues arising in managing communication with the processor are covered, as are a number of alternative computer architectures and an introduction to parallel and vector computers. Prerequisites: CPS1192 and INT3630.
CPS3450. Optimization (II; 2)
Description and contrast of optimization methods such as Golden section search, Steepest Descent, Newton’s method, conjugate gradient, simulated annealing, and genetic algorithms; description and contrast of constrained optimization methods such as Lagrange multiplier, quasi-Newton, and penalty function method; analysis of linear programming methods such as the simplex method; description of non-linear programming methods such as, interior, exterior, and mixed methods; and utilization of software systems such as MATLAB, IMSL, NAG to solve practical optimization problems. Prerequisite: CPS3330. [Note: This course may be available only through the RRSCS Consortium]
CPS3370. Programming Languages (II; 3)
This course teaches students fundamental concepts and constructs in several contemporary programming languages including topics on evolution of major programming languages, implementing subprograms, abstract data types, support for object-oriented programming in C++, Java, and Ada, exception handling, Functional Programming Languages, and Logic Programming Languages. Prerequisite: CPS1192.
CPS3381. Principles of Operating Systems (I; 3)
Operating systems structure, concurrency, semaphores, process synchronization, deadlocks, CPU scheduling algorithms, disk scheduling algorithms, memory management, disk management and file systems. Prerequisite: CPS 2271.
CPS3465 Introduction to Parallel Computing (II; 3)
Fundamentals of parallel computing including shared memory paradigm, semaphores, and dead lock; distributed memory paradigm including point-to-point and collective message passing constructs in MPI, parallel I/O, vector and structure derived data types; speed-up and scalability, check-point restart, parallel debugging; techniques, performance profiling, graphical and visualization techniques; parallel libraries, and systems modeling applications in high performance computing. Prerequisite: CPS331 Numerical Methods, or permission of instructor.
CPS4410. Formal Languages (II; 3)
Sets, regular expressions, closure properties, parsing, finite state automata, pushdown automata; regular, context free, and contest sensitive grammars; Chomsky's hierarchy, and Turing machines. Prerequisite: CPS 3610.
CPS420. Software Engineering (II; 3)
This course teaches students design and implementation issues for large software systems, software life cycle, requirements definition and specification, prototyping, verification, validation, equivalence classes and testing, fault-tolerance, social and ethical issues of commercial software, user interface, design, portability, and management. The goal of this course is to introduce students to methods for producing large-scale commercial software. They learn techniques for managing hardware, software, and personnel systems using a group oriented project production paradigm. Prerequisite: CPS2271.
CPS4460. Advanced Topics (I,II,III; 1-5)
This course is designed to meet the needs of advanced students as a preparation for graduate study or students who wish to study additional programming languages not presented in other courses. Prerequisites: CPS1192 or permission of instructor.
CPS4895. Senior Project (I,II; 3)
Students work under the mentorship of a faculty member to design, implement and present a capstone computer science project. Each student selects a topic for the project subject to approval of the faculty mentor, conducts a feasibility study and prepares a project design using flowcharts, structure charts and pseudo-code along with documentation and references. Each student must implement the project design and submit all program listings, data files, and report listing showing results of appropriate test runs. Each student must write a paper on the project from the external documentation and prepare appropriate visual aids for an oral presentation of the project to the Department. Prerequisite: CPS4420 or permission of the instructor.