Mathematical Computer Science  MCS
The information below lists courses approved in this subject area effective Fall 2014. 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.
500level 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 MCS 260 or 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. Divideandconquer, dynamic programming, greedy method, backtracking. Algorithms for sorting, searching, graph computations, pattern matching, NPcomplete 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 fullyfunctional 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 publickey 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
ObjectOriented Programming in C++ 3 OR 4 hours.
C++ as an objectoriented 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, costbenefit 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. Unionfind 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 nonbipartite matching, the matching polytope, matroids, greedy algorithm, matroid union and intersection algorithms, matroid polyhedra, polymatroids. Prerequisite(s): MCS 423 and STAT 471.
531
ErrorCorrecting Codes 4 hours.
Finite fields, cyclic codes, quadratic residue codes, BCH codes, decoding schemes. ReedMuller 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 symbolicnumeric 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: Highorder 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 ErrorCorrecting 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.
