
Computer Science (CSC)Chairperson: Professor Kowalski 101 Computing Concepts (4) Capabilities and limitations of computers. Applications of computers in today’s society. Overview of computing systems and programs. Students will complete several projects using a computer. (Lec. 3, Lab. 2/Online) Not open to students who have credit in any collegelevel computer science course. Not for major credit in computer science. (MQ) 110 Survey of Computer Science (4) How computers work. Design of a simple computer. Computer software, programming, and languages. Capabilities and limitations of computers. Artificial intelligence. (Lec. 3, Lab. 2) Open only to computer science majors with 4 or fewer credits in CSC courses. 200 Computer Problem Solving for Science and Engineering (4) An integrated symbolic, numerical, and graphical approach to computer problem solving. Structured design; fundamental programming techniques. Computer algebra systems. Scientific, engineering, and mathematical applications. (Lec. 3, Lab. 2) Pre: credit or concurrent enrollment in MTH 131 or 141. Not for major credit in computer science. May not be taken for credit by students with credit in 201 or 211. 201 Introduction to Computer Programming (4) Computer characteristics, algorithms, data representation, program development. Students will write several programs to solve numerical and nonnumerical problems. (Lec. 3, Lab. 2) Pre: MTH 111 or equivalent. May not be taken for credit by students with credit in 200 or 211. Not for major credit in computer science. (MQ) 211 Introductory Programming and Design (4) Problem specification, solution design, and algorithm development. Objectoriented programming and program structure. Functions, selection, iteration, recursion, classes, arrays, and files. Required programs will solve numerical and nonnumerical problems. (Lec. 3, Lab. 2) Pre: prior experience with computers and programming and MTH 111 or equivalent. Intended for computer science and computer engineering majors. 212 Data Structures and Abstractions (4) Abstract data types and data structures. Pointers, linked lists, stacks, queues, binary trees, and tables. Fundamentals of software engineering. Development of objectoriented programming techniques. (Lec. 3, Lab. 2) Pre: 211 and MTH 141. Intended for computer science and computer engineering majors. 301 Fundamentals of Programming Languages (4) Organization of programming languages, data and control structures, syntax and semantics, compilers and interpreters. Block structured languages, recursion, parameter passing, runtime storage management. Procedural, functional, objectoriented, and logical languages. (Lec. 3, Lab. 2) Pre: 212. 305 Software Engineering (4) Programming environments and methodologies for the design, development, testing, and maintenance of large software systems. Student teams will develop a substantial software product from requirements to delivery using disciplined techniques. (Lec. 3, Project 3) Pre: 301. 320 Social Issues in Computing (4) Discussion of the social and ethical issues created by the use of computers. The problems that computers solve and those that they produce. Ethics and responsibilities of the computer professional. (Lec. 4) Pre: 212, junior standing, or permission of instructor. 340 Mathematical Foundations of Computer Science (4) Combinatorial techniques used in nonnumerical computation and analysis of algorithms. Logic, proofs, enumerations, recurrence relations, graphs and networks, finite automata. Complexity analysis of several representative problems and algorithms for their solutions. (Lec. 4) Pre: 212 and credit or concurrent enrollment in MTH 215. 350 Fundamentals of Mathematical Computation (4) Symbolic, numerical, and graphical approaches to mathematical computation. Pitfalls in numerical computation. Root finding. Numerical integration and differentiation. Approximation of functions. Interpolation and curve fitting. Linear systems. Ordinary differential equations. (Lec. 3, Lab. 2) Pre: 212 and MTH 215 and 243. 402 Compiler Design (4) Grammars and languages; lexical analysis, parsing and translation, symbol tables, runtime storage administration, object code generation. Students will construct a compiler for a small programming language. (Lec. 3, Project 3) Pre: 301. 406 Computer Graphics (4) Interactive raster graphics; hardware, software, and algorithms. Point plotting, line drawing, geometrical transformations, clipping and windowing. Threedimensional graphics including curves, surfaces, perspective, hidden objects, shading. User interfaces; graphical programming environments. (Lec. 3, Project 3) Pre: 305, MTH 215 and 243. 411 Computer Organization (4) Logical structure of computer systems viewed as a hierarchy of levels. Assembly language programming, assemblers, linkers, loaders. Computer architecture including digital logic, processor organization, instruction sets, addressing techniques, virtual memory, microprogramming. (Lec. 3, Project 3) Pre: 212 and 301 and either junior standing or permission of instructor. 412 Operating Systems and Networks (4) General concepts underlying operating systems and computer networks. Topics include process management, concurrency, scheduling, memory management, information management, protection and security, modeling and performance, networking and communication. (Lec. 3, Project 3/Online) Pre: 212 and 301 and either junior standing or permission of instructor. 415 Introduction to Parallel Computing (4) Programming techniques to engage a collection of autonomous processors to solve largescale numerical and nonnumerical problems. Processor interconnections. Parallel programming languages and models. Performance measures. (Lec. 3, Project 3) Pre: 301. In alternate years. 418 Information and Network Security See Electrical Engineering 438. 436 Database Management Systems (4) Construction and management of large data systems. Data modeling, relational and objectoriented systems, main memory databases, query languages, query optimization, concurrency control, transaction management, distributed systems, disk organization, indexes, emerging technologies. (Lec. 3, Project 3) Pre: 301 or 412 or permission of instructor. 440 Algorithms and Data Structures (4) Algorithm design and analysis, advanced data structures, computational complexity. Sorting, searching including hashing and balanced trees, string pattern matching, polynomial and matrix calculations, graph and network algorithms, NPcompleteness and intractability. (Lec. 3, Project 3) Pre: 340. 445 Models of Computation (4) Abstract models of computational systems. Classical models for uniprocessor, sequential, and stored program computers. New models based on recent advances in hardware, software, and communications and their implications in practice. (Lec. 3, Project 3) Pre: 340. In alternate years. 447 Discrete Mathematical Structures See Mathematics 447. 481 Artificial Intelligence (4) Theories, formalisms, techniques to emulate intelligent behavior using information processing models. Symbolic programming, search, problem solving, knowledgebased techniques, logic, theorem proving. Optional topics: natural language processing, machine learning, computer vision. (Lec. 3, Project 3) Pre: 301 or permission of instructor. In alternate years. 485 Computer Forensics (4) The science, technology, procedures, and law of acquiring and analyzing digital evidence from computers and devices (Lec. 3, Lab. 3/Online). Pre: 412, or permission of instructor. 486 Network Forensics (4) The science, technology, procedures, and law of acquiring and analyzing digital evidence from computer network activity (Lec. 3, Lab. 3). Pre: 485. 491 Directed Study in Computer Science (14) Advanced work in computer science. Conducted as supervised individual projects. (Independent Study) Pre: permission of chairperson. S/U credit. 492 Special Topics in Computer Science (14) Advanced topics of current interest in computer science. (Lec. 14, Project 13) Pre: permission of instructor. 499 Project in Computer Science (4) Supervised work on a capstone project in computer science that prepares students for careers in industry and graduate study. (Practicum) Pre: advanced standing in computer science and departmental approval. Normally taken twice in two consecutive semesters. May be repeated for a maximum of 8 credits. Not for graduate credit. S/U credit. 501 Programming Language Semantics (4) Design, analysis, implementation, and comparative study of major programming language families. Topics include procedural and blockstructured languages, interpretive languages, concurrency, functional languages, objectoriented programming, logic programming, dataflow languages and machines. (Lec. 3, Project 3) Pre: 301. 502 Theory of Compilers (4) An advanced course in compiler construction covering advanced parsing techniques, compilerwriting tools, type checking and type inference, code optimization, and compiling nonstandard language features. (Lec. 3, Project 3) Pre: 402. In alternate years. 505 Advanced Topics in Software Engineering (4) Lifecycle models; software development environments; project management. Metrics, performance, and testing. Paradigms for software design and architecture. Legal and ethical issues. (Lec. 3, Project 3) Pre: 305. In alternate years. 509 ObjectOriented System Design (4) Objectoriented design and programming, the software engineering process. Traditional and current objectoriented design methods. Software reuse. Design tools. Impact of the technology on traditional software engineering. (Lec. 3, Project 3) Pre: 305 and working knowledge of an objectoriented language. In alternate years. 511 Advanced Computer Organization (4) Evaluation of highperformance computer systems with respect to architectures, operating systems, and algorithms. Highspeed conventional machines; array processors; multiprocessors; data flow machines; RISC architectures; VLSIbased machines. (Lec. 3, Project 3) Pre: 411. In alternate years. 512 Topics in Distributed Systems (4) Advanced topics in distributed systems. Networking; standard distributed computing environments. Distributed computing algorithms. Concurrency and threading. Realtime computing, scheduling, concurrency control, load allocation. (Lec. 3, Project 3) Pre: 412. In alternate years. 517 Design and Analysis of VLSI Systems (4) Illustration and analysis of VLSI algorithms and architecture. Emphasis on design of very largescale integrated circuits, related methodologies, and theoretical foundations. VLSI technologies, fabrication, automated design tools for various problems. (Lec. 3, Project 3) Pre: 411 and either 340 or 447. In alternate years. 519 Computer Networks See Electrical Engineering 543. 522 (or MIC 522 or STA 522) Bioinformatics I (34) Integrates computing, statistical, and biological sciences, algorithms, and data analysis/management. Multidisciplinary student research teams. Modeling dynamic biological processes. Extra project work for 4 credits. (Lec. 3, Project 3) Pre: major in a computing, statistical, or biological science or permission of instructor. 525 Systems Simulation See Industrial and Systems Engineering 525. 536 Topics in Data Management Systems (4) Current research and developments in database management systems. Relational, semantic, objectoriented, realtime, distributed, heterogeneous, and logic databases. Concurrency control, security, active rules, recovery, and integrity subsystems. (Lec. 3, Project 3) Pre: 436 or permission of instructor. In alternate years. 541 Advanced Topics in Algorithms (4) Algorithm design techniques such as dynamic programming, greedy method, branch and bound. Linear programming; NPcompleteness; graph algorithms; number theoretic algorithms; approximation algorithms for NPcomplete problems; probabilistic and parallel algorithms. (Lec. 3, Project 3) Pre: 440 or 445. In alternate years. 542 Mathematical Analysis of Algorithms (4) Mathematical techniques for the analysis of algorithms. Sums and products; finite difference calculus; properties of binomial coefficients; Stirling, harmonic, and Fibonacci numbers; recurrence relations; generating functions; asymptotic approximation. Case studies. (Lec. 3, Project 3) Pre: 440. In alternate years. 544 Theory of Computation (4) Finite automata, pushdown automata, formal grammars and Chomsky hierarchy, Turing machines, computability, basics of complexity theory. Advanced topics including some of the following: cryptography, interactive proofs, circuit complexity, completeness for various complexity classes, relations among complexity classes, new models of computation. (Lec. 3, Project 3) Pre: 440 or 445. In alternate years. 547 Combinatorics and Graph Theory See Mathematics 547. 548 Topics in Combinatorics See Mathematics 548. 550 Computer Algebra (4) Symbolic mathematical computation; history, use, representation of information, algorithms and heuristics. Big number arithmetic, manipulation of polynomials and rational expressions; algebraic simplification; factoring; symbolic integration. Organization and implementation of computer algebra systems. (Lec. 3, Project 3) Pre: 350, 440. In alternate years. 581 (or ELE 581) Special Topics in Artificial Intelligence (3) Topics of specialized or current interest, which may change. Topics may include expert systems, natural language processing, neural network models, machine learning. AI applications in remote sensing. (Lec. 3) Pre: 481 or permission of instructor. May be repeated with permission. In alternate years. 583 Computer Vision See Electrical Engineering 583. 585 Topics in Computer Forensics (4) Advanced topics in computer forensics. Emerging research, law, and techniques in acquiring and analyzing digital evidence from computers and devices. (Lec. 3, Lab. 3) Pre: 485, or permission of instructor. 586 Topics in Network Forensics (4) Advanced topics in network forensics. Emerging research, law, and techniques in acquiring and analyzing digital evidence from computer networks. (Lec. 3, Lab. 3) Pre: 585. 591 Directed Study in Computer Science (14) Advanced work in computer science conducted as supervised individual projects. (Independent Study) Pre: permission of chairperson. S/U credit. 592 Special Topics in Computer Science (14) Advanced topics of current interest in computer science. (Lec. 14, Project 13) Pre: permission of chairperson. May be taken more than once. 593 Computer Science Seminar Series (1) Seminar discussions presented by faculty, graduate students, and outside speakers. 599 Master’s Thesis Research Number of credits is determined each semester in consultation with the major professor or program committee. (Independent Study) S/U credit. 699 Doctoral Dissertation Research Number of credits is determined each semester in consultation with the major professor or program committee. (Independent Study) S/U credit. Top  Previous  Next 