Mathematical Computer Science - MCS


The information below lists courses approved in this subject area effective Fall 2015. Not all courses will necessarily be offered these terms. Please consult the Schedule of Classes for a listing of courses offered for a specific term.

500-level courses require graduate standing.

Back to Course Index


260 Introduction to Computer Science
4 hours. Computer literacy, number systems, concepts of operation systems, storage, files, databases, logic gates, circuits, networks, internet. Introduction to programming in Python, variables, assignments, functions, objects. Prerequisite(s): Credit or concurrent registration in MATH 180. Natural World - No Lab course.

275 Programming Tools and File Management
4 hours. Theory, techniques, and tools of the Python programming language, with applications to data structures, algorithms, web programming, and selected topics. Prerequisite(s): Grade of C or better in MATH 180, and grade of C or better in MCS 260 or grade of C or better in CS 102.

294 Special Topics in Computer Science
1 TO 4 hours. Course content is announced prior to each term in which it is given. May be repeated. Prerequisite(s): Approval of the department.

320 Introduction to Symbolic Computation
3 hours. Introduction to computer algebra systems (MAPLE), symbolic computation, and the mathematical algorithms employed in such computation, with examples and applications to topics in undergraduate mathematics. Prerequisite(s): Grade of C or better in MATH 210; and Grade of C or better in MCS 260 or Grade of C or better in CS 102 or Grade of C or better in CS 108.

360 Introduction to Data Structures
4 hours. Pointers and dynamic memory allocation in C/C++, recursion, stacks, queues, heaps, binary and multiway trees, graphs, hash tables. Sorting and searching algorithms. Prerequisite(s): Grade of C or better in MCS 260 and Grade of C or better in MCS 275.

361 Discrete Mathematics
3 hours. Discrete mathematical structures used in computer science: sets, functions and relations; induction, recursive definitions and relations, methods of proof, quantifiers; counting; graphs and trees; algorithms. Previously listed as MCS 261. Prerequisite(s): Grade of C or better in MATH 215 and Grade of C or better in CS 102.

394 Special Topics in Computer Science
2 TO 4 hours. Course content is announced prior to each term in which it is given. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the department.

401 Computer Algorithms I
3 OR 4 hours. Design and analysis of computer algorithms. Divide-and-conquer, dynamic programming, greedy method, backtracking. Algorithms for sorting, searching, graph computations, pattern matching, NP-complete problems. Same as CS 401. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MCS 360; or Grade of C or better in CS 202.

411 Compiler Design
3 OR 4 hours. Language translation: lexical analysis, parsing schemes, symbol table management, syntax and semantic error detection, and code generation. Development of fully-functional compiler. Same as CS 473. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 301 or grade of C or better in MCS 441; and grade of C or better in CS 202 or grade of C or better in MCS 360; and grade of C or better in CS 266.

415 Programming Language Design
3 OR 4 hours. Definition, design, and implementation of programming languages. Syntactic and semantic description; variable bindings, control and data structures, parsing, code generation, optimization; exception handling; data abstraction. Same as CS 476. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): MCS 360 or CS 340.

421 Combinatorics
3 OR 4 hours. The pigeonhole principle, permutations and combinations, binomial coefficients, inclusionexclusion principle, recurrence relations and generating functions, special counting sequences, Polya theory of counting. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MATH 215; and Grade of C or better in MATH 310 or Grade of C or better in MATH 320; or consent of the instructor.

423 Graph Theory
3 OR 4 hours. Basic concepts of graph theory including Eulerian and hamiltonian cycles, trees, colorings, connectivity, shortest paths, minimum spanning trees, network flows, bipartite matching, planar graphs. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MATH 215; and Grade of C or better in MATH 310 or Grade of C or better in MATH 320; or consent of the instructor.

425 Codes and Cryptography
3 OR 4 hours. Mathematics of communications theory, basic information theory necessary to understand both coding theory and cryptography, basic ideas and highlights for both coding theory and cryptography, including public-key cryptosystems. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MATH 215; and Grade of C or better in MATH 310 or Grade of C or better in MATH 320; or consent of the instructor.

