Updated on April 30, 2024
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.
This course offers a deep dive into the practical applications of machine learning. Students will learn how to effectively clean and preprocess data, extract and select impactful features, and apply both supervised and unsupervised machine learning techniques. The goal is to develop proficiency in using popular machine learning libraries, enhancing hands-on skills on solving real-world problems.
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/6820 (Interactive Information Visualization for Data Science). Topics will include: scientific visualization tools, visualization of 2D, 3D, scalar, vector, and tensor fields.
(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.
In this TEAMWORK based course, you will work with classmates to tackle the unique challenges that arise when algorithms meet unpredictable situations. Your team will collaborate to tackle challenges across various fields like robotics, fintech, and economics, developing algorithms that adapt to unpredictability. This includes a special focus on reinforcement learning, where you’ll enhance algorithms that improve with experience, even under uncertain conditions. You'll learn to identify uncertainty, design robust solutions with limited data, and balance algorithm design with practical deployment through team-focused projects. By working closely with your peers, you’ll not only gain a deeper understanding of algorithms under uncertainty but also develop essential teamwork and communication skills that are vital in any career.
Data mining aims at finding useful patterns in large data sets. This course will discuss data mining algorithms for analyzing large amounts of data, including association rules mining, finding similar items, clustering, classification, and time series mining.
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 Fall 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).
3 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 and developing cloud applications using the AWS software development toolkit.
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 Fall semesters)
Currently, this class is offered as CS5890/6890 due to the course fee issues.
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.
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 Fall semesters)
This course introduces fundamental concepts of artificial neural networks (ANN), encompassing deep feedforward networks, optimization and regularization techniques, hyperparameter adjustment, convolutional neural networks, object detection, recurrent neural networks, word embedding techniques, attention mechanisms/transformer models, and generative adversarial networks. Through hands-on exercises, students will explore the application of diverse ANN architectures across different data types, such as tabular data, images (spatial), sequential data (temporal), and graphs.
Data science is an interdisciplinary field that uses scientific methods, processes, algorithms, and systems to extract knowledge and insights from structural and unstructured data. This course covers various machine learning models for solving real-world data analysis problems. The course starts with foundational models such as linear and logistic regression to understand the basics of statistical modeling. The course then progresses to more complex models like feed-forward neural networks, convolutional neural networks, and recurrent neural networks, which are crucial for tasks involving large amounts of unstructured data, such as images and natural language.
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 interactive information visualization for data science. The 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 interactive information visualizations, and how to create your own interactive information visualizations using modern web-based frameworks and libraries. This course is complementary to CS5840/6840 (Scientific Visualization for Data Science).
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 data mining techniques (e.g., graph neural networks) to extract meaningful patterns from graph data. The course explores social network analysis as the study of social ties through the lens of graph theory.
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 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.
In recent years, Artificial Intelligence (AI) has exerted a profound influence on various real-world applications, particularly in the domain of Natural Language Processing (NLP). This course offers students an introduction to the field of NLP, providing a comprehensive overview of state-of-the-art methods within this domain. Integrating hands-on sessions, the course aims to equip students with fundamental knowledge of AI and natural language. Topics covered include fundamental data analysis methods, neural networks, advanced deep learning methods for NLP, language models, NLP applications, and speech processing. The curriculum is supplemented with illustrative examples showcasing the practical applications of these concepts.
This course covers concepts, principles, methodologies, and techniques on measuring and defending the various security properties of both the operating systems and application software (e.g., distributed systems, machine learning systems). The technical approaches will cover source code analysis, binary analysis, dynamic random testing (fuzzing), and reverse engineering techniques, as applied in the context of vulnerability discovery, malware analysis, risk mitigation, and digital forensics.
1 credit
Learn basics of starting a technology startup company. Topics include product ideation, business structure, revenue models, team formation, and business communication.
4 credits
Thorough review and analysis of current tools and technologies that apply to the software product being built. Additionally, students will investigate and learn computer science topics required for the product. This includes AI, UI/UX, system architecture, security, data visualization/management, graphics and any other topic required for the software product.
4 credits
Work in a team software development environment utilizing industry best-practices to build a software product. Includes a review of software engineering design strategies and team communication models.
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.
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
- CS 5080 – Introduction to Data Mining
- CS 5040 – Scientific Visualization for Data Science
- CS 5820 – Interactive Information Visualization for Data Science
- CS 5840 – Graph Mining
- CS 5850 – Introduction to Data Analysis
- CS 5665 – Introduction to Data Science
- CS 5830 – Data Science in Practice
- CS 4320 – Applied Machine Learning
- CS 5000 – Theory of Computability
- CS 5060 – Algorithms Under Uncertainty
- CS 5510 – Robot Intelligence
- CS 5600 – Intelligent Systems
- CS 5665 – Machine Learning for 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 Development