Computer Science (C S)


1313 Programming for Nonmajors. Prerequisite: Mathematics 1523 or equivalent. Introduction to the design and implementation of computer programs. Emphasis on problem solving. (F, Sp)

1323 Introduction to Computer Programming. Prerequisite: Mathematics 1523 or equivalent. Introduction to the design and implementation of computer software with an emphasis on abstraction and program organization. (F, Sp)

2281 Engineering Co-Op Program (Crosslisted with AME, CH E, C E, ECE, ENGR, EPHY, E S, G E, I E, P E 2281). Prerequisite: student participation in the program. The Co-Op program provides student placement in jobs outside the University, but in a position related to the student's major. On completion of a semester work period, the student submits a brief written report. One hour of credit (elective) granted for each work period, with a maximum credit of six hours. (F, Sp, Su)

2334 Programming Structures and Abstractions. Prerequisite: 1323 and Mathematics 1823. Application of software engineering principles with examples from central areas of computer science. Use of abstract data types such as stacks, queues, lists, trees, file processing. Introduction to ethics in computer science, including philosophical ethics theories. Discussion of intellectual property rights and privacy. A program design tool will be used. (F, Sp)

2413 Data Structures. Prerequisite: 2334 and 2813 or 1813 or Mathematics 2513, or concurrent enrollment in 2813 or Mathematics 2513. Representation and analysis of widely used data structures and associated algorithms. Design of software systems. Written communications required in some projects. Discussion of ethical issues including computer crime, abuse, and hacker ethics. The Microsoft Windows operating system will be used. A debugging tool will be used. (F, Sp)

2603 Applied Logic for Hardware and Software. Prerequisite: 1323 and Mathematics 1823. Mathematical aspects and applications of logic in the analysis of hardware and software. Introduction to combinational and sequential circuits. Topics include propositional and predicate calculus, Boolean algebra, combinational and sequential circuits, number systems and circuits for arithmetic, sets, inductive definitions, proof techniques including natural deduction, and equational reasoning. (F, Sp)

2613 Computer Organization. Prerequisite: 2603 or Electrical and Computer Engineering 2213 or Electrical and Computer Engineering 2214. Introduction to the organization and structuring of the major components of computers and the transfer of information among these components for control and data processing. (F, Sp)

2813 Discrete Structures. Prerequisite: 2603 or Electrical and Computer Engineering 2213 or 2214. Introduction to the mathematical foundation of computer science. Topics include combinatorics, logic, relations, functions, computational complexity, recurrences, and graph theory. (F, Sp)

3053 Human Computer Interaction. Prerequisite: 2413. An introduction to human-computer interaction and graphical user interfaces. Topics include: principles of human-computer interaction, human cognitive abilities, interface analysis and design, window systems, and social implications of computing. Current interface programming tools will be described and used. Oral presentations are required for some assignments. (F, Sp)

3113 Introduction to Operating Systems. Prerequisite: 2413 and, either 2613 or Electrical and Computer Engineering 3223. An introduction to the major concept areas and techniques of designing and implementing operating systems. Class projects require the design of medium-scale software systems. The Unix operating system will be used. A performance evaluation tool will be used. (F, Sp)

3323 Principles of Programming Languages. Prerequisite: 2413. Study of the theoretical foundations and principles that form the basis of programming language design; introduction to the functional programming paradigm. (F)

†G3723 Numerical Methods for Engineering Computation (Crosslisted with Aerospace and Mechanical Engineering, Chemical Engineering and Petroleum Engineering 3723). Prerequisites: 1313 or 1323 or Aerospace and Mechanical Engineering 2401 or Chemical Engineering 2002 or Engineering 1001 or Engineering 2003, and Mathematics 3113. Basic methods for obtaining numerical solutions with a digital computer. Included are methods for the solutions of algebraic and transcendental equations, simultaneous linear equations, ordinary and partial differential equations, and curve fitting techniques. The methods are compared with respect to computational efficiency and accuracy. This course may not be taken for graduate credit within the College of Engineering. (F)