441 Theory of Computation I
3 OR 4 hours. Introduction to formal languages; relations between grammars and automata; elements of the theory of computable functions. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): MATH 215.

451 Object-Oriented Programming in C++
3 OR 4 hours. C++ as an object-oriented language, classes and member functions, access control, class scope, constructors, destructors, overloading, conversions, streams, derived classes, polymorphism through virtual functions, templates, class libraries. 3 undergraduate hours. 4 graduate hours. Credit is not given for MCS 451 if the student has credit for CS 474. Extensive computer use required. Prerequisite(s): Grade of C or better in MCS 360 or the equivalent or consent of the instructor.

471 Numerical Analysis
3 OR 4 hours. Introduction to numerical analysis; floating point arithmetic, computational linear algebra, iterative solution to nonlinear equations, interpolation, numerical integration, numerical solution of ODEs, computer subroutine packages. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MCS 275 or grade of C or better in CS 102 or grade of C or better in CS 108; or consent of instructor.

472 Introduction to Industrial Math and Computation
3 OR 4 hours. Technical writing and oral presentations in preparation for industrial projects. Topics include quality control, operations research, cost-benefit analysis, differential equations, using scientific software. Extensive computer use required. Prerequisite(s): Grade of C or better in MCS 471 or consent of the instructor. Recommended background: Designed for students with a desire to explore mathematics via practical field work.

481 Computational Geometry
3 OR 4 hours. Algorithmic problems on sets of points, rectangles, intervals, arcs, chords, polygons. Counting, reporting, location, intersection, pairing; static and dynamic data structures. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MCS 401 or consent of the instructor.

494 Special Topics in Computer Science
3 OR 4 hours. Topics in mathematical computer science, such as symbolic compution, automated reasoning, cryptography or geometric algorithms. 3 undergraduate hours. 4 graduate hours. May be repeated to a maximum of 12 hours. Students may register in more than one section per term. Prerequisite(s): Approval of the department.

496 Independent Study
1 TO 4 hours. Reading course supervised by a faculty member. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the instructor and the department.

501 Computer Algorithms II
4 hours. Continuation of MCS 401 (same as CS 401). Advanced topics in algorithms. Lower bounds. Union-find problems. Fast Fourier transform. Complexity of arithmetic, polynomial, and matrix calculations. Approximation algorithms. Parallel algorithms. Same as CS 501. Prerequisite(s): MCS 401 or CS 401.

503 Mathematical Methods for Algorithm Analysis
4 hours. Discrete mathematical techniques useful in algorithm analysis: summation methods, floor/ceiling expressions, modular arithmetic techniques, harder binomial identities, special numbers, generating functions, asymptotics. Prerequisite(s): Grade of C or better in MCS 401 and grade of C or better in MCS 421.

507 Mathematical, Statistical and Scientific Software
4 hours. The design, analysis, and use of mathematical, statistical, and scientific software. Prerequisite(s): Grade of B or better in MCS 360 or the equivalent or consent of instructor.

521 Combinatorial Optimization
4 hours. Combinatorial optimization: network flows, bipartite matching, Edmonds algorithm for non-bipartite matching, the matching polytope, matroids, greedy algorithm, matroid union and intersection algorithms, matroid polyhedra, polymatroids. Prerequisite(s): MCS 423 and STAT 471.

531 Error-Correcting Codes
4 hours. Finite fields, cyclic codes, quadratic residue codes, BCH codes, decoding schemes. Reed-Muller codes, weight distributions, codes and designs. Prerequisite(s): Grade of C or better in MCS 261, and grade of C or better in MATH 310 or grade or C or better in MATH 330.

541 Computational Complexity
4 hours. Time and space complexity of computations, classification of mathproblems according to their computational complexity, P not equal NP problem. Prerequisite(s): Consent of the instructor.

