The primary goal of the degree program in Computer Science is to provide students the foundations for future work and careers in computation-based problem solving. These foundations support both a successful career path in computing as well as provide appropriate qualifications for further degree work in computation related disciplines. Our degree emphasizes development of analytical skills, acquisition of knowledge and understanding of systems, languages and tools required for effective computation-based problem solving. Our core courses offer a broad base so that students who end their studies with the bachelor’s degree can continue to acquire new skills and advance in an always-evolving professional workplace. Our core courses also strive to cultivate the sophistication and insights needed for further study at the graduate level. We accomplish these goals by placing our computer science program in the context of the core curriculum requirements of the University of New Mexico, by requiring a minor degree outside of computer science and by insisting on a strong overall grade point average.
The following objectives are to be met by students obtaining a degree in Computer Science. Students, upon graduation, will:
Analytical skills are at the heart of becoming an effective computer scientist. These skills are stressed even from the beginning courses in programming and discrete mathematics. The ability to develop a computational solution for a problem coming from a complex world of goals and processes also requires understanding of and experience with algorithm design, a wide variety of architecture and network designs and a select number of current computing languages–ranging from the more direct hardware based to the very highest level. These analytic, design and programming skills are tested in senior-level applications courses, including work in databases, graphics, complex systems, computer vision and artificial intelligence. Supporting all of our education in computing is a philosophy that stresses analysis, communication, ethics and social responsibility.
Students wishing to enroll in the bachelor’s program in computer science must apply for admission or transfer to the Computer Science Department, School of Engineering. The admission process is initiated through the Office of Admissions for students wishing to transfer to the University of New Mexico from other institutions. Grades earned in equivalent courses at other institutions will be used in determining eligibility for admission to the department. Students transferring to the Computer Science program from another college at the University of New Mexico should initiate the paperwork at the office of the Computer Science Department. Students transferring to the Computer Science program from another department within the School of Engineering should initiate the paperwork in their present department office. Students denied entrance to the department due to lack of sufficient credits or specific courses may enroll in computer science classes and reapply at a later time when they meet the entrance requirements. The criteria for admission to the department are:
The department subscribes to the general policy of the School of Engineering with regard to advanced placement credit earned by examination.
Students with university level course work from other institutions will have their academic records evaluated by an undergraduate advisor from the department on an individual basis. The student should be aware that the department has the final say about which transfer credits can be applied toward the graduation requirements listed below. Because computer science programs vary greatly, students transferring from other institutions should not assume that computer science courses they have taken elsewhere can be applied toward the 51 hour computer science course work graduation requirement. Courses not accepted toward the 51 hours may be applied toward the 130 semester hour graduation requirement as general electives at the discretion of an undergraduate advisor.
To receive the Bachelor of Science in Computer Science, a student must satisfy all general University of New Mexico regulations concerning baccalaureate programs and must complete all work defined by the following groups. Only courses with a grade of C- or better may be used to satisfy any of the requirements defined herein. The following courses cannot be used to satisfy any of the requirements listed below: Reserve Officers Training (ROTC), recreational physical education (PE-NP), Introductory Studies courses (e.g., IS-E 100) and mathematics courses prior to calculus. If in doubt about the applicability of a course. contact an undergraduate advisor in the Computer Science Department.
The remaining 9 hours are technical electives of the student's choosing to be taken from among the Computer Science Department offerings. (Certain courses in the Department of Electrical and Computer Engineering are also acceptable as technical electives.) All courses used as technical electives are subject to the approval of an undergraduate advisor and must be completed with a grade of B or better.
CS 259L may be substituted for CS 152L and CS 251L but only 5 hours credit is awarded. The computer science hour requirement is reduced to 50, but the overall graduation requirement remains at 130.
Department offerings below the 300 level cannot be used as technical electives. The following courses also cannot be used as technical electives: CS 394, 401, 492, 494.
Part of this requirement may be satisfied by passing an authorized proficiency examination. English 101 and 102 will be waived if the student obtains
See the Schedule of Classes for additional ways to gain exemption from ENGL 101 and 102. When a student is exempted from ENGL 101 and 102, the student's total credit requirement is reduced to 128, the minimum allowed by the University for a bachelor's degree. Students may have to take additional hours to bring their total to at least 128.
Physics is recommended.
The following courses taken from the Department of Electrical and Computer Engineering satisfy this requirement:
Minor in Computer Engineering: ECE 203, ECE 206L, ECE 213, ECE 321, ECE 322, ECE 338 and ECE 438.
Minor in Electrical Engineering: ECE 203, ECE 206L, ECE 213, ECE 314, ECE 321 and two of ECE 322, ECE 340, ECE 360, ECE 371, or ECE 445.
No course included in the mathematics requirement for CS majors (STAT 345, MATH 314, 321 or 375) may be applied toward the mathematics minor.
Mathematics minors may not use Department of Mathematics courses for Teachers and Education Students in constructing the minor. MATH 317 and MATH 327 cannot be used in constructing the minor. Statistics minors must substitute 6 hours of advance statistics for STAT 145 (not accepted by the department) and STAT 345 (already required of all computer science majors).
Students minoring in business cannot minor in Management Information Systems (MIS). In particular, the following courses cannot be used in constructing the minor: MGMT 290 (STAT 245, 329, 330, 331, 336, 337 and 437, 439, 449, 450, 459, 460, 461, or any course related to CS or computer applications.
Courses taken to satisfy the requirements for a minor may also be used to satisfy the requirements of categories 1, 2, 5, 6 and 7.
Students may not take elementary courses in a department after progressing past a certain point in the course offerings of that department. An example is: taking CS 150L after having taken CS 251L. Courses taken out of sequence in this manner may not even be used as general elective credits to satisfy the requirement of 130 hours. Students may not retake elementary computer science courses in order to raise their grade point average in computer science to 2.30.
A minor in computer science is available for students in other departments. The requirements for a minor are completion of 15 hours of CS courses from those required for the major, a minimum of 6 of these 15 credit hours must be at 300 level or above.
A grade of C or better is required for all CS courses counted toward minor.
Eligible freshmen and upperclassmen in the Computer Science Department are urged to enroll in the Honors Program. Students may graduate with University Honors, Departmental Honors or both. Information is available from departmental advisors and the University Honors Center.
Students are required to see an undergraduate advisor within the department each semester prior to registering for classes. Students not subject to the University of New Mexico Core Curriculum requirements should check with an advisor about the admissibility of classes used to satisfy graduation requirement 6 (which still applies), as some courses offered by other departments do not meet the spirit of this breadth requirement.
The following schedule is intended to be a guide for students when planning their course load for any particular semester. It should be noted that the schedule must normally be adjusted to compensate for any deficiencies or advanced preparation on the part of the student prior to beginning the freshman year. Students must take the ACT or SAT to aid in proper placement in Math and English. Students should not begin any Computer Science courses until they have knowledge of mathematics equivalent to MATH 150 (Pre-Calculus Mathematics). General electives include courses in humanities, social and behavioral sciences, the fine arts and foreign languages. For first degree students general electives includes courses used to satisfy University of New Mexico Core Curriculum requirements. It is recommended that a student not attempt more than 12 hours of technical material in one semester.
Courses
CS 131L. Introduction to Unix® and the World Wide Web. (2)
An introduction to Unix®-based computing resources. Topics include: elements of a computer system, elementary Unix® commands and file system structure, e-mail, a visual editor, browsing the World Wide Web and construction of simple Web pages using HTML.
CS 132L. Introduction to Unix® and the World Wide Web. (1)
Continuation of CS 131L.
Prerequisite: 131L
CS 150L. Computing for Business Students. (3)
Students will use personal computers in campus laboratories to learn use of a word processor, a spreadsheet and a database management program. The course will also cover access to the World Wide Web and other topics of current importance to business students. Course cannot apply to major or minor in Computer Science.
Prerequisite: MATH 120 or MATH 121 or MATH 123 or MATH 150 or MATH 162 or MATH 163 or MATH 180 or MATH 181.
CS 151L. Computer Programming Fundamentals for Non-Majors. (3)
An introduction to the art of computing. Not intended for Computer Science majors or minors. The objective of the course is an understanding of the relationship between computing and problem solving.
CS 152L. Computer Programming Fundamentals. (3)
Introduction to the art of computing. The course objectives are understanding relationships between computation, problem solving, and programming using high-level languages.
CS 241L. Data Organization. (3)
Data representation, storage and manipulation. Covers the memory organization of data storage and its relation to computation and efficiency. Topics include: linked vs. contiguous implementations, memory management, the use of indices and pointers, and an introduction to issues raised by the memory hierarchy. Programming assignments in C provide practice with programming styles that yield efficient code and computational experiments investigate the effect of storage design choices on the running time of programs.
Prerequisite: 151L or 152L or 259L.
CS 251L. Intermediate Programming. (3)
An introduction to the methods underlying modern program development. Specific topics will include object-oriented design and the development of graphical user interfaces. Programming assignments will emphasize the use of objects implemented in standard libraries.
Prerequisite: 151L or 152L. Three lectures, 1 hr. recitation.
CS 259L. Data Structures with JAVA. (5)
An accelerated course covering the material of 151L and 251L in one semester. Topics include elementary data structures and their implementation, recursive procedures, data abstraction and encapsulation, and program organization and verification. Programs will be written in JAVA . Credit not allowed for both 259L and 151L/251L.
CS 261. Mathematical Foundations of Computer Science. (3)
Introduction to the formal mathematical concepts of computer science for the beginning student. Topics include elementary logic, induction, algorithmic processes, graph theory and models of computation.
CS 293. Social and Ethical Issues in Computing. (1)
Overview of philosophical ethics, privacy and databases, intellectual property, computer security, computer crime, safety and reliability, professional responsibility and codes, electronic communities and the Internet, and social impact of computers. Students make oral presentations and produce written reports.
CS 341L. Introduction to Computer Architecture and Organization. (3)
Survey of various levels of computer architecture and design: microprogramming and processor architecture, advanced assembly language programming, operating system concepts and input/output via the operating system.
Prerequisite: 241L and ECE 238L
CS 351L. Design of Large Programs. (4)
A projects course with emphasis on object-oriented analysis, design and programming. Also discussed are programming language issues, programming tools and other computer science concepts as needed to do the projects (e.g., discrete-event simulation, parsing).
Prerequisite: 251L or 259L
CS 357L. Declarative Programming. (3)
Course focuses on one of the declarative programming paradigms: functional, logic, or constraint programming. Specialized techniques are introduced with a view towards general principles. Selected advanced topics in programming language design and implementation are covered.
Prerequisite: 251L
CS 361L. Data Structures and Algorithms. (3)
An introduction to data structures and algorithms and the mathematics needed to analyze their time and space complexity. Topics include asymptotic notation, recurrence relations and their solution, sorting, hash tables, basic priority queues, search trees (including at least one balanced structure) and basic graph representation and search. Students complete a term project that includes an experimental assessment of competing data structures.
Prerequisite: 261 and 241L
CS 362. Data Structures and Algorithms II. (3)
A continuation of 361L with an emphasis on design of algorithms. Topics include: amortized analysis and self-adjusting data structures for trees and priority queues; union-find; minimum spanning tree, shortest path and other graph algorithms; elementary computational geometry; greedy and divide-and-conquer paradigms.
Prerequisite: 361L
CS 365. Introduction to Scientific Modeling. (3)
Symbolic computation applied to scientific problem solving, modeling, simulation and analysis.
Prerequisite: 151L or 152L
CS *375. Introduction to Numerical Computing. (3)
(Also offered as MATH 375.) An introductory course covering such topics as solution of linear and nonlinear equations; interpolation and approximation of functions, including splines; techniques for approximate differentiation and integration; solution of differential equations; familiarization with existing software.
Prerequisite: (151L or 152L or PHYC 290 or ECE 131) and (MATH 314 or MATH 316 or MATH 321).
CS 390. Topics in Computer Science for Non-Majors–Undergraduate. (1-3, no limit Δ)
This course is intended to provide students in other disciplines with an opportunity to study aspects of modern computer science, tailored to their own field of study.
Restriction: permission of instructor
CS 394. Computer Generated Imagery and Animation. (3)
(Also offered as ARTS 394.)
Introduction to story boarding, modeling, rendering, animation and dynamics. Class uses high-level commercial animation software. Course emphasizes both the development of technical skills and the aesthetic aspects of computer imagery. Not allowed for graduate credit for computer science majors, nor as a technical elective for undergraduate computer science majors.
CS 401. Theoretical Foundations of Computer Science. (3)
Mathematical reasoning for computer science. Topics include propositional and first-order logic, group theory, introduction to formal languages and formal models of computation.
Restriction: undergraduate
Offered on a CR/NC basis only.
CS 412. Introduction to Computer Graphics: Scanline Algorithms. (3)
(Also offered as ECE 412)
This course is an introduction to the technical aspects of raster algorithms in computer graphics. Students will learn the foundational concepts of 2-D and 3-D graphics as they relate to real-time and offline techniques. Students will develop a video game as a final project to demonstrate the algorithms learned in class.
Prerequisite: 361L or ECE 331
{Fall}
CS 413. Introduction to Ray and Vector Graphics. (3)
(Also offered as ECE 413)
Topics include ray-geometry intersections, viewing, lenses, local/global illumination, procedural textures/models, spline curves and surfaces, and statistical integration for realistic image synthesis. Students will write a raytracing renderer from scratch, exploring high performance implementations and realistic rendering.
Prerequisite: 361L or ECE 331
CS 422 / 522. Digital Image Processing. (3)
Introduction to fundamentals of digital image processing. Specific topics include grey level histograms, geometric/grey level transformations, linear systems theory, Fourier transforms, frequency domain filtering, wavelet transforms, image compression, edge detection, color vision, and binary image morphology.
Prerequisite: MATH 314 or MATH 321
CS **423. Introduction to Complex Adaptive Systems. (3)
Introduces topics in complex adaptive systems, including: definitions of complexity, fractals, dynamical systems and chaos, cellular automata, artificial life, game theory, neural networks, genetic algorithms and network models. Regular programming projects are required.
Prerequisite: 251L and MATH 163
CS 427 / 527. Principles of Artificially Intelligent Machines. (3)
Survey of artificial intelligence exclusive of pattern recognition. Heuristic search techniques, game playing, mechanical theorem proving, additional topics selected by the instructor.
Prerequisite: 351L
CS 429 / 529. Introduction to Machine Learning. (3)
Introduction to principles and practice of systems that improve performance through experience. Topics include statistical learning framework, supervised and unsupervised learning, Bayesian analysis, time series analysis, reinforcement learning, performance evaluation and empirical methodology; design tradeoffs.
Prerequisite: 362 and STAT 345 and (MATH 314 or MATH 321)
CS *441. Modern Computer Architecture. (3)
A study of the design concepts of major importance in modern computers. Topics will include microprogramming, language-directed computers, parallel processors and pipeline computers. Emphasis will be placed on the relationship of architecture to programming issues.
Prerequisite: 341L
CS *442. Introduction to Parallel Processing. (3)
(Also offered as ECE 432)
Machine taxonomy and introduction to parallel programming. Performance issues, speed-up and efficiency. Interconnection networks and embeddings. Parallel programming issues and models: control parallel, data parallel and data flow. Programming assignments on massively parallel machines.
Recommended: 481 or ECE 437
Prerequisite: (341L or ECE 337) and (351L or ECE 331)
CS 444/544. Introduction to Cybersecurity. (3)
This class will focus on proactive security, i.e. designing networks, algorithms and data structures which are provably robust to attack. Grades will be based on class participation, presentations, and class projects.
CS 454 / 554. Compiler Construction. (3)
Syntax analysis and semantic processing for a block-structured language. Lexical analysis, symbol tables, run-time management. Students will write a compiler.
CS **460. Software Engineering. (3)
Software engineering principles will be discussed and applied to a large team developed project. Other topics relevant to the production of software will also be covered, including ethics, legalities, risks, copyrights and management issues.
CS 464 / 564. Introduction to Database Management. (3)
Introduction to database management systems. Emphasis is on the relational data model. Topics covered include query languages, relational design theory, file structures and query optimization. Students will implement a database application using a nonprocedural query language interfaced with a host programming language.
CS *471. Introduction to Scientific Computing. (3)
(Also offered as MATH 471)
Introduction to scientific computing fundamentals, exposure to high performance programming language and scientific computing tools, case studies of scientific problem solving techniques.
CS 473 / 573. Physics and Computation. (3)
Moore
(Also offered as NSMS 573)
A survey of complex systems at the interface between physics and computer science, including phase transition, power laws, social networks, NP-completeness, and Monte Carlo methods.
CS **481. Computer Operating Systems. (3)
(Also offered as ECE 437*)
Fundamental principles of modern operating systems design, with emphasis on concurrency and resource management. Topics include processes, interprocess communication, semaphores, monitors, message passing, input/output device, deadlocks memory management, files system design.
Prerequisite: 341L or (ECE 330 and ECE 337)
CS **485. Introduction to Computer Networks. (3)
(Also offered as ECE 440)
Theoretical and practical study of computer networks, including network structures and architectures. Principles of digital communications systems. Network topologies, protocols and services. TCP/IP protocol suite. Point-to-point networks; broadcast networks; local area networks; routing, error and flow control techniques.
CS 491. Special Topics–Undergraduates. (1-6 to a maximum of 12 Δ)
Undergraduate seminars in special topics in computer science.
CS **492. Introduction to Computers in Manufacturing. (3)
Topics in computers and computing as related to manufacturing. Topics covered will include networks and distributed systems, software for real-time systems and database management. Term project required. Course cannot apply to major, minor or master’s degree in Computer Science.
CS **494. Advanced Topics in Computer Generated Imaging. (3)
(Also offered as ARTS 494/594)
A continuation of 394. Students are expected to research and make presentations on advanced topics in CGI. Significant term project required. Not allowed for graduate credit for computer science majors, nor as a technical elective for undergraduate computer science majors.
CS 499. Individual Study–Undergraduate. (1-3 to a maximum of 6 Δ)
Guided study, under the supervision of a faculty member, of selected topics not covered in regular courses. At most 3 hours may be applied toward the CS hour requirement.
CS 500. Introduction to the Theory of Computation. (3)
Covers basic topics in automata, computability and complexity theory, including: models of computation (finite automata, Turing machines and RAMs); regular sets and expressions; recursive, r.e., and non-r.e. sets and their basic closure properties; complexity classes; determinism vs. non-determinism with and without resource bounds; reductions and completeness; practice with NP- and P-completeness proofs; and the complexity of optimization and approximation problems.
Prerequisite: 401.
CS 506. Computational Geometry. (3)
Development of algorithms and data structures for the manipulation of discrete geometric objects in two- and three-dimensional space. Typical problems include intersection and union of polyhedra, convex hulls, triangulation, point location, neighborhood structures and path computations.
Prerequisite: 561
CS 509. Parallel Algorithms. (3)
(Also offered as ECE 509)
Design and analysis of parallel algorithms using the PRAM model, with emphasis on graph algorithms, searching and sorting and linear algebra applications. Embedding into hypercubic and related networks. Introduction to parallel complexity theory.
Prerequisite: 561 or ECE 537
CS 510. Randomized Algorithms. (3)
Introduction to probability theory, moments and deviation, tail inequalities, probabilistic method, Markov Chains and Random Walks, dynamic graph algorithms, data stream algorithms, and parallel and distributed algorithms.
Prerequisite: 500 and 530 and 561
CS 511. Algorithms in the Real World. (3)
Study of algorithms which have been successful in real world. New algorithmic tools, ways to create approximation algorithms for NP-Hard problems, exploit the power of randomness, and create tractable abstract problems from messy real-world problems.
Prerequisite: 530 or 561
CS 512. Advanced Image Synthesis. (3)
(Also offered as ECE 512)
Covers image synthesis techniques from perspective of high-end scanline rendering, including physically-based rendering algorithms. Topics: radiometry, stochastic ray tracing, variance reduction, photon mapping, reflection models, participating media, advanced algorithms for light transport.
CS 513. Real-Time Rendering and Graphics Hardware. (3)
(Also offered as ECE 513)
Course covers advanced algorithms in real-time rendering and graphics hardware, bringing students up to speed with cutting edge real-time graphics. Topics: advanced GPU algorithms for graphics and non-graphics applications. Term project required.
CS 515. Scientific and Information Visualization. (3)
(Also offered as ECE 515)
Introduction to scientific and data visualization techniques. Topics: data manipulation, feature extraction, visual display, peer critique of project design, data formats and sampling, geometric extraction, volume visualization, flow visualization, abstract data visualization, user interaction techniques.
CS 520. Topics in Interdisciplinary Biological and Biomedical Sciences. (3, unlimited Δ)
(Also offered as ANTH 620, BIOL 520, ECE 620, STAT 520)
Varying interdisciplinary topics taught by collaborative scientists from UNM, SFI, and LANL.
CS 522 / 422. Digital Image Processing. (3)
Introduction to fundamentals of digital image processing. Specific topics include grey level histograms, geometric/grey level transformations, linear systems theory, Fourier transforms, frequency domain filtering, wavelet transforms, image compression, edge detection, color vision, and binary image morphology.
Prerequisite: MATH 314 or MATH 321
CS 523. Complex Adaptive Systems. (3)
A graduate introduction to computational tools to measure, simulate and analyze complexity in biological and social systems. Topics include cellular automata, dynamical systems, genetic algorithms and other biologically inspired computational methods. Programming maturity is required.
CS 524. Collaborative Interdiciplinary Teaching. (3)
(Also offered as BIOL 524, ANTH 524, STAT 524, ECE 524)
Course designed to develop the methods content and assessment of effective interdisciplinary biological courses; Students will develop and teach an undergraduate interdisciplinary topics course. Topics vary.
Restriction: permission of instructor
CS 527 / 427. Principles of Artificially Intelligent Machines. (3)
Survey of artificial intelligence exclusive of pattern recognition. Heuristic search techniques, game playing, mechanical theorem proving, additional topics selected by the instructor.
Prerequisite: 351L
CS 528. Advanced Topics in Artificial Intelligence. (3)
Continues the topics presented in 427/527, including writing an expert system shell in LISP; designing and building an object-oriented interpreter; creating a hybrid environment by attaching rules to objects. Representation issues to include: semantic nets, frames, objects, conceptual graphs and others. Assignments include writing a recursive descent semantic net parser.
Prerequisite: 427 or 527
CS 529 / 429. Introduction to Machine Learning. (3)
Introduction to principles and practice of systems that improve performance through experience. Topics include statistical learning framework, supervised and unsupervised learning, Bayesian analysis, time series analysis, reinforcement learning, performance evaluation and empirical methodology; design tradeoffs.
Prerequisite: 362 or 530 or 561
CS 530. Geometric and Probabilistic Methods in Computer Science. (3)
Introduction to applied mathematics for computer scientists. Specific topics include discrete and continuous random variables (including transformation and sampling), information theory, Huffman coding, Markov processes, linear systems theory, Fourier transforms, principal component analysis, and wavelet transforms.
Prerequisite: STAT 345
CS 531. Pattern Recognition. (3)
(Also offered as ECE 517)
Decision functions and dichotomization; prototype classification and clustering; statistical classification and Bayes theory; trainable deterministic and statistical classifiers. Feature transformations and selection. Introduction to sequential, hierarchical and syntactic methods.
Prerequisite: STAT 345 or ECE 340
CS 532. Computer Vision. (3)
(Also offered as ECE 516)
Theory and practice of feature extraction, including edge, texture and shape measures. Picture segmentation; relaxation. Data structures for picture description. Matching and searching as models of association and knowledge learning. Formal models of picture languages.
Prerequisite: STAT 345 or ECE 340, CS 361L or ECE 331
CS 534. Advanced Computer Graphics. (3)
Realism in computer graphics: hidden surface removal, rendering, surface modeling, ray tracing, radiosity. Advanced modeling techniques: surface patches, solid modeling, scan conversion. Scientific visualization. Architectures for computer graphics.
Prerequisite: 412
CS 537. Automated Reasoning. (3)
Both theoretical foundations of and practical issues in automated reasoning will be covered. Students will read selected papers for class discussion and will be required to do a term project.
Prerequisite: 561
CS 544/444. Introduction to Cybersecurity. (3)
This class will focus on proactive security, i.e. designing networks, algorithms and data structures which are provably robust to attack. Grades will be based on class participation, presentations, and class projects.
Prerequisite: 561 and (362 or 500) with a grade of B or better.
CS 547. Neural Networks. (3)
(Also offered as ECE 547)
A study of neuron models, basic neural nets and parallel distributed processing.
Prerequisite: MATH 314 or 321
CS 550. Programming Languages and Systems. (3)
Current trends in design and philosophy of languages and systems. Data abstraction, data flow languages, alternative control structures, environments, correctness, software tools.
Prerequisite: 451
CS 551. Individual Study–Graduate. (1-3 to a maximum of 6 Δ)
Guided study, under the supervision of a faculty member, of selected topics not covered in regular courses.
Restriction: permission of instructor
CS 554 / 454. Compiler Construction. (3)
Syntax analysis and semantic processing for a block-structured language. Lexical analysis, symbol tables, run-time management. Students will write a compiler.
Prerequisite: 341L and 351L
CS 555. Advanced Topics in Compiler Construction. (3)
Aspects needed to write production quality compilers. Optimization, error recovery, parse table compression, semantic processing of complex data structures, type checking, run-time support, code generation, compiler-writing systems.
Prerequisite: 454 or 554
CS 557. Selected Topics in Numerical Analysis. (3)
(Also offered as MATH 557)
Possible topics include approximation theory, two point boundary value problems, quadrature, integral equations and roots of nonlinear equations.
CS 558. Software Foundations. (3)
Introduction to modern programming techniques and programming language features and the theory used to describe and define programming languages, using types as the organizational principle.
CS 561. Algorithms/Data Structure. (3)
Study of data structures and algorithms and mathematics needed to analyze their time and space complexity. Topics include: amortized analysis and self-adjusting data structures for trees and priority queues, graphing algorithms, greedy and divide-and-conquer paradigms.
CS 564 / 464. Introduction to Database Management. (3)
Introduction to database management systems. Emphasis is on the relational data model. Topics covered include query languages, relational design theory, file structures and query optimization. Students will implement a database application using a nonprocedural query language interfaced with a host programming language.
Prerequisite: 561
CS 565. Topics in Database Management. (3)
A continuation of 464/564 with emphasis on query optimization, leading-edge data models, transaction management and distributed databases. Additional topics determined by student interests.
Prerequisite: 564
CS 569. Computational Medicine. (3)
Goal of course is to promote analytical thinking through introduction of new application domains. Topics: theory of graph algorithms, convex programming, applied optimization techniques, application of radiological physics, basic radiography, radiation therapy planning, medical imaging.
CS 571. Quantum Computation. (3)
Caves, Deutsch, Geremia, Landahl, Moore
(Also offered as NSMS, PHYC 571)
This course explores the concepts and mathematical techniques underlying quantum computation. Topics include quantum entanglement, quantum cryptography, teleportation, models for quantum computation, quantum algorithms, quantum error correction, and fault-tolerant quantum computation.
CS 573 / 473. Physics and Computation. (3)
Moore
(Also offered as NSMS 573)
A survey of complex systems at the interface between physics and computer science, including phase transition, power laws, social networks, NP-completeness, and Monte Carlo methods.
CS 575. Introductory Numerical Analysis: Numerical Linear Algebra. (3)
(Also offered as MATH 504)
Direct and iterative methods of the solution of linear systems of equations and least squares problems. Error analysis and numerical stability. The eigenvalue problem. Descent methods for function minimization, time permitting.
Prerequisite: MATH 464 or MATH 514
{Spring}
CS 576. Introductory Numerical Analysis: Approximation and Differential Equations. (3)
(Also offered as MATH 505)
Solution of nonlinear problems and minimization. Numerical approximation of functions. Interpolation by polynomials, splines and trigonometric functions. Numerical integration and solution of ordinary differential equations. An introduction to finite difference and finite element methods, time permitting.
Prerequisite: MATH 316 or MATH 401
{Fall}
CS 580. The Specification of Software Systems. (3)
A comparative study of the techniques used to specify software systems. The course will emphasize formal techniques and will cover the specification of sequential and concurrent systems. Although no programming will be required, students will be required to write specifications for several small software systems.
Prerequisite: 460
CS 581. Fundamentals of Software Testing. (3)
Introduces the components of software development life cycle and role of software test process, test planning and strategy, static testing, tracking bugs, dynamic testing, use of automated testing as well as other testing concepts.
CS 583. Object-Oriented Testing. (3)
Introduction to software test process. Topics include: testing perspectives, object-oriented concepts, UML diagrams, development/testing processes, test design, test case development, verifying tests, test case automation, test patterns, and understanding basic concepts of class hierarchies
CS 585. Computer Networks. (3)
A theoretical and practical study of computer networks, including network structures and architectures; protocols and protocol hierarchies; error handling; routing; reliability; point-to-point networks; broadcast networks; local area networks; efficiency and throughput; communications technologies; case studies.
CS 587. Advanced Operating Systems. (3)
Theory of design of operating systems. Modeling, simulation, synchronization, concurrency, process hierarchies, networks and distributed systems.
CS **590. Topics in Computer Science for Non-Majors–Graduate. (1-3, no limit Δ)
This course is intended to provide students in other disciplines with an opportunity to study aspects of modern computer science, tailored to their own field of study.
Restriction: permission of instructor
CS 591. Special Topics–Graduate. (1-6, no limit Δ)
Graduate seminars in special topics in computer science.
Restriction: permission of instructor
CS 592. Colloquium. (1 to a maximum of 4 Δ)
Required of all graduate students. May be repeated, with at most 2 credits towards the M.S. requirements and at most 2 further credits towards the Ph.D. requirements. Students will write a short essay on the topic of one or more of the colloquia offered that semester.
Offered on a CR/NC basis only.
CS 599. Master’s Thesis. (1-6, no limit Δ)
Offered on a CR/NC basis only.
CS 609. Advanced Parallel Algorithms. (3)
(Also offered as ECE 609)
Design and analysis of advanced parallel algorithms, parallel complexity theory, ideal and realistic models of parallel computation, and experimental parallel algorithmics; emphasis on combinatorial problems.
Prerequisite: 510 or ECE 509
CS 650. Reading and Research. (3 to a maximum of 6 Δ)
Restriction: permission of instructor
CS 691. Seminar in Computer Science. (1-6 to a maximum of 12 Δ)
Restriction: permission of instructor
CS 699. Dissertation. (3-12, no limit Δ)
Offered on a CR/NC basis only.