3823 Theory of Computation. Prerequisite: 2413 or 4005. Introduction to abstract machine theory and formal language theory. Topics include turing machines, finite/pushdown automata, deterministic versus nondeterministic computations, context-free grammars, and mathematical properties of these systems. (F, Sp)

3960 Honors Reading. 1 to 3 hours. Prerequisite: admission to Honors Program. May be repeated; maximum credit six hours. Consists of topics designated by the instructor in keeping with the student's major program. Covers materials not usually presented in the regular courses. (F, Sp)

3970 Honors Seminar. 1 to 3 hours. Prerequisite: admission to Honors Program. May be repeated with change of topic; maximum credit eight hours. Projects covered will vary. Deals with concepts not usually presented in regular coursework. (Irreg.)

3980 Honors Research. 1 to 3 hours. Prerequisite: admission to Honors Program. May be repeated with change of subject matter; maximum credit six hours. Provides an opportunity for the gifted honors candidate to work on a special project in the student's field. (F, Sp, Su)

†G4004 Graduate Preparation II. Prerequisite: permission of graduate liaison. An introduction to Boolean algebra, combinatiorial logic circuits, finite state machines, and sequential circuits. Design and analysis of the architecture and organization of computer systems. Topics include processor, control, and memory design and organization, pipelining and vector processing, and computer arithmetic. An introduction to operating systems. Process management including CPU scheduling, process synchronization, and deadlocks; memory management, file systems, protection and security, and I/O systems. Credit hours earned for this course cannot be used to fulfill degree requirements for the M.S. or Ph.D. programs in computer science. (Irreg.)

†G4005 Graduate Preparation I. Prerequisite: permission of graduate liaison. This course has three parts: discrete mathematics, object-oriented programming in C++, and data structures in C++. As part of the discrete mathematics students will be introduced to combinatorics, logic, relations, functions, computational complexity, automata, and graph theory. Students will be introduced to the fundamentals of object-oriented programming and learn to design, build, and analyze data structures using object-oriented principles and techniques. Credit hours earned for this course cannot be used to fulfill degree requirements for the M.S. or Ph.D. programs in computer science. (Irreg.)

G4013 Artificial Intelligence. Prerequisite: 2413 or 4005. Study of the methods of search, knowledge representation, heuristics, and other aspects of automating the solution of problems requiring intelligence. (Sp)

4023 Introduction to Intelligent Robotics (slashlisted with 5023). Prerequisite: 2413 or permission of instructor. History of intelligent robotics; functional models approach; reactive robots; ethology for robotics; architectures and methodologies; implementation; sensing; hybrid deliberative/reactive robotics; multi-robot systems; navigation; topological path planning; metric path planning; localization and mapping. No student may earn credit for both 4023 and 5023. (Sp)

4033 Machine Learning. (Slashlisted with 5033). Prerequisites: Mathematics 4753 or Engineering 3293 or Industrial Engineering 3293 or Mathematics 4743, and Mathematics 3333. Topics include decision trees, relational learning, neural networks, Bayesian learning, reinforcement learning, multiple-instance learning, feature selection, learning appropriate representations, clustering, and kernel methods. No student may earn credit for both 4033 and 5033. (F)

4053 Computer Graphics (Slashlisted with 5053). Prerequisite: 2413 and Mathematics 3333. An introduction to computer graphics. Topics include coordinate systems, transformations, rendering in both two and three dimensions, and graphical programming. No student may earn credit for both 4053 and 5053. (Sp)

4113 Operating Systems Theory (Slashlisted with 5113). Prerequisite: 3113 and Mathematics 4753 or Industrial Engineering 3293 or Mathematics 4743 or Engineering 3293. Continuation of study from 3113. Advanced topics and examples and simulation techniques used in performance evaluation. No student may earn credit for both 4113 and 5113. (Sp)

4133 Data Networks (Slashlisted with 5133). Prerequisite: 3113 or permission of instructor. Comprehensive treatment of data networking principles including: layered protocol design and their functions, tools for performance analysis, multi-access communication, routing and flow control. No student may earn credit for both 4133 and 5133. (F)

