56:198:500
Introduction to Programming for Computational Scientists (3)
This course introduces the basics of modern computer programming to beginning graduate
students without a background in computer science. Topics covered are:
control statements; arrays and lists; classes, objects and methods;
inheritance; polymorphism; exception handling; file streams and
serialization; recursion; searching and sorting. Students are required
to use an up-to-date integrated development environment (IDE) to
complete a number of programming assignments.
|
56:198:501
Introduction to Algorithms for Computational Scientists (3)
Introduction to algorithms, data structures, and algorithmic paradigms:
binary search trees, hashing, sorting, searching, shortest paths, and
dynamic programming. Introduction to scientific computing with MATLAB.
Prerequisite: 56:198:500 or equivalent.
|
56:198:521
Compiler Construction (3)
Introduction to compiler design and implementation, including lexical analysis, formal syntax specifications, parsing techniques, syntax-directed translation, semantic analysis, execution environment, storage management, code generation, and optimization techniques.
Prerequisite: 50:198:321 or equivalent.
|
56:198:523
Software Engineering (3)
Theory and practice of process life cycle, project planning, requirements capture, software design, team programming, unit and integration testing, system delivery and maintenance, process and product evaluation and improvement. One or more recent process approaches--such as pair programming, extreme/agile programming, unified software process--and component-based software engineering models, such as COBRA, COM, and EJB.
Prerequisite: 50:198:323 or equivalent.
|
56:198:531
Computer Systems Architecture (3)
Processor design; memory hierarchy; cache coherence and consistency; input/output subsystems; multiprocessor and massively parallel architectures.
Prerequisite: 50:198:231 or equivalent.
|
56:198:541
Parallel, Distributed, Grid, and Cloud Computing (3)
Introduces the concepts, models, implementations, and
applications of parallel and distributed systems. Topics include
parallel and distributed architectures; grid and cloud computing
frameworks; programming models and algorithmic techniques; performance
analysis and evaluation; and applications of parallel and distributed
computing. Provides students experience in programming using
different parallel/distributed programming paradigms and the
opportunity to examine a course topic in depth through a significant semester project.
Prerequisite: 56:198:501 or equivalent.
|
56:198:543
Operating Systems (3)
A
comprehensive, hands-on coverage of operating system principles, design,
and implementation. Topics include: kernel development; process
concurrency issues such as starvation, mutual exclusion, deadlock
avoidance, and concurrency models and mechanisms; producer-consumer problems; synchronization; scheduling policies and algorithms for preemptive and nonpreemptive scheduling; real-time scheduling; memory
management and analysis of paging and segmentation policies; security and protection; file systems; fault tolerance; performance
evaluation.
Prerequisite: 50:198:231 or equivalent.
|
56:198:546
Computer Networks (3)
Introduction to computer communication networks, including physical and architectural components, communication protocols, switching, network routing, congestion control, and flow control. End-to-end transport services, network security, and privacy. Networking software and applications. Network installation, testing, and maintenance.
Prerequisite: 50:198:231 or equivalent.
|
56:198:548
Mobile and Wireless Computing (3)
Digital communication, radio transmission basics, the mobile environment, communication channels, access technologies (FDMA, CDMA, TDMA), channel assignment algorithms, user location and tracking, handoff, packet radio networks, ad-hoc networks, satellite networks, security and authentication issues, mobile IP, power control.
Prerequisite: 56:198:546 or equivalent.
|
56:198:551
Database Systems (3)
Relational database theory and practice, including database design. Database concepts, relational algebra, data integrity, query languages, and views. Introduction to object-oriented databases. Application project with a practical database management system.
Prerequisites: 50:198:113 or equivalent; and 50:640:237 or 50:198:171 or equivalent.
|
56:198:552
Advanced Database Systems (3)
Query processing, including indexing and hashing; query optimization; transaction management, including concurrency control and recovery; database architecture, including server and network systems. Project based on designing and implementing enterprise systems.
Prerequisite: 50:198:551 or equivalent.
|
56:198:556
Computer Graphics (3)
Graphics systems and imaging principles, graphics programming using packages like OpenGL, input devices and interactive techniques, animation techniques, geometric transformations and modeling in two and three dimensions, viewing in 2-D and 3-D, lighting and shading, fundamental graphics algorithms (such as clipping, hidden surface removal, etc.).
Prerequisite: 50:198:213 or equivalent.
|
56:198:557
Advanced Computer Graphics (3)
Advanced
topics in computer graphics with a focus on rendering (hidden surface
and visibility algorithms, material properties and reflection models,
techniques for global illumination calculations, including ray tracing
and radiosity algorithms) and modeling (methods for describing
geometric primitives such as implicit surfaces and parametric patches,
solid modeling, and constructive solid geometry).
Prerequisite: 56:198:556 or equivalent.
|
56:198:561
Optimization Methods (3)
Introduces various methods
based on linear programming to solve discrete optimization problems.
The topics covered include introduction to linear
programming (LP), network flows, and application of LP-based techniques
to solve various optimization problems.
|
56:198:562
Big Data Algorithms (3)
Study of algorithmic techniques and modeling frameworks that facilitate
the analysis of massively large amounts of data. Introduction to
information retrieval, streaming algorithms, and analysis of web searches
and crawls.
Prerequisite: 56:198:501 or equivalent.
|
56:198:564
Data Mining (3)
Introduction to major concepts, techniques, and algorithms in data
mining, machine learning, and analytics: classification, decision trees,
decision rules, regression, nearest neighbor, evaluation, data
preparation, clustering, associations, visualization, summarization and
deviation detection, applications in targeted marketing, and genomics.
Prerequisite: 56:198:500 or equivalent.
|
56:198:565
Numerical Methods (3)
Computational techniques for solving scientific problems: Precision,
IEEE floating point representation, interpolation, root finding,
numerical integration, numerical differentiation, approximation of
functions, functions minimization, numerical linear algebra, numerical
solutions of ordinary differential equations.
|
56:198:571
Algorithms (3)
Review of general tools and techniques in the design and analysis of algorithms and their proof of correctness. Selected topics from: graph algorithms, algebraic and geometric algorithms, randomized algorithms, and online algorithms.
Prerequisite: 50:198:371 or equivalent.
|
56:198:573
Computational Geometry (3)
Algorithms and data structures for geometric problems that arise in various applications such as computer graphics, CAD/CAM, robotics, and geographical information systems (GIS). Topics include point location, range searching, intersection, decomposition of polygons, convex hulls, Voronai diagrams, and line arrangements.
Prerequisite: 50:198:371 or equivalent.
|
56:198:575
Crytography and Computer Security (3)
Secret-key cryptography, public-key cryptography, key agreement, secret sharing, digital signatures, message and user authentication, one-way functions, key management; attacks; practical applications to computer and communications security.
Prerequisites: 50:198:113 or equivalent; and 50:640:237 or 50:198:171 or equivalent.
|
56:198:576
Introduction to the Theory of Computation (3)
Formal languages, automata and computability: regular languages and finite-state automata; context-free grammars and languages; pushdown automata; the Church-Turing thesis; Turing machines; decidability and undecidability.
Prerequisite: 50:640:237 or 50:198:171 or equivalent.
|
56:198:577
Computational Complexity Theory (3)
Fundamental mathematical concepts: models of computation, uncomputability, notions of space and time complexity. Complexity classes and reductions.
Prerequisite: 56:198:576 or equivalent.
|
56:198:578
Combinatorial Optimization (3)
Introduction to linear optimization and the theory of linear programming. Topics include the simplex method; duality; network flow problems; graph matching; integer programming; NP-completeness; and introduction to both LP-based and combinatorial techniques for designing approximation algorithms.
Prerequisite: 50:198:371 or equivalent.
|
56:198:582
Computational Modeling of Biological Systems (3)
Biology is entering a new era where detailed description and observation
are giving way to systems-level understanding and computer modeling.
This course introduces students to computer modeling of living cells,
focusing particularly on metabolic, regulatory, and signaling networks.
Specific topics include constraint-based modeling, properties of
stoichiometric matrices, flux-balance analysis, and motifs in
transcriptional networks. Knowledge of molecular biology is useful but
not required.
|
56:198:584
Mathematical Methods in Systems Biology (3)
Provides an introduction to computational and systems biology, focusing on advanced mathematical tools. In particular, ordinary and partial differential equations, control theory, and discrete mathematics (networks) will be used to address a wide set of biological and biomedical applications. The latter will range from classical prey-predator populations examples to cancer immuno and drug therapies, from evolutionary math to gene networks.
|
56:198:691,692
Special Topics in Computer Science (3,3)
In-depth study of areas not covered in regular courses. Topics vary from semester to semester.
Prerequisite: Permission of instructor.
|
56:198:693
Master's Project (3)
Open only to students pursuing the project option. Design, implementation, and demonstration of a significant software project. Project proposals must be approved by instructor. The project completion requires a report and a presentation.
Prerequisite: Permission of instructor.
|
56:198:694
Independent Study in Computer Science (1-3)
Designed to meet the needs of students who wish to conduct original research in computer science.
Prerequisite: Permission of instructor.
|
56:198:701,702
Research in Computer Science (3,3)
Open only to students pursuing the thesis option. This will involve two semesters' worth of substantial and independent research on a topic approved and supervised by a faculty member (the thesis adviser) who will work closely with the student. This research will be exposited in the student's M.S. thesis.
Prerequisite: Permission of thesis adviser and graduate director.
|