Course Descriptions

Department of Computer Science

Professors N. M. Amato, R. Bettati, J. Chen, D. K. Friesen, R. Furuta, J. J. Leggett, J. S. Liu, W. M. Lively, M. S. Pilant, U. W. Pooch, L. Rauchwerger, W. Rundell, F. M. Shipman, P. F. Stiller, B.  Stroustrup, V. E. Taylor (Head), D. M. H. Walker, J. L. Welch, G. N. Williams; Associate Professors Y. Choe, R. Gutierrez-Osuna, T. R. Ioerger, A. Kerne, J. C. Keyser, A. Klappenecker, D. Loguinov, R. Mahapatra, V. Sarin, S. Sze; Assistant Professors J. Caverlee, J. Chai, G. Dos Reis, T. A. Hammond, J. Jarvi, A. Jiang, E. J. Kim, S. M. Pike, S. Schaefer, D. Song, R. Stoleru, T. L. Williams; Senior Lecturers W. C. Daugherity, J. D. Hurley, T. S. Leyk, Z. Leyk, W. F. Marti, S. Yurttas; Lecturer R. Ward

Computer Science
(CPSC)

110. Programming I. (3-2). Credit 4. I, II, S

Basic concepts, nomenclature and historical perspective of computers and computing; internal representation of data; software design principles and practices; structured programming in Pascal; use of terminals, operation of editors and execution of student-written programs.

111. Introduction to Computer Science Concepts and Programming. (3-2). Credit 4.

Basic concepts, nomenclature, and historical perspective of computers and computing; problem solving and software design principles, including abstraction, modularity, data representation, documentation, portability, structured and object oriented programming; software engineering concepts including requirements definition, testing, and maintenance considerations; development and execution of student written programs. Prerequisite: Course in Pascal or C (high school or college) or approval of instructor.

113. Intermediate Programming and Design. (1-3). Credit 2.

Continuation of ENGR 112; programming and design with C++; topics include design and implementation of functions, classes, and class hierarchies; software development strategies; error handling and exceptions; testing and debugging; type safety; strings; templates and the STL; graphics and GUIs; mathematical computation; and principles of object-oriented programming. Prerequisites: Knowledge of C++ programming, class design, portable graphics, and parameterized types and their implementations.

121. Introduction to Program Design and Concepts. (3-2). Credit 4.

Computer programming syntax for primitive types, control structures, vectors, strings, structs, classes, functions, file I/O, exceptions and other programming constructs, plus the use of class libraries; practice in solving problems with computers; includes the execution of student written programs in C++. Prerequisite:  Programming course (high school or college).

181. Introduction to Computing. (1-0). Credit 1.

Introduce entering students to the broad field of computing; presentations from industry and academia about how computer science concepts are used in research and end products; includes a major writing component

203. (COSC 1317, 1417) Introduction to Computing. (3-0). Credit 3. I, II, S

Algorithms, programs and computers; basic programming and program structure; data representation; computer solution of numerical and non-numerical problems using a high-level programming language, FORTRAN.

206. (BCIS 1420, COSC 1420) Structured Programming in C. (3-2). Credit 4.

Basic concepts, nomenclature and historical perspective of computers and computing; internal representation of data; software design principles and practice; structured and object-oriented programming in C; use of terminals, operation of editors and executions of student-written programs.

211. Data Structures and Their Implementations. (3-2). Credit 4.

Specification and implementation of basic data structures and abstract data types--linked lists, stacks, queues, trees and tables; performance tradeoffs of different implementations; asymptotic analysis of running time and memory usage; compares and contrasts object-oriented language (typically, Java) and non-object-oriented languages (typically, C); emphasis on adherence to good software engineering principles. Prerequisite: CPSC 111 or approval of instructor.

221. Data Structures and Algorithms. (3-2). Credit 4.

Specification and implementation of basic abstract data types and their associated algorithms:  stacks, queues, lists, sorting and selection, searching, graphs, and hashing; performance tradeoffs of different implementations and asymptotic analysis of running time and memory usage; includes the execution of student programs written in C++. Prerequisite: CPSC 113 or 121; corequisite MATH 202.

285. Directed Studies. Credit 1 to 4.

Special project in computer science. Project must be approved by the department. Prerequisite: Approval of department head.

289. Special Topics in... Credit 1 to 4.

Selected topics in an identified area of computer science. May be repeated for credit. Prerequisite: Approval of instructor.

291. Research. Credit 1 to 4.

Research conducted under the direction of faculty member in computer science. May be repeated 2 times for credit. Prerequisites: Freshman or sophomore classification and approval of instructor.

310. Database Systems. (3-0). Credit 3. I, II, S

File structures and access methods; database modeling, design and user interface; components of database management systems; information storage and retrieval, query languages, high-level language interface with database systems.

311. Analysis of Algorithms. (3-0). Credit 3. I, II, S

