>>
Web site design from a technical viewpoint. Covers applicable network protocols; HTML, CSS, XML, and JavaScript; Web standards and cross-browser compatibility issues; code development and debugging techniques; server-side scripting; database-driven Web applications; navigation and usability…
Full cycle of a software system development effort, including requirements definition, system analysis, design, implementation, and testing. Special emphasis is placed on system analysis and design. The design phase includes development of a user interface. A large term project incorporates the…
Introduction to software development for mobile devices, such as smartphones and tablets. Topics include life cycle of mobile applications, mobile UI design, views, widgets, location and maps, local data handling, and interaction with Web services and databases. Students design, implement, and…
An introduction to the application of programming methodology to the production of computer and video games, including user education, algorithms, display methods, and sound. This course will begin with two-dimensional games using available standard program libraries.
Not offered on a…
GPUs are high-performance many-core processors. Students will learn massively parallel programming using CUDA C and develop parallel algorithms to solve real problems. Topics include parallel computing, GPUs architecture, threads, performance issues, and floating point representation.
Not…
Numerical methods and computing. Topics include: computer arithmetic; numerical solutions of nonlinear equations; polynomial interpolation; numerical differentiation and integration; numerical solutions of systems of linear equations, initial and boundary value problems, systems of ordinary…
Computationally oriented, covering a wide range of topics that are necessary for numerical simulation in science and engineering. Sequential and parallel numerical methods will be introduced. Available symbolic and numerical software packages (e.g., Matlab, Maple and MPI) and visualization tools…
An introduction to implementing computational-based trading strategies from information gathering to market ordering and trading, including probabilistic machine-learning approaches to situational analysis and to trading decisions. We consider approaches like linear regression, decision trees, K…
The modeling and simulation of existing or planned systems for the purpose of studying their correctness, reliability, or performance. Topics to be addressed include discrete-event simulation, continuous simulation, analysis and modeling methodologies, animation, virtual reality, and Web-based…
Basic concepts of computer security and the theory and current practices of authentication, authorization, and privacy mechanisms in modern operating systems and networks.
Not offered on a regular basis.
Examination of security and privacy issues related to protecting personal data in various environments (for example: cloud computing, smart grid, and internet of things) cover the fundamentals and principles of data security and privacy, and computational and statistical techniques for…
The principles and practice of computer forensics. Topics include computer crime, software vulnerabilities, intellectual property, privacy issues, countermeasures, methods and standards for extraction, preservation, and deposition of legal evidence in a court of law.
The application of artificial intelligence methodologies and algorithms to problems involving the world wide web. Introduction to problem-solving, knowledge representation, learning, and reasoning techniques and exploration of how they are applied to enable information provisioning, social…
Provides intermediate to advanced understanding of the use of Internet, World Wide Web, and network computing (including Java) technologies for management (search, access, integration, presentation) of multimedia information. Topics discussed include key techniques, tools and technologies for…
An introduction to advanced analytics techniques in data science, including random forests, semi-supervised learning, spectral analytics, randomized algorithms, and just-in-time compilers. Distributed and out-of-core processing.
Offered every year.
The theory and practice of database management. Topics to be covered include efficient file access techniques, the relational data model as well as other data models, query languages, database design using entity-relationship diagrams and normalization theory, query optimization, and…
Introduction to the life cycle of data starting from data collection to cleaning, management, storage, sorting, provenance, visualization, and analysis. A rigorous overview of methods for text mining, image processing, linear models, and scientific computing. Core concepts in supervised and…
A broad introduction to data mining methods and an exploration of research problems in data mining and its applications in complex real-world domains. Approaches include association and classification rule learning, tree learning, neural network and Bayesian methods, support vector machines,…
Algorithms, covering basic analysis techniques, basic design techniques (divide-and-conquer, dynamic programming, greedy), basic and advanced graph algorithms, and NP -completeness theory.
This is a graduate-level course on algorithms for finding approximate solutions to NP-complete problems. It introduces the class NP and explores the importance of the NP-complete problems. Approaches for finding approximate.
Application of discrete algorithms to computational problems in molecular biology. Topics are drawn from such areas as classical sequence comparison, multiple sequence alignment, DNA sequence assembly, DNA physical mapping, genome rearrangement, evolutionary tree construction, and protein…
Several modern programming languages and the paradigm -- procedural programming, object-oriented programming, functional programming, and logic programming -- that each strives to accommodate. Projects involve at least three languages.
The functional programming paradigm: functions and types, type inference and polymorphism, higher order functions and recursion, evaluation strategies, abstract data types and modules, lists, trees, and lazy data structures, reasoning about functional programs.
Not offered on a regular…
Introduction to hardware and software involved in autonomous mobile robotics. Course content emphasizes the mathematical and statistical models related to robotic perception and motion, associated algorithms, and their programming in computer-simulated environments. Course structure involves…
Programming in LISP and PROLOG, with emphasis on artificial intelligence techniques. Other languages used for artificial intelligence work will be presented more briefly.
An introduction to the fundamental concepts in computer science, including algorithms and logic, and the theoretical foundations in philosophy that define the field of artificial intelligence.
The artificial intelligence approach to modeling cognitive processes. Topics include an…
An in-depth introduction to evolutionary computation methods and an exploration of research problems in evolutionary computation and its applications which may lead to work on a project or a dissertation.
Design and implementation of compilers for high-level programming languages. Topics include all phases of a typical compiler, including scanning, parsing, semantic analysis, intermediate code generation, code optimization, and code generation. Students design and develop a compiler for a small…
Reinforcement learning studies methods for learning to act optimally based on the reward or punishment over time. Such machine learning is useful when we wish to learn high-quality behavior under uncertainty and the only data are reward signals. Introduces classical and modern methods in single…
The fundamental limitations on mechanized computation. In the first part of the course, the emphasis is on possible versus impossible computations. Three classes of languages are considered: regular, context-free, and recursively enumerable. In the second part of the course the emphasis shifts…
An introduction to quantum computation.
In recent years, computer scientists and physicists have begun to discuss the possibility of a computer whose hardware utilizes quantum phenomena. There has developed a notion of a quantum algorithm, and examples are known of computational problems…
Basic counting principles: permutations, combinations, probability, occupancy problems, and binomial coefficients. More sophisticated methods include generating functions, recurrence relations, inclusion/exclusion principle, and the pigeonhole principle. Additional topics include asymptotic…
Elementary theory of graphs and digraphs. Topics include connectivity, reconstruction, trees, Euler's problem, hamiltonicity, network flows, planarity, node and edge colorings, tournaments, matchings, and extremal graphs. A number of algorithms and applications are included.
Offered…
Design and analysis of the structure and function of modern computing systems. Topics studied include combinational and sequential logic, number systems and computer arithmetic, hardware design and organization of CPU, I/O systems and memory systems, instruction set and assembly language design…
Coverage of the key concepts in modern operating systems. Specific topics include process management, synchronization mechanisms, scheduling strategies, deadlock detection/avoidance, memory management, file systems, protection and security, and distributed systems. Concepts will be reinforced…
Basic concepts of real-time systems with an emphasis on scheduling issues. Consideration of both offline and online scheduling. Online schedules will include static and dynamic priority systems, with and without allowing preemption. Also, consideration of resource sharing and multiprocessor…
In-depth coverage of computer networks, including: digital data transmission and encoding, layered protocol models, Internet protocol, Internet client-server software, and network design methodology.
Introduces the technologies required to develop mobile and ubiquitous computing applications, including communication protocols, naming and location management, replication and consistency management, security and privacy, content adaptation, and battery power management.
The fundamental concepts in distributed computing and the practical techniques for building distributed systems. Topics include distributed computing models, naming, synchronization, replication and consistency, fault tolerance, and security. Widely deployed distributed systems are used as case…
Introduction to cloud computing for undergraduate and graduate students. Topics include virtualization, data centers, virtual machines, cloud service models, public vs. private vs. hybrid clouds, open stack, container and orchestration infrastructure, cloud storage, mobile cloud, IoT, and big…
Issues in the design, development, and evaluation of user interfaces for computer systems. Concepts in human factors, usability, and interface design, and the effects of human capabilities and limitations on interaction with computer systems.
Principles of two-dimensional and three-dimensional interactive graphics. Principles of scan conversion algorithms for two-dimensional and three-dimensional graphics primitives; image data structures and modeling techniques; visual realism, data storage/retrieval, compression, parallel computing…
Introduction to the technology and techniques used in virtual environments (also known as virtual reality). Students will gain knowledge about the latest innovations in this field, will understand the important research issues and methodologies for VEs, and will have the opportunity to gain…
Brings together computer science, machine learning, and computer vision analysis techniques. Introduces basic programming concepts within the context of scientific discovery and applying those concepts to current problems in biology using the Python ecosystem.
Introduction to signal processing. Students will learn basic concepts, algorithms, and software tools for multidimensional signal representation, processing and analysis. 1-D, 2-D, 3-D, and 4-D signal processing techniques and applications will be discussed.
Not offered on a regular basis…
This course introduces standard approaches to biomedical analysis, including basic concepts of biomedical imaging, basic algorithms, principles of software systems, and their applications. Biomedical analysis software tools will be used in hands-on projects.
Various advanced topics in computer science.
Fundamentals of engineering design with emphasis toward integrating engineering science and computer science knowledge in team projects. Problem selection and application of design principles will be stressed.
Content will vary in response to the interests, needs, and capability of the students and faculty involved. Individual, guided study in computer science.
Required Forms: Independent Study/Internship Form
Research while enrolled for a master's degree under the direction of faculty members.
Advanced supervised experience in an applied setting. This course may not be used to satisfy a student's approved program of study.
Internship in a professional setting allowing the student to integrate his/her educational experience with real-world situations in software development, database technology, hardware design, networks, etc.
Algorithms, programs, and computing systems. Topics studied include: fundamental techniques of program development and supportive software tools; and programming projects and applications in a structured computer language. Hands-on experience using microcomputers.
Preparation of a technical report to satisfy requirements for the MAMS degree.
Applied research project under the direction of the major professor for the Computer Science Non-thesis MS degree. As part of the requirements, a comprehensive report must be prepared detailing the student's procedures and findings regarding the completed project work.
Required Forms:…
Thesis writing under the direction of the major professor.
Various advanced and current topics in computer science.
Theory and practice of knowledge based system construction with particular emphasis on rule-based expert systems. Topics include KBS fundamentals, knowledge representation, knowledge base construction, knowledge integration in databases, inference engines, reasoning from incomplete or uncertain…
Analysis of advanced methods in software engineering. Emphasis is placed on formal specification methods, advanced software testing, software reuse, distributed software design, and communication protocol specification. Studies include advanced software development tools and systems.
Topics include computer architectures, interconnection networks, basic concepts in parallel computing, parallel algorithms, matrix multiplications, solving systems of equations, parallel direct and iterative methods, programming on different parallel architectures, and applications.
Advanced numerical methods for solving problems in science and engineering. Computationally-oriented course guiding students by modeling, choosing appropriate numerical methods, implementing the methods and analyzing the numerical results by visualization tools. Topics include computer…
This course is an introduction to the field of simulation, specifically we will focus on parallel and distributed simulation (pads). We will cover the foundational algorithms and techniques that have been developed over the last 25 years up to and including the current state of the art. Topics…
Exploration of both the foundation and recent advances in software security and cyber forensics. Topics will include software vulnerability analysis, advanced attack and defense techniques, cybercrime investigation and forensics, and security and forensics in different platforms (e.g., mobile,…
Our core software stacks are built upon unsafe language (e.g. C/C++). However, with the progress of safe languages, such as Rust and Go, industries are rewriting legacy codes to make our systems safer. In this course, students will learn about security concerns related to unsafe language and…
Recent advances in computer networks and system security. Fast and secure network systems, secure storage systems, high performance intrusion detection systems, and efficient anti-abuse systems.
This is an advanced course on computer and network security. The course will mainly focus on reading and analyzing recent top- tier research publications in the field of computer security and privacy and on the research and development of systems that can enforce security and privacy in the real…
An introduction to technologies that support building trustworthy machine learning systems. Topics include, but are not limited to, adversarial machine learning, privacy-preserving machine learning, transparency in machine learning, and fairness of machine learning.
Technical information management aspects of enterprise integration using recent advances in workflow management, database management, distributed systems, and information systems areas of computer science. Topics include federated/multidatabase architectures and systems for integration of…
Advanced data science techniques for analyzing large-scale data in distributed environments. Students will develop scalable algorithms in frameworks such as Spark and Flink. This course is team-based, involving several mini-projects over the course of the semester with a competition as the final…
Advanced study of database systems. The course focuses on concepts, algorithms and technologies for relational, object-oriented and distributed database systems. Related technologies such as data warehouses and repositories will also be covered.
Advanced topics in information systems and databases. The two major issues dealt with are: (1) information integration and interoperability, and (2) novel database technologies. The first addresses the integration of autonomous and heterogeneous resources managing structured, semi-structured,…
This course investigates data structures, methods, techniques, and theories for algorithm analysis and design. Topics include: advanced data structures and algorithms for graph, string, geometric, and operations research problems; algorithms on parallel computational models; and parameterized,…
This is primarily a research-oriented and seminar-style course covering topics of robotics in field and service industries, urban search and rescue, and applications in nuclear environments and logistics. It enables students to understand, devise, and solve problems in advanced robotics…
This is primarily a research oriented, seminar-style course covering the topics of control, communication, cooperation, and coordination aspects in multi-robot systems. It enables students to understand, devise, and solve problems in multi-robot systems and will include project-based assignments…
Human language from a computational point of view; algorithms and techniques for computer understanding of human-language input.
Advanced topics in theoretical computer science. The selection of topics varies from year to year. Areas may include, but are not limited to, denotational semantics, complexity theory, recursion theory, and discrete algorithms.
The selection of topics varies from year to year. Students will make presentations based on journal articles or original research.
Discussion of contemporary topics in quantum computing and quantum information.
Theoretical foundations of automated reasoning and logic programming. Topics covered include propositional logic, predicate logic, first-order models, resolution principles, logic programming paradigms, nonmonotonic reasoning.
Advanced and high-performance computer architecture. Topics covered include hierarchical memory design, cache memory design, pipelining, vector processing and parallel processing. Case studies of vector processors and multi-processor architectures: shared memory, distributed memory, data…
Software systems geared at supporting parallel and distributed computing. Programming language support will focus on simple and efficient ways to express parallel programs. Compiler and operating system support will focus on new optimizations to make parallel programs execute more efficiently.…
Advanced topics in real-time systems with an emphasis on scheduling issues. Topics will be different each semester. Possible topics include: multiprocessor scheduling, power-aware scheduling, application-specific scheduling (e.g., multimedia scheduling issues).
The design and implementation of a wide class of distributed systems. The selection of topics will vary from year to year. Topics may include, but are not limited to, distributed file systems, peer-to-peer systems, distributed spam processing, content delivery networks, and security and privacy…
Modern computing applications require storage, management, and processing of petabytes of data. The data is not only extremely diverse, ranging from unstructured text and relational tables to complex graphs, but it is also dynamic. This course focuses on developing scalable architectures,…
This advanced course in cloud computing investigates the research that leads to the creation of “clouds” and includes in-depth discussion for new research that will soon be reflected in real- world clouds. Topics include cloud infrastructure, microservices, cloud functions, cloud-based large-…
Image processing and computer graphics. Topics include: image representation, restoration, transformation, classification, compression, enhancement, segmentation, image filter, design, histogram techniques, sampling and quantization, Fast Fourier Transform, image data structures, parallel/…
Low-level and high-level vision including edge detection, connected component labeling, boundary detection, segmentation, stereopsis, motion analysis, and object recognition. Knowledge representation, knowledge retrieval and reasoning techniques in computer vision. Parallel computing, parallel…
Gain in-depth understanding, knowledge, and the ability to apply cutting-edge methods to process and quantitatively analyze images. This class presents modern image analysis tools, including wavelets, adaptive filters, active contours, and fractals. An important aspect is the design of…
Introduction to advanced approaches to, and applications of, biomedical image analysis, including imaging biomarker discovery, computer-aided diagnosis, computer-aided follow-up, image-guided therapy, molecular imaging, functional imaging, and translational imaging. Advanced applications of…
This course introduces advanced topics and applications of biomedical informatics, including health informatics systems, imaging informatics systems, computer-aided diagnosis, computer-aided follow-up, and translational biomedical informatics systems. Advanced applications of state-of-the-art…
Choosing optimally among different lines of actions is a key aspect of autonomy in artificial agents. The process by which an agent arrives at this choice is complex, particularly in environments that are noisy and/or shared with other agents. This course will focus on how to make optimal and…
Programs that solve complex problems in a particular domain, typically independent of knowledge used to direct the search for an optimal solution. Approaches include simulated annealing, genetic algorithms, neural networks.
Advanced representation learning algorithms in machine learning, from the traditional subspace learning models to the recent deep representation learning models. Applications in the fields of computer vision, data mining, and natural language processing will be covered.
An in-depth introduction to machine learning methods and an exploration of research problems in machine learning and its applications which may lead to work on a project or a dissertation.
Introduction of optimization algorithms suitable for solving large- scale problems, with a focus on exploring recent advances in the context of machine learning. Students will learn several algorithms for solving smooth and non-smooth problems, compare the efficacy of those methods, and discuss…
Advanced topics in data analysis, with an emphasis on statistical learning and related optimization problems. The applications include regression, classification, and other tasks in image analysis. The lectures will be based on books and articles in the field of computer vision and medical image…
An introduction to the privacy preservation problems, as well as algorithmic and statistical techniques for data privacy, in modern data analysis, such as machine learning and data mining. Approaches include randomized algorithms, synthetic data generation, stability analysis, and so on.
…
Introduction to security problems associated with the emerging Internet of Things (IoT) technologies, including privacy disclosure and data manipulation. Topics studied include architectural differences leading to such issues, how adversaries launch attacks by either exploiting software…
Weekly research seminar. Students must attend and give at least one presentation at the seminar.
Research while enrolled for a doctoral degree under the direction of faculty members.
Dissertation writing under the direction of the major professor.
See if and when courses are offered in a given semester via our downloadable course schedule.
Spring 2025
Fall 2024
Spring 2024
Fall 2023
We appreciate your financial support. Your gift is important to us and helps support critical opportunities for students and faculty alike, including lectures, travel support, and any number of educational events that augment the classroom experience. Click here to learn more about giving.
Every dollar given has a direct impact upon our students and faculty.