4163 Embedded Systems (Slashlisted with 5163). Prerequisites: 2613 or 3113 and Matematics 3333. Theory and practice of connecting computational systems to the physical world through sensors and actuators. No student may earn credit for both 4163 and 5163. (Sp)

4263 Software Engineering I. Prerequisite: 3323 and Communication 2613 and English 3153 or Business Communicaton 2813 and permission of instructor. Methods and tools for software specification, design, and documentation. Emphasis on architectural modularity, encapsulation of software objects, and software development processes such as design review, code inspection, and defect tracking. Students working in teams apply these ideas to design and document software products. Study of professional ethics, responsibility, and liability. (F)

†G4273 Software Engineering II. Prerequisite: 4263 and 3053 and permission of instructor. Methods and tools for software development, testing, and delivery. Emphasis on data abstraction and reusable components. Students working in teams implement a significant software product, including design documents, user's guide, and process reports, using methods and processes studied in Software Engineering I. Students will practice oral and written communication skills. (Sp)

G4323 Compiler Construction. Prerequisite: 3323. Introduction to the theory and implementation of programming language compilers and interpreters. Class projects require the design of medium scale software systems. (Sp)

4410 Programming Competition. Prerequisite: Permission of Instructor. Prepare students to participate in regional, national, and international computer programming competitions. Students will work in teams to solve challenging computer programming problems. (F, Sp)

G4413 Algorithm Analysis. Prerequisite: 2413 or 4005. Design and analysis of algorithms and measurement of their complexity. (F)

4433 Computational Methods in Discrete Optimization (Slashlisted with 5433). Prerequisite: Mathematics 3333 and 4413 or concurrent enrollment in 4413. Linear programming: simplex method for LP problems, degeneracy and anticycling strategies, duality theory and complementary slackness conditions, revised simplex method, sensitivity analysis and simplex method for general LP problems. Network optimization: the transshipment problem, network simplex method, shortest path algorithms, the maximum flow problem, and the primal dual method. No student may earn credit for both 4433 and 5433. (F)

G4513 Database Management. Prerequisite: 2413 and senior standing or 4005. Emphasizes concepts and structures necessary to design and implement a database management system. (F)

G4613 Computer Architecture (Crosslisted with Electrical and Computer Engineering 4613). Prerequisite: 2613 or Electrical and Computer Engineering 3223, or 4004. Covers basic concepts of computer system design and communication between components, along with current and historical examples of computer architecture. (F, Sp)

4743 Scientific Computing I (Slashlisted with 5743). Prerequisite: Mathematics 3333 and Aerospace and Mechanical Engineering 3723 or Mathematics 4073 or Engineering 3723. Interaction between applications, architectures, and algorithms. Review of linear algebra, serial, pipelined vector processors, cluster of processors. Measures of proformance of parallel algorithms. Parallel algorithms for the solution of linear systems. No student may earn credit for both 4743 and 5743. (F)

4823 Cryptography (Slashlisted with 5823). Prerequisite:  3823 and 4413.  Elementary number theory, time complexity for doing arithmetic, finite fields, RSA, discrete logarithm and diffie-hellman, zero-knowledge protocols and oblivious transfer.  Basic elliptic curve cryptosystems, elliptic curve factorization and primality proving.  No student may earn credit for both 4823 and 5823. (Sp)

4910 Senior Reading and Research. 1 to 3 hours. Prerequisite: senior standing, permission of instructor. May be repeated with change of subject matter; maximum credit six hours. Individually supervised reading and research in computing science for gifted seniors. (F, Sp, Su)

4970 Undergraduate Seminar. 0 to 3 hours. May be repeated with change of subject matter; maximum credit three hours. A special type of seminar necessitated by the rapidly changing nature of modern data processing information science and computing sciences. (Irreg.)

4973 Special Topics. Prerequisite: permission of instructor. May be repeated with change of subject matter; maximum credit nine hours. A special topics course necessitated by the rapidly changing nature of computer sciences. Topics offered under this number will be accepted as approved Computer Science electives for Computer Science majors. (Irreg.)