Design of computer algorithms for numeric and non-numeric problems; relation of data structures to algorithms; analysis of time and space requirements of algorithms; complexity and correctness of algorithms. Prerequisite: MATH 302, CPSC 211.

312. Computer Organization. (3-2). Credit 4.

Introduction to computer systems from programmer’s perspective:  simple logic design, data representation and processor architecture, programming of processors, memory, control flow, input/output, and performance measurements; hands-on lab assignments. Prerequisite:  CPSC 221.

313. Introduction to Computer Systems. (3-2). Credit 4.

Introduction to system support for application programs, both on single node and over network: OS application interface, inter-process communication, introduction to system and network programming, and simple computer security concepts; hands-on lab assignments. Prerequisite: CPSC 312 or corequisite CPSC 350.

314. Programming Languages. (3-0). Credit 3.

Explores the design space of programming languages via an in-depth study of two programming languages, one subject-oriented (Java), one functional (Haskell); focuses on idiomatic uses of each language, and on features characteristic for each language. Prerequisite: CPSC 221.

315. Programming Studio. (2-2). Credit 3.

Intensive programming experience that integrates core concepts in Computer Science and familiarizes students with a variety of programming/development tools and techniques; students work on 2 or 3 month-long projects each emphasizing a different specialization within Computer Science; focuses on programming techniques to ease code integration, reusability, and clarity. Prerequisites: CPSC 312 and 314; or CPSC 350; corequisite CPSC 313.

321. Computer Architecture. (3-2). Credit 4. I, II, S

Basic hardware/software components, assembly language, and functional architecture design of computers; syntax and semantics of a typical microprocessor assembly language; instruction sets, construction and execution of an assembly program; the design of I/O modules, memory, control unit and arithmetic unit. Prerequisite: ECEN 220 or 248.

332. Programming Language Design. (3-0). Credit 3. I, II

Design of high-level languages; criteria for language selection; specification techniques for syntax and semantics; trends in high-level language design and introduction to programming in LISP.

350. Computer Architecture and Design. (3-3). Credit 4.

Computer architecture and design; use of register transfer languages and simulation tools to describe and simulate computer operations; central processing unit organization; microprogramming; input/output and memory system architectures. Prerequisite: ECEN 248. Cross-listed with ECEN 350.

410. Operating Systems. (3-0). Credit 3. I, II, S

Hardware/software evolution leading to contemporary operating systems; basic operating systems concepts; methods of operating systems design and construction: algorithms for CPU scheduling, memory and general resource allocation, process coordination and management; case studies of several operating systems. Prerequisite: CPSC 315.

411. Design and Analysis of Algorithms. (3-0). Credit 3.

Study of computer algorithms for numeric and non-numeric problems; design paradigms; analysis of time and space requirements of algorithms; correctness of algorithms; NP-completeness and undecidability of problems. Prerequisites:  CPSC 221, 315; MATH 302.

420. Artificial Intelligence. (3-0). Credit 3. I, II, S

Fundamental concepts and techniques of intelligent systems; representation and interpretation of knowledge on a computer; search strategies and control; active research areas and applications such as notational systems, natural language understanding, vision systems, planning algorithms, intelligent agents and expert systems. Prerequisite: CPSC 411.

431. Software Engineering. (2-2). Credit 3. I, II, S

Application of engineering approach to computer software design and development; life cycle models, software requirements and specification; conceptual model design; detailed design; validation and verification; design quality assurance; software design/development environments and project management.

433. Formal Languages and Automata. (3-0). Credit 3. I

Basic types of abstract languages and their acceptors; the Chomsky hierarchy; solvability and recursive function theory; application of theoretical results to practical problems. Prerequisite: CPSC 311.

434. Compiler Design. (3-0). Credit 3. II

Programming language translation: functions and general organization of compiler design and interpreters; theoretical and implementation aspects of lexical scanners; parsing of context free languages; code generation and optimization; error recovery. Prerequisite: CPSC 411 or permission from instructor.

435. Structured Programming in Ada. (3-0). Credit 3.

The Ada programming language; history and motivation; scalar and composite types; type and object attributes; control constructs; subprograms; packages and abstract types; numeric types; I/O; program structure; overloading and visibility; tasking; generics; programming style using Ada, Ada Programming Support Environments; bindings to common utilities, including GKS, SQL.

436. Computer-Human Interaction. (3-0). Credit 3.

Comprehensive study of the Computer-Human Interaction (CHI) area; includes history and importance of CHI; CHI design theories; modeling of computer users and interfaces; empirical techniques for task analysis and interface design; styles of interaction and future directions of CHI including hypermedia and computer-supported collaborative work.

437. Engineering Software Products. (3-0). Credit 3.

Links theory and practice in providing hands-on experience in development of growth-oriented new software products; student teams prepare and present a plan for a new software product; skills conducive to new software product success are developed including team building; organizing; planning; integrating and persuading. Prerequisites: Senior classification and approval of instructor.

