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
Data Structures and Algorithmic Problem-Solving in Python (3)
Introduction to algorithms, data structures, and algorithmic paradigms:
binary search trees, hashing, sorting, searching, shortest paths, and
dynamic programming.
Prerequisite: 56:198:500 or equivalent.
|
56:198:514
Artificial Intelligence (3)
The objective of this course is to become familiar with the fundamentals of Artificial Intelligence. This course will provide students with an understanding of main concepts of Artificial Intelligence (AI) needed for the implementation and performance of intelligent agents/programs and to understand their applications. It focuses on the theory and algorithms underlying AI, including heuristic approaches and advanced search, inference in first order logic, knowledge representation, probabilistic reasoning, and Bayesian belief networks.
Prerequisite: 56:198:501 or equivalent.
|
56:198:523
Software Engineering (3)
Principles and techniques for the design and construction of reliable, maintainable, and useful software systems. Software life cycle, requirements specifications, and verification and validation issues. Implementation strategies (e.g., top-down, bottom-up, teams), support for reuse, and performance improvement. A treatment of human factors and user interfaces included.
Prerequisite: 56:198:501 or equivalent.
|
56:198:541
Distributed and Cloud Computing (3)
This course introduces the concepts, models, implementations, and applications of cloud computing and distributed systems. Topics will include distributed architectures, cloud architectures, technologies, services, and security. The course will provide students hands-on experience implementing core cloud services and will allow for a more in-depth exploration with a significant semester project.
Prerequisite: 56:198:501 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: 56:198:501 or equivalent.
|
56:198:547
Network Security (3)
This course provides in-depth instruction on network security methods and technologies. Today, data is typically connected to networks, which then may be connected to the internet. Given the wide access that data may have as a result, it is critical that network security methods are used to limit access to legitimate users. This is accomplished through network design, access control policies, and network technology. This course will provide instruction on how these items are used to protect information. This includes the following topics: firewalls, intrusion detection and prevention, virtual private networks, proxies, remote access protections, data loss prevention systems, network and security management systems.
Prerequisite: 56:198:501 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.
Prerequisite: 56:198:501 or equivalent.
|
56:198:554
Machine Learning (3)
This course provides an overview of machine learning and data mining with a focus on the theory and algorithms underlying a range of tasks including data collection and mining, statistical learning theory and underlying probability theory, decision trees, supervised and unsupervised learning, classification, regression and clustering, deep learning, and the derivation practical solutions using predictive analytics. It will deal with machine learning applications in different fields such as bioinformatics and big data analysis.
Prerequisite: 56:198:501 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, and fundamental graphics algorithms (such as clipping, hidden surface removal, etc.).
Prerequisite: 56:198:501 or equivalent.
|
56:198:561
Optimization Methods (3)
This course introduces various methods based on linear programming to solve discrete optimization problems. The topics covered in the course will 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:567
Applied Probability (3)
An introduction to probability theory and the modeling and analysis of probabilistic systems with emphasis on applications in computer science, engineering, and data science. Probabilistic models, conditional probability. Discrete and continuous random variables. Expectation and conditional expectation. Limit Theorems. Bernoulli and Poisson processes. Markov chains. Bayesian estimation and hypothesis testing. Elements of statistical inference.
Prerequisite: 50:640:122.
|
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: 56:198:501 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, line arrangements, and Delaunay triangulations.
Prerequisite: 56:198:501 or equivalent.
|
56:198:575
Cryptography 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.
Prerequisite: 56:198:501 or equivalent.
|
56:198:576
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: Permission of instructor.
|
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: 56:198:501 or equivalent.
|
56:198:581
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.
Prerequisite: 56:198:501 or equivalent.
|
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:697
Computer Science Internship (3)
The practical application of computer science knowledge and skills through an approved internship in a sponsoring organization. Arrangements for the internship must be agreed upon by the sponsoring organization and approved by the department before the beginning of the semester. Students should consult the department for detailed instructions before registering for this course.
Prerequisite: Approval by department.
|
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.
Prerequisites: Permission of thesis adviser and graduate director.
|