548 Mathematical Theory of Artificial Intelligence
4 hours. Valiant's learning model, positive and negative results in learnability, automation inference, perceptrons, Rosenblatt's theorem, convergence theorem, threshold circuits, inductive inference of programs, grammars and automata. Prerequisite(s): MCS 541.

551 Generic Programming and the C++ Standard Template Library
4 hours. Generic programming in C++. Templates, namespaces, smart pointers, reference counting. Algorithms, ranges, concepts and modeling. Iterators, function objects, adaptors, and containers. Algorithms and container classes in the STL. Extensive computer use required. Prerequisite(s): Grade of C or better in MCS 451 or grade of C or better in an equivalent course in C++.

563 Analytic Symbolic Computation
4 hours. Analytic computation, including integration algorithms, differential equations, perturbation theory, mixed symbolic-numeric algorithms, and other related topics. Prerequisite(s): Grade of C or better in MCS 460 or the equivalent, and MATH 480 or consent of the instructor.

565 Mathematical Theory of Databases
4 hours. Abstract systems for databases, sysntax and semantics of operational languages, dependencies and normal forms, axiomizations, queries and query optimization, null values, algebraic interpretations.

571 Numerical Analysis of Partial Differential Equations
4 hours. Numerical analysis of Finite Difference methods for PDE of mathematical physics: Wave, heat, and Laplace equations. Introduction to numerical analysis of the Finite Element method. Prerequisite(s): MATH 481 and MCS 471 or consent of the instructor.

572 Introduction to Supercomputing
4 hours. Introduction to supercomputing on vector and parallel processors; architectural comparisons, parallel algorithms, vectorization techniques, parallelization techniques, actual implementation on real machines. Prerequisite(s): MCS 471 or MCS 571 or consent of the instructor.

573 Topics in Numerical Analysis of Partial Differential Equations
4 hours. Topics in numerical analysis of partial differential equations which may include: High-order Finite Element methods, Discontinuous Glerkin methods, Spectral methods, or Integral Equation methods. May be repeated if topics vary. Prerequisite(s): MATH 481 and MCS 471; and consent of the instructor.

590 Advanced Topics in Computer Science
4 hours. Topics in areas such as: mathematical aspects of artificial intelligence, symbolic methods in mathematics, mathematical cryptography, automated reasoning. Topics may vary from term to term. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the department.

591 Advanced Topics in Combinatorial Theory
4 hours. Some of the following topics: combinatorial enumeration, designs, graph theory, matroid theory, combinatorial matrix theory, Ramsey theory. Contents vary from year to year. May be repeated. Prerequisite(s): MCS 423.

592 Advanced Topics in Error-Correcting Codes
4 hours. Topics of current interest in coding theory including codes which are of practical value and which shed light on various mathematical areas. Prerequisite(s): MCS 531 or consent of the instructor.

593 Graduate Student Seminar
1 hours. For graduate students who wish to receive credit for participating in a learning seminar whose weekly time commitment is not sufficient for a reading course. This seminar must be sponsored by a faculty member. Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the department.

595 Graduate Seminar
1 hours. Current developments in research with presentations by faculty, students, and visitors. Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the department.

596 Independent Study
1 TO 4 hours. Reading course supervised by a faculty member. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the instructor and the department.

598 Master's Thesis
0 TO 16 hours. Research work under the supervision of a faculty member leading to the completion of a master's thesis. Satisfactory/Unsatisfactory grading only. Prerequisite(s): Approval of the department.

599 Thesis Research
0 TO 16 hours. Research work under the supervision of a faculty member leading to the completion of a doctoral thesis. Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Prerequisite(s): Approval of the department.


Information provided by the Office of Programs and Academic Assessment.

This listing is for informational purposes only and does not constitute a contract. Every attempt is made to provide the most current and correct information. Courses listed here are subject to change without advance notice. Courses are not necessarily offered every term or year. Individual departments or units should be consulted for information regarding frequency of course offerings.