G5023 Introduction to Intelligent Robotics (slashlisted with 4023). Prerequisite: 2413 or permission of instructor. History of intelligent robotics; functional models approach; reactive robots; ethology for robotics; architectures and methodologies; implementation; sensing; hybrid deliberative/reactive robotics; multi-robot systems; navigation; topological path planning; metric path planning; localization and mapping. No student may earn credit for both 4023 and 5023. (Sp)

G5033 Machine Learning (Slashlisted with 4033). Prerequisite: Mathematics 4753 or Engineering 3293 or Industrial Engineering 3293 or Mathematics 4743, and Mathematics 3333. Topics include decision trees, relational learning, neural networks, Bayesian learning, reinforcement learning, multiple-instance learning, feature selection, learning appropriate representations, clustering, and kernel methods. No student may earn credit for both 4033 and 5033. (F)

G5043 Advanced Machine Learning. Prerequisite: 4033 or 5033 and Math 3333. Advanced topics in machine learning. Possible topics include graphical models, kernel methods, and statistical relational learning. (Sp)

G5053 Computer Graphics (Slashlisted with 4053). Prerequisite: Mathematics 3333 and 2413 or 4005 and graduate standing. An introduction to computer graphics. Topics include coordinate systems, transformations, rendering in both two and three dimensions, and graphical programming. No student may earn credit for both 4053 and 5053. (Sp)

G5083 Knowledge discovery and Data Mining. Prerequisite: 4033 or 5033 or permission of instructor. An application oriented course that gives students the tools to develop and apply appropriate data mining and knowledge discovery techniques to real world problems. (Sp)

G5113 Operating Systems Theory (Slashlisted with 4113). Prerequisite: 3113 or 4004, and Mathematics 4753 or Industrial Engineering 3293 or Mathematics 4743 or Engineering 3293. Continuation of study from 3113. Advanced topics and examples, and simulation techniques used in performance evaluation. No student may earn credit for both 4113 and 5113. (Sp)

G5123 System Modeling and Performance Evaluation. Prerequisite: 3113 or 5004, and Engineering 3293 or Mathematics 4753. Study of queuing network models and their applications to operating systems, communication networks, and multi-access computing systems. (Sp)

G5133 Data Networks (Slashlisted with 4133). Prerequisite: 3113 or 5004 or permission of instructor. Comprehensive treatment of data networking principles including: layered protocol designs and their functions, tools for performance analysis, multi-access communication, routing and flow control. No student may earn credit for both 4133 and 5133. (F)

G5143 Network Design and Management. Prerequisite: 4133 or 5133, or equivalent. Basic concepts in networks; modeling and evaluation techniques; network analysis: delay, loss and throughput, centralized network design; distributed network design, network reliability; applications to local area wireless, wide area, multi-service networking, etc.; network management: SNMP, OSI management, distributed network management and architectures. (Sp)

G5153 Network Security. Prerequisite: 4133 or 5133. Topics in network security including the inter-network security model, introduction to cryptography, public key encryption and hash functions, network security practice, and system security. (Sp)

G5163 Embedded Systems (Slashlisted with 4163). Prerequisites: 2613 or 3113 and Mathematics 3333. Theory and practice of connecting computational systems to the physical world through sensors and actuators. No student may earn credit for both 4163 and 5163. (Sp)

G5193 Special Topics in Networks and Distributed Systems. Prerequisite: permission of instructor. May be repeated; maximum credit 12 hours. Topics vary; deals with issues related to networks and distributed systems. (F)

G5213 Software Engineering Processes. Prerequisite: 3113 or 3823 or 5004. Effective processes for software requirements specification, planning, design, documentation, development, review, defect tracking, testing, product delivery, and product evaluation. Emphasis on resource tracking and software quality. Students work in teams to develop, deliver, and evaluate software products. (F)

G5413 Computational Complexity. Prerequisite: 4413 and 3823 or 5813. Computational complexity theory dealing with various models of computation and a detailed analysis of P and NP hard problems. (Sp)

