Computer Science and Information Technology (CSCI) Undergraduate Course Descriptions
CSCI 169. Computers in Society
Same as CNA 169. History, moral and social implications of computer technology, problem solving, extensive hands-on microcomputer experience involving software packages (including word processing, database management, spreadsheets). 3 Cr. F, S, SUM.
CSCI 200. Elements of Computing [Goal 4]
Problem-solving strategies, top-down design, and computer algorithms. Files and editing. Documentation and testing. Control structures, input and output, and functions. Boolean functions and circuits. Social considerations. Lab. Coreq.: MATH 112 or test out of MATH 112 via math placement exam or Prereq: MATH 196. 3 Cr, F, S.
CSCI 201. Computer Science 1
Data abstraction, elementary data structures, and dynamic data structures. Sorting and searching. Error handling and recovery. Time and space analysis of algorithms and big-O notation. Linked and sequential implementations of the list, stack, queue, set, and matrix abstract data types. Time management. Lab. Prereq.: MATH 112 or equivalent and either CSCI 200, ECE 102, CNA 267, BCIS 251 or permission. 4 Cr. F, S.
CSCI 220. Computer Architecture 1
CPU architecture, number systems, digital circuit design, assembly language programming, VHDL programming. Lab. Prereq.: 200 or 201, MATH 115 or 211. Coreq.: 201. 4 Cr. F, S.
CSCI 260. Programming in C
Study of the features of the C programming language. Application of C in problem solving. Prereq.: programming experience in a block-structured language. 2 Cr. F, S, SUM.
CSCI 261. Programming in C++
Study of the features of the C++ programming language. Application of C++ in problem solving. Prereq.: 260 or equivalent. 2 Cr. F, S, SUM.
CSCI 262. Programming in Java
Study of the Java programming language features. Applications of Java in problem solving. This course may not be used to satisfy any of the requirements of the computer science undergraduate programs. Prereq.: introductory-level programming experience. 2 Cr. F, S, SUM.
CSCI 263. Advanced Programming in C
Study of advanced features of C programming language. Application of C in problem solving. This course may not be used to satisfy any of the requirements of the computer science undergraduate program. Prereq.: programming in C. 2 Cr. F, S, SUM.
CSCI 264. Advanced Programming in C++
Study of advanced features of C++ programming language. Application of C++ in problem solving. This course may not be used to satisfy any of the requirements of the computer science undergraduate programs. Prereq.: programming in C++. 2 Cr. F, S, SUM.
CSCI 265. Advanced Programming in Java
Study of advanced features of Java programming language. Application of Java in problem solving. This course may not be used to satisfy any of the requirements of the computer science undergraduate programs. Prereq.: programming in Java. 2 Cr. F, S, SUM.
CSCI 301. Computer Science 2
Recursion and recurrence. Trees, binary trees, 2/3 trees, directed and undirected graphs, searching and sorting, program layering. Sequential file processing, indexed files, and hashing techniques. Prereq.: 201. Coreq.: MATH 273 4 Cr. F, S.
CSCI 310. Introduction to Operating Systems
Multiprogramming operating systems concepts. System structures, functions and services. Process scheduling and synchronization. Primary storage management. Secondary storage organization, directory and file management concepts. Access and information security. Performance analysis. Prereq.: 220 or ECE 322; CSCI 301. Coreq.: 320 or ECE 323. 3 Cr. F, S.
CSCI 311. Systems Programming
System calls for process creation, destruction, management and synchronization, and file and directory management. Operating systems implementation and installation. Prereq.: 310. 2 Cr. F, S.
CSCI 320. Computer Architecture 2
Design of arithmetic and sequential circuits, instruction sets, and CPU controllers. Memory organization, pipelined processors, and I/O interface. Advanced assembly language programming. Lab. Prereq.: 220, MATH 273 4 Cr. F, S.
CSCI 330. Programming Language Concepts
Survey of several high-level languages, their compilers and inherent data structures. Formal description of high-level languages. Prereq.: 301. Coreq.: 320. 3 Cr. S.
CSCI 331. Software Systems
Problem solving strategies and concepts applied in the context of issues associated with the design and implementation of software systems using a combination of current software packages/environments. Subjects addressed include file processing, data modeling and mapping to storage structures, data base systems, and software design and implementation. Prereq.: 220 or ECE 221; 301. 3 Cr. F.
CSCI 332. Computing Ethics
Issues of software reliability and risk, private property, gender, minority, multicultural perspectives, privacy, the effect of value systems on computer science. Issues of computer ethics affecting individuals and society. Prereq.: completion of all other 300-level computer science requirements. 3 Cr. S.
CSCI 334. Communication for the Computing Sciences
Oral and written communication in the context of the computing sciences. S/U grading only. Prereq.: 301. Coreq.: 331 or any CSCI 400-level course. 1 Cr. DEMAND.
CSCI 415. Computer Security
Cryptography, network security and system security. Cryptographic methods, key distribution, and protocols for authenticated and confidential communications. Network and system security. Prereq.: 310, MATH 312, 373 or permission of instructors. 3 Cr. DEMAND.
CSCI 444. Internship
Supervised training opportunity provided by industry or educational institution. Prereq.: 320. 3-12 Cr. F, S, SUM.
CSCI 480. Computer Seminar
Reading, research and discussion of selected topics. Prereq.: consent of instructor. 1 Cr. DEMAND.
CSCI 490. Practicum in Computer Science
Supervised programming for various departments. Can be repeated for a maximum of 6 credits. Prereq.: approval of department. 1-2 Cr. DEMAND.
Computer Science and Information Technology (CSCI) Courses for Advanced Undergraduate and Graduate Students
CSCI 402/502. Introduction to the Theory of Computation
Regular languages, finite-state automata, context-free languages, grammars, push-down automata, Turing machines, Church's thesis, the halting problem and computability. Prereq.: 320, MATH 253 or 373. 3 Cr. DEMAND.
CSCI 403/503. Theory, Design and Construction of Compilers
Formal grammars, lexical analysis, symbol tables, syntax analysis and parsing, type checking, code generation, code optimization. Prereq.: 320, 330, MATH 373. 5 Cr. DEMAND.
CSCI 404/504. Design and Analysis of Algorithms
Computing time functions; maximum, minimum and average computing time of various algorithms. Prereq.: 331, MATH 253 or 373. 3 Cr. DEMAND.
CSCI 411/511. Database Theory and Design
Principles of database systems, theory of relational databases, design techniques, concurrency control and recovery, object-oriented systems. Prereq.: 331. 3 Cr. DEMAND.
CSCI 412/512. Distributed Systems Principles
Distributed systems architecture. Process synchronization. Distributed operating systems, file systems and database systems. Projects. Prereq.: 311. 3 Cr. DEMAND.
CSCI 413/513. Computer Networks
Computer network architecture. The OSI seven-layer reference model and communication protocols. Network services. Projects for current applications. Prereq.: 311. 3 Cr. DEMAND.
CSCI 430/530. Object-Oriented Software Development
Techniques for identifying and specifying objects, object classes and operations in designing software. Development of a major project using object-oriented analysis, design and programming techniques. Prereq.: for 430: 331 and Java or permission of instructor. Prereq. for 530: 301 or permission of instructor. 3 Cr. DEMAND.
CSCI 431/531. Software Engineering I
Introduction to the history and goals of software development, software specification and specification languages, requirements and requirements languages. FSA specification techniques. Software engineering design tools and testing. Lab. Prereq.: 311, 330. 5 Cr. DEMAND.
CSCI 432/532. Software Engineering II
Continuation of Software Engineering I. Verification and validation in the design of software and throughout the life cycle. Quality assurance and control, software evolution. Performance emphasis on metrics and models. Lab. Prereq.: 431. 5 Cr. DEMAND.
CSCI 440/540. Introduction to Artificial Intelligence
Heuristic versus deterministic methods, game playing programs, theorem proving programs, decision making programs. Prereq.: 330, MATH 253 or 373. 3 Cr. DEMAND.
CSCI 441/541. Neural Networks
Natural and artificial neural networks. Back propagation, conjugate gradients, cascade-correlation training methods, associative memory. Self-organizing nets, adaptive resonance nets, Hopfield nets, constraint satisfaction networks. Design and applications. Prereq.: 320 or permission of instructor. 3 Cr. DEMAND.
CSCI 442/542. Expert Systems
Introduction to the theory and applications of expert systems. Knowledge acquisition and representation. Inference techniques. An expert systems language. Design and evolution of expert systems. Prereq.: 301. 3 Cr. DEMAND.
CSCI 443/543. Evolutionary Computation
Population-based search heuristics inspired by biological evolution. Representations and operators. Specifying parameter values. Hybridization with local search and other search strategies. Constraint handling. Theory. Prereq.: for 443: CSCI 301, MATH 373. Prereq. for 543: 591 or equivalent, MATH 373 or equivalent. 3 Cr. DEMAND.
CSCI 450/550. Computer Graphics
Algorithms, data structures and techniques for generating graphics. Graphics hardware, display primitives, geometric transformations, perspective projection, clipping and user interaction. Prereq.: 320, MATH 311 or MATH 312. 3 Cr. DEMAND.
CSCI 475/575. Advanced Topics in Computer Science
An in-depth study of one or more issues in contemporary computer science not covered in other computer science courses. May be repeated for up to a maximum of 6 credits. Prereq.: consent of instructor. 1-6 Cr. DEMAND.