438. Distributed Objects Programming. (3-0). Credit 3.

Principles of distributed computing and programming with current paradigms, protocols, and application programming interfaces including Sockets, RMI, CORBA, IDL, Servlets, Web Services; security issues with public/private keys, digital signatures, forms and GUI based applications with multi-tier components, database connectivity and storing/streaming data structured using XML. Prerequisites: CPSC 332 or approval of instructor; junior or senior classification.

440. Quantum Algorithms. (3-0). Credit 3.

Introduction to the design and analysis of quantum algorithms; basic principles of the quantum circuit model; gives a gentle introduction to basic quantum algorithms; reviews recent results in quantum information processing.

441. Computer Graphics. (3-0). Credit 3. I, II, S

Principles of interactive computer graphics; systems organization and device technologies for raster and vector displays; 2-D and 3-D viewing, clipping, segmentation and interaction handling; 3-D geometrical transformations, projections and hierarchical data structures for graphics modeling.

442. Scientific Programming. (3-0). Credit 3. II

Introduction to numerical algorithms fundamental to scientific and engineering applications of computers; elementary discussion of error; algorithms, efficiency; polynomial approximations, quadrature and systems of algebraic and differential equations. Prerequisites: Knowledge of Fortran, C, or C++; MATH 304 or MATH 308 or concurrent enrollment in one of these.

444. Structures of Interactive Information. (3-0). Credit 3.

A systems approach to the programming, design, authoring and theory of hypermedia; object-oriented visual and interactive programming; visual design, including color, space, text and layering; the reference as a metadisciplinary structure; collecting and sampling; ontologies, maps and navigation as means of structuring information; create dynamic hypermedia that is expressive and interpretive. Prerequisite: CPSC 315.

452. Robotics and Spatial Intelligence. (3-0). Credit 3. II

Algorithms for executing spatial tasks; path planning and obstacle avoidance in two- and three-dimensional robots--configuration space, potential field, free-space decomposition methods; stable grasping and manipulation; dealing with uncertainty; knowledge representation for planning--geometric and symbolic models of the environment; task-level programming; learning. Prerequisite: CPSC 420.

456. Real-Time Computing. (3-3). Credit 4.

Introduction to principles and applications of real-time computing; system architecture; D/A and A/D conversion; synchronous data acquisition and analysis; computers in real-time control; asynchronous monitoring and control; resource scheduling; interfacing issues; lectures and laboratory. Prerequisites: ECEN 220 or 248; MATH 251; knowledge of C or Ada, or approval of instructor.

462. Microcomputer Systems. (2-2). Credit 3. II

Microcomputers as components of systems; VLSI processor and coprocessor architectures, addressing and instruction sets; I/O interfaces and supervisory control; VLSI architectures for signal processing; integrating special purpose processors into a system. Prerequisite: CPSC 410 or concurrent enrollment.

463. Networks and Distributed Processing. (3-0). Credit 3. I, II

Basic hardware/software, architectural components for computer communications; computer networks, switching, routing, protocols and security; multiprocessing and distributed processing; interfacing operating systems and networks; case studies of existing networks and network architectures. Prerequisite: CPSC 410.

469. Advanced Computer Architecture. (3-0). Credit 3.

Introduction to advanced computer architectures including memory designs, pipeline techniques, and parallel structures such as vector computers and multiprocessors. Prerequisite: CPSC 321 or ECEN 350. Cross-listed with ECEN 469.

470. Information Storage and Retrieval. (3-0). Credit 3.

Representation of, storage of and access to very large multimedia document collections; fundamental data structures and algorithms of current information storage and retrieval systems and relates various techniques to design and evaluation of complete retrieval systems.

481. Seminar. (0-2). Credit 1. I, II, S

Investigation and report by students on topics of current interest in computer science. Prerequisite: Junior or senior classification.

482. Senior Capstone Design. (1-6). Credit 3.  

Project-based course to develop system integration skills for solving real-world problems in computer science; significant team software project that integrates advanced concepts across computer science specializations; projects require design, implementation, documentation and demonstration, as well as design methodology, management process and teamwork. Prerequisites:  Senior classification; at least two CPSC courses from one track including 411.

483. Computer Systems Design. (1-6). Credit 3.

Engineering design; working as a design-team member, conceptual design methodology, design evaluations, total project planning and management techniques, design optimization, systems manufacturing costs considerations; emphasis placed upon students’ activities as design professionals. Prerequisites: CPSC 315 and 462; senior classification.

485. Directed Studies. Credit 1 to 6. I, II, S

Permits work on special project in computer science. Project must be approved by the department. Prerequisite: Senior classification.

489. Special Topics in... Credit 1 to 4.

Special topics in computer science that are new or unique that are not covered in existing courses.

491. Research. Credit 1 to 4.

Research conducted under the direction of faculty member in the computer science. May be repeated 2 times for credit. Prerequisites: Junior or senior classification and approval of instructor.