G5433 Computational Methods in Discrete Optimization (Slashlisted with 4433). Prerequisite: mathematics 3333 and 4413 or concurrent enrollment in 4413. Linear programming: simplex method for LP problems, degeneracy and anticycling strategies, duality theory and complementary slackness conditions, revised simplex method, sensitivity analysis and simplex method for general LP problems. Network optimization: the transshipment problem, network simplex method, shortest path algorithms, the maximum flow problem, and the primal dual method. No student may earn credit for both 4433 and 5433. (F)

G5443 Advanced Discrete Optimization and Networks. Prerequisite: 4413. Review of basic algorithm techniques: DFS, BFS, shortest paths, min-cost spanning tree, etc.; maximum flow problem: labeling and preflow-push algorithms, maximum flow in unit capacity networks and complexity analysis; min cost-flow problems: duality theory, network simplex, primal-dual and relaxation methods; matching: bipartite matching, weighted matching and optimum assignment problems; connectivity: biconnectivity and K-connectivity algorithms; heuristics and approximation algorithms; applications: network design, network reliability and Q0s routing etc. (Sp)

G5513 Advanced Database Management. Prerequisite: 4513. An advanced course dealing with both current database applied research subjects and theoretical aspects of relational databases. Selected topics such as distributed databases, object-oriented databases, real-time databases, and multimedia databases will be discussed. (Sp)

G5613 Computer Networks and Distributed Processing. Prerequisite: 4613. Provides a comprehensive treatment of the analysis and design of computer networks. Data communication techniques and distributed processing in a network architecture will be examined. (Sp)

G5743 Scientific Computing I (Slashlisted with 4743). Prerequisite: Mathematics 3333 and Aerospace and Mechanical Engineering 3723 or Mathematics 4073 or Engineering 3723. Interaction between applications, architectures, and algorithms. Review of linear algebra, serial, pipelined vector processors, clusters of processors. Measures of proformance of parallel algorithms. Parallel algorithms for the solution of linear systems. No student may earn credit for both 4743 and 5743. (F)

G5753 Scientific Computing II. Prerequisite: 5743. Special research topics in scientific computing. Possible topics include optimization algorithms, time series modeling, Kalman filtering techniques, and miltivariate statistical techniques. (Sp)

G5813 Formal Languages. Prerequisite: 3823. Theory of formal languages. Mathematical modeling of natural or artificial objects, events, and phenomena. Topics include systems for linear/nonlinear objects, their language-theoretical properties, and the related machine theory. (F)

G5823 Cryptography (Slashlisted with 4823). Prerequisite: 3823 and 4413. Elementary number theory, time complexity for doing arithmetic, finite fields, RSA, discrete logarithm and Diffie-Hellman, zero-knowledge protocols and oblivious transfer. Basic elliptic curve cryptosystems, elliptic curve factorization and primality proving. No student may earn credit for both 4823 and 5823. (Sp)

G5970 Graduate Seminar. Prerequisite: permission of instructor. May be repeated with a change of subject matter; maximum credit six hours. Selected topics of current research interest not covered by regularly scheduled coursework. (F, Sp, Su)

G5980 Research for Master's Thesis. Variable enrollment, two to nine hours; maximum credit applicable toward degree, six hours. (F, Sp, Su)

G5990 Independent Studies. 1 to 3 hours. Prerequisite: graduate standing, permission of instructor. May be repeated with change of topic; maximum graduate credit nine hours. Supervised individual reading and research in computer science for graduate students. (F, Sp, Su)

G6143 Wireless and Mobile Networks. Prerequisite: 4133 or 5133 or permission of instructor. A complete treatment of the issues related to wireless networks, mobility in wireless networks, protocols in wireless and mobile networks, location management, quality of service in wireless networks; application in wireless and mobile networks including distributed applications, middleware, mobile transactions, mobile multimedia, and remote execution. (Sp)

G6973 Advanced Topics in Computer Science. Prerequisite: graduate standing. May be repeated with change of subject matter. Selected topics of current faculty research interest at the Ph.D. level not covered by regularly scheduled coursework.

G6980 Research for Doctoral Dissertation. (F, Sp, Su)

A dagger (†) before the G indicates the course is not applicable for graduate credit in that department.

Updated: July 1, 2008