Updated on May 5, 2023
CS3000/4000 Elective Courses
This course is an exploration of mobile application development. Students will design, build, and potentially publish several Android or iOS applications over the course of the semester. Topics include a high-level overview of mobile platforms, history of mobile devices, mobile economics, ethical advertising, Firebase, maps, GPS, device to device communication, mobile sensors, advanced UI, animation, cross-platform development, and publishing mobile applications.
Scientific Computing (SciComp) is the collection of algorithms, tools, and theories required to solve numerical problems in science, engineering, mathematics, economics, etc. By the end of this course, students will have mastered or become familiar with such topics as linear systems, LU decomposition, linear programming, simplex, differentiation engines, Newton-Raphson algorithm, central divided difference, integration approximation, periodic function approximation with Fourier series, congruence systems, Richardson's extrapolation, Romberg integration, decision trees, Huffman codes.
This course is intended to develop the student’s understanding and use of the C++ programming language, with a particular focus on the latest C++ standards. It focuses on C++ as a systems language and emphasizes application/computational performance. Topics include history of C++, C++ ecosystem (e.g., CMake, gtest), dynamic memory, object oriented C++, functional C++, generic programming, and miscellaneous subjects such as containers, date and time handling, random numbers, and algorithms.
Information retrieval is the process through which a computer system can respond to a user's query for text-based information on a specific topic. This course studies the basic and advanced techniques for building text-based information systems. Topics include text data preprocessing, boolean and vector-space retrieval model, text indexing, web search (crawling, link analysis, and storage), text classification and clustering, recommender systems, and question answering.
This course introduces the concepts of cyber security, vulnerabilities, and the mechanisms to secure a system. The course covers the basics of a variety of topics including cryptography, web security, authentication, network security, system security, and software security, where students gain a primary understanding of the security vulnerabilities and protection techniques.
In this course students learn to solve problems that are common in web-based software using modern tools and practices. Students will develop full-stack web applications using popular frameworks in Typescript and Javascript and will acquire skills that prepare them to enter the workforce as full-time web developers. Topics include: user authentication / authorization, databases, database migrations, ORMs, REST, Model-View-Controller, module bundling, transpilation, Typescript, ReactJS, single-page vs multi-page applications, web sockets, Firebase (and other BASS platforms), CSS, geolocation / maps, and web workers.
CS5000/6000 Elective Courses
Theory of Computability (TOC) is the mathematical study of models of computation. Given a problem, a TOC researcher is interested whether the problem is solvable in a given model of computation and, all other things being equal, leaves speed and optimization to algorithmics. By the end of this course, students will have mastered or become familiar with such topics as deterministic and non-deterministic finite-state automata; the Myhill-Nerode theorem and automata minimization, the pumping lemmas for regular and context-free languages, context- free grammars, stack machines, the Cocke-Younger-Kasami algorithm, Church’s thesis, Rice's theorem, Turing machines, primitive recursive, partially computable, and computable functions, Gödel's numbers, Chomsky’s hierarchy, public-key cryptography.
4 credits
It will provide an introduction to High-Performance Computing (HPC), which is the practice of leveraging parallel computing power, from computer clusters and supercomputers, to solve complex computational problems faster. It will give students hands-on experiences using openMP, MPI and CUDA to write highly optimized code for modern multi-core processors and GPUs and computing clusters. The course explores concepts and challenges of performance scalability portability, and energy efficiency of HPC applications and systems, parallel hardware, parallel programming models, how to run on an HPC system, shared memory programming (Pthreads, OpenMP), performance analysis, distributed programming (MPI), load balancing, GPU programming, parallel and distributed applications.
This course introduces principles, methods and techniques for visual analysis of scientific data. Students will learn how to make effective visualization of scalar, vector and tensor field data using state-of-the-art techniques including those for surface and volume geometry representation. It is complementary to CS5820 Data Visualization, which focuses on visualization related to tabular data (e.g., graphs, text, and maps). Topics will include: scientific visualization tools, visualization of 2D, 3D, vector and tensor fields and in situ analytics.
(Regularly offered in both semesters)
This course provides a study of algorithms and their analysis with emphasis on mathematically analyzing algorithms for their average complexity; standard algorithms in sorting, graphs, mathematics, and heuristic optimization; deriving upper and lower bounds of computation and using them to inform algorithm design. Students will gain an understanding of how to apply approximate and heuristic algorithm solutions to NP problems, and problem reduction as a technique for computing lower-bounds and solving problems. Topics may include design by induction, algorithms involving sequences and sets, graph algorithms, geometric algorithms, algebraic algorithms, reductions, NP-completeness, and parallel algorithms.
This course is designed for students to develop end-to-end tools for decision making under uncertainty. Key concepts will cover detecting uncertainty, working with little to no data, rapid adaption, and decision making algorithms in multiple fields (robotics, fintech, economics, sociology). Course material will be applied in real-world projects.
This course provides a broad introduction to state-of-the-art research on data mining, machine learning models, and statistical pattern recognition on time series data. The goal is to learn how to apply, inspect, and evaluate different mining techniques on time series data using Python. Topics covered include time-series representation learning, Fourier and Wavelet transform dimensionality reductions, similarity search, classification, visualization, and frequent patterns mining. Additional coursework is required for students enrolled in the graduate-level course.
4 credits
Students in this course will study the theory of a computerized system consisting of multiple interacting autonomous agents. Multi-agent systems can solve problems that are difficult or impossible for an individual agent to solve. Topics will include multi-agent interactions, normal form games, extensive form games, voting models, coalitional game theory, auctions, bargaining, predicting human-decision making. This is a TEAMWORK (T) course.
Instructor: Dr. Mahdi Nasrullah Al-Ameen (Regularly offered in Spring semesters)
This course is designed to educate students about the significance, and process of including end-users in the technology design loop. The students will learn about the principles of human-computer interaction along with the methods of conducting human-subject studies to identify user needs and experiences with technology use. They will also learn about the outcome of recent research in these areas.
Pre-requisite: None (This course could be of interest to non-CS majors, too).
1 credit
This course covers general cloud-computing concepts, including public-cloud infrastructure, security, economic factors, networking fundamentals, compute, storage, and database services, principles and practices of architectural design, application monitoring, and scaling. Students will gain hands-on experience working with a variety of cloud services.
2 credits
This course deals with the development of secure, available, scalable, reliable, and durable software applications in a cloud environment. It covers the implementation of cloud- based software, setup of a development environment, essential security concepts (the shared responsibility model, authentication, and authorization), and cloud-based services in distributed applications (object storage, non-relational databases, distributed caching, containers, queuing, notification, serverless functions, and workflow coordination). Students will gain hands-on experience programming with cloud-based software, deeper exploration of security for cloud- based distributed applications, and exposure to DevOps concepts.
4 credits
This course is an introduction to key design principles and techniques for constructing compilers. The major goal of this course is to understand the components, algorithms, and theories behind compilers, including lexical analysis, syntax analysis, semantic analysis, intermediate code generation, target code generation, and some of the principles of optimization. Topics include lexical analysis, syntax analysis, semantic analysis, intermediate code generation, run-time environments, target code generation, and optimization.
4 credits
This course explores technical game development so that students gain the ability to perform technical game design and technical game development. The course emphasizes integration of multiple computer science topics within a single application and includes a team project to develop a computer-based game. Topics include graphics, input handling, collision detection, particle systems, entity systems/frameworks, multi-threading, multi-core, networking, synchronization, optimization, and scripting. This is a TEAMWORK (T) course.
Instructor: Dr. Isaac Cho (Regularly offered in Spring semesters)
This course is an introduction to the core and state-of-art technologies and techniques of Virtual Reality. Topics covered include head-tracked and head-mounted displays, 3D tracking, 3D user interfaces and interactions, VR applications, human perception, cognition and factors, evaluation of VR, and other VR-related topics. Students will develop a VR application with off-the-shelf VR devices. Each student will have Meta Quest 2 for class activities. They will be allowed to use the VR/AR equipment of the VizUS lab (Dr. Isaac Cho's VR lab) for immersive experiences and a final project.
4 credits
Explore the field of robotics through the lens of decision-making algorithms to understand critical aspects of autonomous systems from a machine learning and data science perspective, with emphasis on sensing, high-level objective planning, motion planning, and human interaction. Learn the latest technologies developed in the field through projects in simulation and hardware and solve problems for search-and-rescue missions. Topics include motion planning, unstructured environments, unique optimization, human awareness, overall objective planning, constrained motion, and terrain understanding.
4 credits
AI aims to study, design, and build intelligent systems. What computational models should we use to model natural intelligence? What aspects of natural intelligence, if any, should we model, to begin with? We study and build AI systems to shed light on how natural intelligence deals with problems in data-driven modeling, natural language processing, and planning and problem solving.
Data science is an interdisciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from structural and unstructured data. The goal of this course is for students to learn how to use deep learning for solving real-world data analysis problems, especially in the fields of computer vision and natural language processing. Topics include linear regression, logistic regression, feed-forward neural network, convolutional neural network, recurrent neural network, and transformers.
This course will provide an introduction to theories and techniques of machine intelligence, with emphasis on image processing, pattern recognition, and computer vision. It will give students hands-on experiences using Matlab to process digital images and analyze the images. The topics include enhancement, morphology, segmentation, object representation and recognition, neural network, deep convolutional neural network, principal components analysis, K-means algorithm, and hierarchical clustering.
This course introduces topics in computing education research, including learning science, cognitive science, motivation and affect, statistical methods, qualitative methods, pedagogy, assessment, equity and diversity, programming paradigms, and computing for other disciplines.
Students will develop a conceptual model of a database; become familiar with a database management system; and build and query a database. The course emphasizes introduction of database systems, database design/ER model, the relational model, logical design, physical design, and applications. Topics include conceptual design, ER model, relational model of data, SQL, query optimization, noSQL, data mining, and normalization.
This course is an introduction to key design principles and techniques for interactively visualizing data. Major goals of this course are to understand how visual representations can help in the analysis and understanding of complex data, how to design effective visualizations, and how to create your own interactive visualizations using modern web-based frameworks. Topics include perception and cognition, color, data types and dataset types, marks and channels, interaction, and views.
This course is a practical, project-based introduction to production data science where students will learn data science concepts and techniques in a very applied setting. Students will examine many, many different datasets and work with them to accomplish different tasks of analysis as computer scientists and domain scientists work together to solve problems. Topics covered include bar charts, line charts, scatterplots, statistics, getting and cleaning data, k-nearest neighbors, Naive Bayes classifiers, linear regression, logistic regression, support vector machines, decision trees, and neural networks.
This course introduces the background, techniques, and concepts in social network analysis, emphasizing graph theory, online social networks, and network analysis techniques. The course will help students apply and hone their data analysis skills on social media data to find meaningful patterns. The course's research-driven nature will improve students' critical thinking and help them gain research experiences. The course will give students hands-on experiences in using programming languages such as Python and tools such as Networkx to process social networks. The course attempts to help students answer the following essential questions. How to collect data from a social media platform (e.g., Twitter)? Who are the most important people (actors) in a social network? How does information diffuse throughout a social network? How to identify communities in a social network? And How do we measure assortativity or social similarity? Some topics include graph essentials, network measures, network models, community analysis, information diffusion, and influence and homophily. The coursework includes assignments, a mid-term exam, and a final project.
This course is intended for senior undergraduate students and graduate students interested in gaining hands-on experience applying computational techniques to solve big data analysis problems. The course topics are intentionally broad and include various data analysis skills. This way, students will become familiar with the necessary tools and understand how to perform all steps of a data analysis project. Some topics include data representation, data collection, data storage, data preprocessing, data summarization, predictive modeling, clustering, and anomaly detection. This course will give students hands-on experience using programming languages such as Python and libraries like Panda and scikit-learn to perform various data analysis practices. The coursework includes assignments, a mid-term exam, and a final project.
This course covers the application of AI techniques to the many challenges of supporting human learning. Drawing from a variety of learning contexts and AI approaches, topics will include cognitive modeling, learner modeling, intelligent tutoring, adaptive educational systems, and natural language processing for automated feedback. The course will also include a basic introduction to the learning sciences that will provide a foundation for the effective design and evaluation of intelligent learning environments. Coursework will involve using existing AI tools for prototype development, development of computational models of assessment and feedback, and completion of a course project of the student's own design.
Dr. Shah Muhammad Hamdi (Regularly offered in Spring semesters)
The applications of deep learning methods are found in numerous tasks of artificial intelligence, ranging from natural language understanding, and computer vision, to graph representation learning, and generative modeling. In this course, students will learn basic concepts of deep learning models, and their applications in solving various data science tasks. It will provide students hands-on experiences using deep learning frameworks on real-life datasets. The topics include deep feed-forward networks, regularization, optimization, hyperparameter tuning, convolutional neural networks, sequence models, generative models, and graph neural networks.
This course is intended for senior undergraduate students and graduate students. It gives students hands-on experience in socket programming using C & Python and a deeper exploration of various network attacks. The concepts of computer networks, mobile networks, and network security are introduced, which cover a variety of topics, including Application Layer, Transport Layer, Network Layer, Link Layer, LAN (Ethernet, Wi-Fi, etc.), cellular 4G/LTE & 5G networks, and network security.
Dr. Shah Muhammad Hamdi (Regularly offered in Fall semesters)
Machine learning applications on real-life graphs facilitate understanding the network behavior of different domains such as social sciences (social networks), linguistics (word co-occurrence networks), biology (protein-protein interaction networks), chemistry (molecular networks), neuroscience (brain networks), and so on. This course covers graph terminology, representation, and techniques to extract patterns from graph data. The topics include random graph generation, link analysis, community detection, frequent subgraph mining, graph classification, influence maximization, graph representation learning, graph neural networks, and deep graph generation.
This course focuses on the human factors of privacy and security, with a goal of understanding user’s privacy perceptions, security behavior, and how to design and build secure systems with a human-centric focus. This interdisciplinary course is designed to introduce students to the basic principles of human-computer interaction, and apply these insights to the design of secure and privacy-protective systems. The topics in this course include, but not limited to human-centric design in user authentication and security warning, understanding user’s security mental model, privacy visualization in social media, smartphone, and IoT environment, and exploring usable solutions to the security requirements of the people with special needs (e.g., older adults, people with visual impairments, etc.).
Students in this course will study a new method and a novel approach for dealing with uncertainties in thinking, problem solving, learning and reasoning. Topics may include classical sets and fuzzy sets; classical relations and fuzzy relations; membership functions; defuzzification; fuzzy operations and extension principle; and classical logic and fuzzy logic. Other topics may include fuzzy expert systems; fuzzy decision making; fuzzy pattern recognition; fuzzy control; and fuzzy measures.
Data mining aims at finding useful patterns in large data sets. This course will introduce basic concepts and algorithms of data mining on various types of data. The course topics include frequent itemset mining, finding similar items, classification, clustering, data stream mining, dimensionality reduction, recommender systems, PageRank, and computational advertising.
This course provides a deep dive into advanced topics in mining texts, graphs, time-series data, vector datasets, and frequent itemset and association rules. The lectures will provide students with a sufficient foundation to apply data mining techniques on massive real-life data repositories using Python. Students will gain hands-on experience in the chosen aspect of the data mining area through the completion of a major data mining project. Topics covered include Node2Vec/Word2Vec models for text and graph embedding, vector space models, time series classifiers, representation learning, data reduction, and association rule mining.
This course is an advanced study of non-relational data models, the internals of a database management system, and database frontiers. Students will learn new ways to query and model data, as well as become familiar with the expanding role of database technology. Topics may include models and query languages, concurrency control, recovery, and security.
This is an advanced study of image processing, pattern recognition, and computer vision issues. Students will learn about new developments in image representation, gray level images and color images, thresholding, segmentation, curve detection, visual perception, and statistical and syntactical pattern classification theories and applications. Topics may include feature and primitive selection; neural networks, fuzzy logic and genetic algorithms for CVPRIP; supervised and unsupervised learning; SVM for CVPRIP; and real application analysis and design.
Recommended Electives for Careers
- CS 3430 – Scientific Computing with Python
- CS 5080 – Time Series Data Mining
- CS 5040 – Scientific Visualization
- CS 5820 – Data Science – Data Visualization
- CS 5840 – Social Network Analysis
- CS 5850 – Introduction to Data Analysis
- CS 5665 – Introduction to Data Science
- CS 5830 – Data Science in Practice
- CS 4320 – Introduction to Machine Learning
- CS 5000 – Theory of Computability
- CS 5060 – Decision Making: Algorithms Under Uncertainty
- CS 5510 – Robot Intelligence
- CS 5600 – Intelligent Systems
- CS 5665 – Introduction to Data Science
- CS 5680 – Computer Vision: Foundations & Applications
- CS 3460 – C++
- CS 4460 – Introduction to Cybersecurity
- CS 6460 – Usable Privacy and Security
- CS 3460 – C++
- CS 5050 – Advanced Algorithms
- CS 5300 – Compiler Constructions
- CS 5400 – Computer Graphics I (taught infrequently)
- CS 5600 – Intelligent Systems
- CS 5410 – Game Development
- CS 4460 – Introduction to Cybersecurity
- CS 5000 – Theory of Computability
- CS 5050 – Advanced Algorithms
- CS 5110 – MultiAgent Systems
- CS 5300 – Compiler Construction
- CS 5700 – Object-Oriented Software Development
- CS 5800 – Introduction to Database Systems
- CS 3200 – Mobile Application Development
- CS 4460 – Introduction to Cybersecurity
- CS 4610 - Modern Web Development
- CS 5140 – Human Factors in Computing
- CS 5800 – Introduction to Database Systems
- CS 3460 – C++
- CS 5030 – High-Performance Computing
- CS 5250 – Introduction to Cloud Computing
- CS 5260 – Developing Distributed Software Applications Using Cloud Services