Upper-Division CS Course Descriptions

Recommended Electives for Careers

CS 3XXX/4XXX Courses

CS 5XXX/6XXX Courses

Computer Science Career Resources

Warning! This page is currently being updated for the 2025-2026 academic year. Please check back later for completely up-to-date information.

Updated on June 17, 2025

In response to the rapid integration of AI across industries, the Computer Science Department has embedded AI principles, tools, and applications into the following elective courses: CS 4320, CS 4460, CS 4610, CS 5000, CS 5030/6030, CS 5040/6040, CS 5080, CS 5110/6110, CS 5215/6215, CS 5270/6270, CS 5330/6330, CS 5600/6600, CS 5615/6615, CS 5620/6620, CS 5640/6640, CS 5665, CS 5680/6680, CS 5710, CS 5715/6715, CS 5840/6840, and CS 6460.

CS majors must be accepted to the professional program before registering for upper-division CS coursework. Students may request an exception to this rule via the Upper-Division CS Course Request Form.

All the courses are 3 credits except for a few courses listed otherwise.

A grade of C- or better is required in all prerequisite courses.

CS 3XXX/4XXX Courses

CS 3100: Operating Systems and Concurrency

Instructor: Dr. Tian Xie (Fall); Dr. Mahdi Nasrullah Al-Ameen (Spring)
Semester Offered: Regularly offered in Spring and Fall semesters

Design and implementation of operating systems using Linux and Windows as examples. Topics include all major OS categories with an emphasis on concurrency in OS design and applications. Topics include OS types, system structures, process management, multithreading, CPU scheduling, memory management, file systems, and I/O systems. Java is the primary programming language used.

Prerequisite Course(s): CS 2420

CS 3430: Scientific Computing
Instructor: Dr. Vladimir Kulyukin
Semester Offered: Regularly offered Spring semesters

Scientific Computing introduces algorithms for solving applied numerical problems in fields like computer science, engineering, and finance. Topics include linear systems, LU decomposition, linear programming, numerical differentiation/integration, Fourier series, random number generation, data compression, and time series forecasting. Students gain hands-on experience using Python, NumPy, SciPy, SymPy, scikit-learn, PyCaret, and Octave. Through programming assignments and multi-week projects, students apply these tools to real-world problems, gaining a strong foundation in scientific computing techniques and their applications.

Prerequisite Course(s): CS 1410 and (MATH 1210 or MATH 2270)

CS 3450: Introduction to Software Engineering
Instructor: Erik Falor
Semester Offered: Regularly offered in Fall and Spring semesters
Credits: 4

 This course explores the principles and practices of modern software engineering through hands-on, team-based projects. Students collaboratively design and build a non-trivial application suitable for their portfolio. The course covers configuration management (with an emphasis on version control), requirements analysis, software design, implementation, testing, deployment, and maintenance. Students are assessed on teamwork, communication, and adherence to engineering principles—not just code correctness. Advanced AI tools are used throughout the course to support every phase of development, from planning through deployment. Several guest lecturers from the software industry visit the class to share real-world insights and experiences. The course offers excellent preparation for internships and professional software development work. This course utilizes Git/GitHub, CI/CD, Agile methods, AI coding tools (e.g., ChatGPT, Copilot, Cursor), and Docker (optional).

Prerequisite Course(s): CS 2420 and CS 2610

CS 3460: Modern C++
Instructor: Dr. Wen Li 
Semester Offered: Regularly offered in Fall semesters

This course is designed to deepen students’ understanding and proficiency in the C++ programming language, with a particular emphasis on modern C++ standards. It explores C++ as a systems-level language and highlights its strengths in application development and computational performance. Topics include the history of C++, the 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.

Prerequisite Course(s): CS 1440 and CS 2420

CS 4250/CS 6250: Co-operative Work Experience
Instructor: Caitlin Thaxton
Semester Offered: Regularly offered in Fall, Spring, and Summer semesters
Credits: 1-9

This course provides students the opportunity to earn academic credit for qualifying internships or work experiences. Students are responsible for securing their own positions and must submit the Co-op Form to apply for course registration. A maximum of 3 credits may be applied toward CS major requirements or included in a graduate Program of Study. CS 4250 is for undergraduate students and requires that software development or testing be a primary responsibility in the job. CS 6250 is for graduate students and requires a position with minimum qualifications equivalent to a bachelor’s degree in Computer Science.

Prerequisite Course(s): None
Registration Restriction(s): Departmental Approval via the Co-op Form

CS 4320: Applied Machine Learning
Instructor: Dr. Shuhan Yuan
Semester Offered: Regularly offered in Fall semesters

This course provides an in-depth exploration of the practical applications of machine learning and its role within the broader field of artificial intelligence (AI). Students will learn how to clean and preprocess data, perform feature extraction and selection, and apply both supervised and unsupervised learning techniques. The course also introduces foundational AI concepts and highlights how machine learning is used to power intelligent systems. Emphasis is placed on developing hands-on proficiency with widely used machine learning and AI libraries, enabling students to solve real-world problems through applied projects.

Prerequisite Course(s): CS 2420

CS 4460: Introduction to Cybersecurity
Instructor: Dr. Tian Xie
Semester Offered: Regularly offered in Spring semesters

This course introduces fundamental concepts in cybersecurity, including common vulnerabilities and methods to secure systems. Topics covered include cryptography, web security, authentication, network security, system security, and software security. Additionally, the course explores the emerging role of AI in cybersecurity, such as using AI for threat detection, anomaly analysis, and automated defense mechanisms. Students will develop a foundational understanding of security threats and protection techniques, complemented by hands-on programming exercises primarily in Python and C/C++.

Prerequisite Course(s): CS 2420 and CS 3100

CS 4610: Modern Web Development
Instructor: Joseph Ditton
Semester Offered: Regularly offered in Spring semesters.

In this course, students learn to address common challenges in web-based software development using modern tools and best practices. They will build full-stack web applications with popular TypeScript and JavaScript frameworks, gaining skills that prepare them for careers as professional web developers. Topics covered include user authentication and authorization, databases and migrations, Object-Relational Mapping (ORM), RESTful APIs, the Model-View-Controller (MVC) architecture, module bundling, transpilation, TypeScript, ReactJS, single-page versus multi-page applications, WebSockets, Firebase and other Backend-as-a-Service (BaaS) platforms, CSS, geolocation and mapping, and web workers. The course also introduces AI-driven web features, such as integrating machine learning APIs for personalization, chatbots, and intelligent search.

Prerequisite Course(s): CS 2610

CS 4700: Programming Languages
Instructor: Dr. Curtis Dyreson and Dr. Isaac Cho
Semester Offered: Regularly offered in Fall and Spring semesters

This course introduces students to the fundamental theories behind programming language design and functionality. It covers core principles and components such as control structures, naming, typing, and exception handling. The course also explores various programming paradigms, including functional programming. Multiple programming languages are used to illustrate these concepts; past examples include JavaScript, Lua, Prolog, Dart, Kotlin, Raku, NewLisp, PostScript, Haskell, Scheme, Clojure, C#, and others.

Prerequisite Course(s): CS 2420

CS 4950/CS 5950/CS 6950/CS 7950: Supervised Studies
Instructor: TBA (Graduate Program Coordinator)
Semester Offered: Regularly offered in Fall, Spring, and Summer semesters
Credits: 1-4

This course allows students to work individually with a Computer Science faculty member on advanced topics not covered in existing courses. Requirements and grading criteria are set by the supervising professor, and students must complete all work by the end of the semester. The workload and academic rigor are equivalent to those of a lecture-based course at the same level. CS 4950 may be taken for 1–4 credits; CS 5950, 6950, and 7950 may only be taken for 3 credits. Students may enroll in this course only once during their program. Graduate students may include only one Supervised Study course in their Program of Study. [Supervised Study Request Form]

Prerequisite Course(s): CS2420 for CS 4950/CS 5950
Registration Restriction(s): Departmental Approval via the Supervised Study Request Form

CS 5XXX/6XXX Courses

All CS 5XXX courses have only CS 2420 as a course prerequisite, except for a few courses listed otherwise. 

CS 6XXX courses are restricted to graduate students in the CS department. Undergraduate CS students and graduate students outside of CS may register provided prerequisites for the dual-listed CS 5XXX course is met, or instructor permission is provided.

A grade of C- or better is required in all prerequisite courses.

CS 5000: Theory of Computability
Instructor: Dr. Vladimir Kulyukin
Semester Offered: Regularly offered in Fall semesters.

This course explores the fundamental principles of computation, focusing on the theoretical limits of computation across models such as digital, analog, and quantum. Topics include Chomsky’s Hierarchy, Turing Machines, computability, and foundational theorems like Rice’s and Gödel’s. Students will examine which problems are solvable and why, using tools from formal language theory, recursion theory, and number theory. Applications to AI, cryptography, and operating systems are discussed. Programming assignments in Python and Lisp, along with LaTeX-based coursework, support a deep understanding of the principles that define the boundaries of what computers can do.

CS 5030/CS 6030: High Performance Computing (TEAMWORK course)
Instructor: Dr. Steve Petruzza
Semester Offered: Regularly offered in Spring semesters
Credits: 4

High-Performance Computing (HPC) leverages parallel computing—from multicore processors to GPUs and clusters—to solve complex problems efficiently. This course provides hands-on experience using leading HPC frameworks, including OpenMP, MPI, and CUDA, to write code for modern multi-core processors, GPUs, and computing clusters. Students will learn core concepts in parallel programming, tackle performance challenges, and analyze HPC systems. Applications include accelerating AI and machine learning workloads, such as model training and large-scale data processing. Coursework involves programming in C/C++ on a real computing cluster. A background in pointers, memory management, and data structures is recommended.

CS 5040/CS 6040: Scientific Visualization for Data Science
Instructor: Dr. Steve Petruzza
Semester Offered: Regularly offered in Spring semesters, odd years.

This course covers principles and techniques for visualizing scientific data, including scalar, vector, and tensor fields in 2D and 3D. Students will use state-of-the-art methods for surface and volume rendering and apply scientific visualization tools. The course also introduces AI-driven approaches for enhancing visual analysis, such as feature extraction and pattern recognition in complex datasets. It complements CS 5820/6820 by focusing on field-based data visualization. Python is the primary programming language.

CS 5050: Advanced Algorithms
Instructor: Dr. Seth Poulsen (Fall); Dr. Hamid Karimi (Spring)
Semester Offered: Regularly offered in Spring and Fall semesters.

This course builds on core knowledge of algorithms and data structures to explore advanced techniques in algorithm design and analysis. Topics include divide-and-conquer, dynamic programming, graph algorithms, NP-completeness, reductions, heuristics, and computational complexity. Students will learn to evaluate algorithm efficiency, tackle complex problems, and determine computational feasibility. While the focus is theoretical, some assignments involve Python implementation. This course is ideal for students seeking to strengthen algorithmic thinking, prepare for technical interviews, or pursue research and careers in optimization, AI, or systems development.

CS 5080: Introduction to Data Mining
Instructor: Dr. Soukaina Filali Boubrahimi - Odd years; Dr. Shuhan Yuan - Even years
Semester Offered: Regularly offered in Fall semesters.

This course introduces the principles and techniques of data mining, with a focus on scalable algorithms, time series analysis, and real-world applications using Python. Students will explore key topics such as similarity measures, classification, clustering, association rule mining, and anomaly detection. The course also covers AI-driven methods for pattern discovery and predictive modeling, including dimensionality reduction and frequent itemset mining. Emerging tools and frameworks like MapReduce and Apache Spark are used to demonstrate mining on large-scale datasets and data streams. The course bridges traditional data mining with modern AI techniques to prepare students for data-intensive roles in industry and research.

CS 5110/CS 6110: Multi-Agent Systems (TEAMWORK course)
Instructor: Dr. Vicki Allan
Semester Offered: Regularly offered in Fall semesters
Credits: 4

This course offers a comprehensive introduction to the analysis, modeling, and design of complex multiagent systems. Students will learn to classify different types of agents, apply the agent concept in distributed environments, and understand key research methods for modeling agent dynamics. Emphasis is placed on designing autonomous, interactive systems capable of cooperation, coordination, and negotiation. Topics include coalitions, auctions, game theory, voting systems, and agent types. AI techniques—such as reinforcement learning, strategic decision-making, and behavior modeling—are integrated to enhance agent intelligence. Students gain hands-on experience through team-based projects. Proficiency in Python is expected.

CS 5140: Human Factors in Computing

Instructor: Dr. Mahdi Nasrullah Al-Ameen
Semester Offered: Regularly offered in Fall semesters


This course introduces students to the importance of involving end-users in the technology design process. It covers core principles of human-computer interaction (HCI) and methods for conducting human-subject studies to understand user needs, behaviors, and experiences. Students will also explore recent research findings in HCI and learn how to apply user-centered design techniques to create more effective and intuitive technologies.

Prerequisite(s): None.

CS 5215/6215: Computer Networks and Security
Instructor: Dr. Tian Xie
Semester Offered: Regularly offered in Fall semesters.

This course is designed for senior undergraduates and graduate students, offering hands-on experience in socket programming using C, C++, and Python. It provides a deep exploration of computer and mobile networks, as well as network security. Topics include the Application, Transport, Network, and Link layers; LAN technologies (e.g., Ethernet, Wi-Fi); cellular networks; and common network attacks. The course also introduces AI-driven techniques for intrusion detection, traffic analysis, and anomaly detection, demonstrating how machine learning can enhance network security and performance. Students will apply both traditional and AI-based approaches to real-world networking challenges.

CS 5270/CS 6270: Introduction to Cloud Development
Instructor: Dr. Steve Petruzza
Semester Offered: Online course; Regularly offered in Fall semesters.

This course covers foundational cloud computing concepts, including public cloud infrastructure, security, cost management, networking fundamentals, compute, storage, and database services. It explores principles and best practices for architectural design, application monitoring, and scalable deployment. Students gain hands-on experience with a variety of cloud services and develop cloud applications using the AWS software development toolkit. Additionally, the course integrates AI and machine learning services in the cloud, teaching students how to deploy, manage, and scale AI models using cloud-based tools and frameworks.

CS 5300: Compiler Construction
Instructor: Dr. John Edwards
Semester Offered: Regularly offered in Spring semesters
Credits: 4

This course introduces fundamental design principles and techniques for building compilers. Students will learn about the core components, algorithms, and theories behind compilers, including lexical analysis, syntax analysis, semantic analysis, intermediate and target code generation, run-time environments, and optimization principles. The course emphasizes both the theoretical foundations and practical aspects of compiler construction.

Prerequisite Course(s): CS 2810 or Instructor Permission

CS 5311/CS 6311: Technology Startup Business Principles (Sandbox)
Instructor: Dr. Chad Mano
Semester Offered: Regularly offered in Fall semesters
Credits: 1

Students will learn the key principles and processes involved in launching a software-based startup. Topics include product ideation, business structures, revenue models, team building, and effective communication. Additional coursework is required for graduate-level students.

Registration Restriction(s): Advisor permission

CS 5312/CS 6312: Modern Technology Stacks (Sandbox)
Instructor: Dr. Chad Mano
Semester Offered: Regularly offered in Fall semesters.
Credits: 4

This course reviews and analyzes current tools and technologies used in full-stack software development, followed by hands-on implementation of selected tools in a large-scale software project. Additional coursework is required for graduate-level students.

Registration Restriction(s): Advisor permission

CS 5313/6313 - Technology Startup Software Engineering (Sandbox) (TEAMWORK Course)
Instructor: Dr. Chad Mano
Semester Offered: Regularly offered in Fall semesters
Credits: 4

This course emphasizes teamwork in a collaborative environment, applying industry best practices to develop a large-scale software product for a startup technology company. Additional coursework is required for graduate-level students.

Registration Restriction(s): Advisor permission

CS 5314/6314 - Technology Startup Business Launch (Sandbox)
Instructor: Dr. Chad Mano
Semester Offered: Regularly offered in Spring semesters
Credits: 1

Students will learn and experience the process of launching a software-based company and delivering products to real customers in a live market. Additional coursework is required for graduate-level students.

Registration Restriction(s): Advisor permission

CS 5315/6315- Computer Science Innovations (Sandbox)
Instructor: Dr. Chad Mano
Semester Offered: Regularly offered in Spring semesters
Credits: 4

Students bridge the gap between existing technology and the objectives of a custom software product by developing innovative technologies necessary to complete the project. Additional coursework is required for graduate-level students.

Registration Restriction(s): Advisor permission

CS 5316/6316- Commercial Software Engineering (Sandbox) (TEAMWORK Course)
Instructor: Dr. Chad Mano
Semester Offered: Regularly offered in Spring semesters
Credits: 4

Students learn the principles and processes of software deployment and maintenance, gaining hands-on experience by launching a real software product. This is a TEAMWORK course. Additional coursework is required for graduate-level students.

Registration Restriction(s): Advisor permission

CS 5330/CS 6330: Data-Driven Programming Language Processing

Instructor: Dr. Yang Shi
Semester Offered: Regularly offered in Spring semesters.

AI and data-driven methods are transforming many fields, including programming languages, by enhancing tasks such as bug detection and code generation. This course introduces AI-enabled programming language processing, balancing theoretical foundations with practical applications. Students will first study data-driven techniques for programming language analysis and receive an overview of programming languages. They will then examine how data analysis methods apply to programming language processing, focusing on recent research and real-world applications in education and industry. The course primarily uses Python but welcomes other programming languages, and covers key algorithms and language processing methods.

CS 5410: Game Development (TEAMWORK course)
Instructor: Joseph Ditton
Semester Offered: Regularly offered in Spring semesters
Credits: 4

This course focuses on technical game development, enabling students to master both technical game design and development. It emphasizes integrating multiple computer science concepts into a cohesive application and includes a team project to create a computer-based game. Key topics covered are graphics, input handling, collision detection, particle systems, entity frameworks, multithreading and multicore processing, networking, synchronization, optimization, and scripting.

Prerequisite Course(s): CS 2420 and CS 3100

CS 5470/CS 6470: Introduction to Interactive Virtual Reality
Instructor: Dr. Isaac Cho 
Semester Offered: Regularly offered in Fall semesters

This course introduces the core principles and emerging technologies of Virtual Reality (VR), combining foundational concepts with current developments in immersive systems. Topics include head-mounted displays, 3D tracking, user interfaces, interaction techniques, human perception, user experience, evaluation methods, and VR applications across various domains. Students will design and develop interactive VR experiences using Unity and C# with OpenXR or WebXR. Each student will be provided a Meta Quest 2 headset for hands-on activities and have access to VR/AR equipment in the VizUS Lab. The course culminates in a team-based final project that integrates technical, experiential, and evaluative components of VR design.

Prerequisite Course(s): CS 2420 and (MATH 2250 or MATH 2270)

CS 5600/CS 6600: Intelligent Systems
Instructor: Dr. Vladimir Kulyukin
Semester Offered: Regularly offered in Fall semesters
Credits: 4

This course explores two core paradigms of artificial intelligence: data-driven and symbolic AI. Students will gain hands-on experience with neural networks, convolutional networks, LSTMs, and transformers (e.g., ChatGPT) using Python, as well as symbolic reasoning techniques like pattern matching and automated theorem proving using Lisp. Classic symbolic AI systems such as ELIZA, General Problem Solver (GPS), and STRIPS are examined alongside biological and theoretical inspirations like the ANN Universality Theorem. The course also addresses the environmental and ethical implications of AI, including digital labor, privacy, bias, and AI's role in education and governance. Students will complete programming assignments, technical readings, and multi-week projects to develop a practical and conceptual understanding of intelligent systems.

CS 5615/CS 6615: Natural Language Processing
Instructor: Dr. Yang Shi
Semester Offered: Regularly offered in Fall semesters

This course introduces students to key concepts and techniques in NLP, with an emphasis on modern AI-driven approaches. Students will explore core topics including data preprocessing, neural networks, deep learning models, language modeling, NLP applications, and speech processing. Hands-on assignments using Python help reinforce theoretical concepts through real-world examples. The course integrates practical projects and case studies to demonstrate how NLP powers technologies like chatbots, translation, sentiment analysis, and voice assistants. A basic understanding of linear algebra is recommended.

CS5620/CS6620: AI Applications in Education
Instructor: Dr. Seth Poulsen
Semester Offered: Regularly offered in Spring semesters

This course explores how artificial intelligence can be applied to enhance human learning across diverse educational contexts. Topics include cognitive and learner modeling, intelligent tutoring systems, adaptive learning technologies, and natural language processing for automated feedback. Students will also receive a foundational introduction to the learning sciences to support the effective design and evaluation of AI-based learning environments. Coursework includes hands-on experience with existing AI tools, the development of computational models for assessment and feedback, and a student-designed final project. The course emphasizes both the theoretical and practical aspects of building intelligent educational systems.

CS 5640/CS 6640: Artificial Neural Networks

Instructor: Dr. Shah Muhammad Hamdi
Semester Offered: Regularly offered in Fall semesters

This course offers a comprehensive introduction to artificial neural networks (ANNs), from foundational concepts to advanced architectures. Topics include deep feedforward networks, optimization and regularization methods, hyperparameter tuning, convolutional neural networks (CNNs), object detection, recurrent neural networks (RNNs), word embeddings, attention mechanisms, transformers, and generative adversarial networks (GANs). Students will gain hands-on experience applying ANN models to various data types, including tabular, image, sequence, and graph-structured data. Python is the primary programming language, using libraries such as PyTorch, TensorFlow, and Scikit-learn.

CS 5665: Machine Learning for Data Science
Instructor: Dr. Shuhan Yuan
Semester Offered: Regularly offered in Spring semesters

Data science is an interdisciplinary field that uses scientific methods and algorithms—including those from artificial intelligence (AI)—to extract insights from structured and unstructured data. This course focuses on foundational machine learning techniques that form the basis of modern AI systems, including linear regression, logistic regression, and support vector machines. Students will explore how these models contribute to AI-driven analytics and decision-making. The course emphasizes practical application to real-world datasets and evaluation using appropriate performance metrics.

CS 5680/CS 6680: Computer Vision: Foundations and Applications
Instructor: Dr. Xiaojun Qi
Semester Offered: Regularly Offered in Fall semesters

This course introduces foundational theories and techniques in machine intelligence, with a focus on image processing, pattern recognition, and computer vision—core areas of artificial intelligence (AI). Students will gain hands-on experience using MATLAB and Python to analyze and process digital images. Topics include image enhancement, morphological operations, segmentation, object representation and recognition, as well as AI-driven methods such as neural networks, deep convolutional neural networks (CNNs), principal component analysis (PCA), k-means clustering, and hierarchical clustering. The course emphasizes the application of AI techniques to visual data understanding and interpretation.

CS 5700: Object-Oriented Software Development
Instructor: Joseph Ditton
Semester Offered: Regularly Offered in Summer Semesters
Credits:
4

This course introduces students to the principles and practices of object-oriented software development (OOSD), emphasizing how these concepts enhance software quality, maintainability, and scalability. Students will learn key object-oriented (OO) principles such as encapsulation, inheritance, polymorphism, and abstraction, and how to apply them effectively throughout the software development lifecycle—including design, implementation, and testing. The course explores commonly used design patterns for solving recurring software design problems, teaches best practices for writing clean and modular code, and highlights common pitfalls to avoid. Through hands-on projects and code reviews, students will develop the skills needed to create robust, reusable, and well-structured software systems using modern programming languages and development tools.

Prerequisite Course(s): CS 3450

CS 5710/CS 6710: Software Security
Instructor: Dr. Wen li
Semester Offered: Regularly offered in Fall semesters

This course explores the principles, methodologies, and techniques for assessing and strengthening the security of operating systems and application software, including distributed systems and AI/ML-based systems. Students will gain hands-on experience with techniques such as source code analysis, binary analysis, dynamic random testing (fuzzing), reverse engineering, and digital forensics. Emphasis is placed on identifying vulnerabilities, analyzing malware, mitigating risks, and understanding security challenges (adversarial attacks, model inversion, and data poisoning) in machine learning systems. The course integrates emerging AI-driven tools and techniques for automated vulnerability detection and malware classification. Programming assignments are conducted primarily in C, C++, and Python.

CS 5715/CS 6715: Program Analysis and Its Applications
Instructor: Dr. Wen li 
Semester Offered: Regularly offered in Spring semesters

This course offers an in-depth exploration of static program analysis principles and techniques, emphasizing their role in improving software security and reliability. Students will implement classic analysis algorithms and gain hands-on experience with LLVM and its Intermediate Representation (IR). Advanced topics include pointer analysis, control and data flow analysis, and symbolic execution. The course also covers emerging AI-driven static analysis methods that leverage machine learning models to enhance vulnerability detection and code quality assessment. Students will develop practical tools to identify software vulnerabilities such as memory leaks and use-after-free errors, ensuring robust, secure code in real-world applications. The primary programming languages used are C and C++.

CS 5750/CS 6750: Computing Education Research
Instructor: Dr. John Edwards
Semester Offered: Regularly offered in Fall semesters, odd years (Not being offered in Fall 2025)

This course introduces computing education research, covering foundational theories from learning and cognitive sciences to understand how students learn computing. Topics include motivation, affect, and their impact on engagement and success. Students learn quantitative and qualitative research methods to design and analyze studies in computing education. The course examines pedagogy, assessment, and strategies and explores programming paradigms and the interdisciplinary applications of computing. Designed to prepare students to critically evaluate educational practices, the course equips them to contribute to research that improves teaching and learning in computing.

Prerequisite Course(s): STAT 2300 or STAT 3000

CS 5800: Introduction to Database Systems
Instructor: Dr. Soukaina Filali Boubrahimi; (Dr. Curtis Dyreson in Fall 2025)
Semester Offered: Regularly offered in Fall semesters

This course introduces modern database systems, blending hands-on SQL practice with core principles of database design and implementation. Students learn to manipulate data and construct complex queries, including nested queries, aggregate functions, and views. The curriculum covers formal relational database design using ER and EER diagrams, and mapping these models to robust schemas. Key topics include functional dependencies, normalization, and integrity constraints for efficient data storage. Performance fundamentals such as file organization and indexing are also covered, providing insight into the algorithms and data structures that power database engines.

CS 5820/CS 6820: Interactive Information Visualization for Data Science (TEAMWORK Course)
Instructor: Dr. Isaac Cho
Semester Offered: Regularly offered in Spring semesters during even years

This course covers foundational principles and techniques for interactive information visualization in data science. Students learn how visual representations aid the analysis and interpretation of complex data and how to design effective, user-centered visualizations for diverse data types. The course emphasizes hands-on implementation using modern web-based tools such as JavaScript and D3. Complementary to CS5840/6840 (Scientific Visualization for Data Science), it focuses on data-driven, user-centered design approaches. Students will complete a final team project to apply the concepts and skills developed throughout the course.

CS 5830/CS 6830: Data Science in Practice
Instructor: Dr. John Edwards
Semester Offered: Regularly offered in Fall semesters (Not being offered in Fall 2025)

This practical, project-based course introduces production data science through hands-on experience with diverse datasets. Students learn key data science concepts and techniques by collaborating as computer scientists and domain experts to solve real-world problems. Topics include data visualization (bar charts, line charts, scatterplots), data cleaning, statistical analysis, and machine learning methods such as k-nearest neighbors, Naive Bayes, linear and logistic regression, support vector machines, decision trees, and neural networks.


CS 5840/CS 6840: Graph Mining
Instructor: Dr. Hamid Karimi - Even Years; Dr. Shah Hamdi - Odd Years
Semester Offered: Regularly offered in Spring semesters

This course introduces the theory and practice of graph-based data analysis, focusing on complex networks from domains like social media and large-scale systems. Students learn to represent and analyze graphs using models and techniques such as random graph generation, link analysis, centrality measures, community detection, spectral clustering, network diffusion, graph classification, graph embedding, and graph neural networks. Emphasis is placed on uncovering patterns and addressing real-world problems like information spread and influence. Through hands-on assignments with tools like Python, PyTorch, and NetworkX, students build practical skills and prepare to tackle modern challenges in network science, including homophily, influence modeling, and dynamic structure discovery.

Prerequisite Recommendations: MATH 2270 and CS 5665

CS 5850/6850: Introduction to Data Analysis
 Instructor: Dr. Hamid Karimi
Semester Offered: Regularly offered in Fall semesters

This course is designed for senior undergraduates and graduate students seeking hands-on experience with computational techniques for big data analysis. Covering a broad range of topics—from data representation, collection, and storage to preprocessing, summarization, predictive modeling, clustering, and anomaly detection—students gain practical skills across the full data analysis pipeline. Emphasis is placed on applying tools such as Python, pandas, and scikit-learn to real-world problems. Coursework includes programming assignments, a midterm exam, and an in-class research paper presentation to reinforce both technical and analytical competencies.

CS 6460: Usable Privacy and Security
Instructor: Dr. Mahdi Nasrullah Al-Ameen
Semester Offered: Regularly offered in Spring semesters

This course explores the human factors of privacy and security, focusing on how users perceive privacy, behave in security contexts, and interact with secure systems. Students learn core principles of human-computer interaction and apply them to the design of human-centered, secure, and privacy-aware technologies. Topics include user authentication, security warnings, mental models of security, privacy visualization in social media, smartphones, and IoT, and designing accessible security solutions for vulnerable populations. The course also examines how AI impacts user privacy and security, including algorithmic transparency, bias, explainability, and the design of trustworthy, human-aligned AI systems.

Prerequisite Course(s): None

CS 6630: Fuzzy Logic and Its Application
Instructor: Dr. Heng-Da Cheng
Semester Offered: Regularly offered during Spring semesters

This course explores new methods, logics, and approaches for thinking, problem-solving, learning, and reasoning in the context of artificial intelligence. It focuses on techniques for managing uncertainty and complexity in AI systems, particularly where classical logic—with only binary truth values (0 or 1)—falls short. Students examine alternative reasoning frameworks, including non-classical and multi-valued logics, that address paradoxes and challenges unresolved by traditional logic, enabling more flexible and robust AI models.

Prerequisite Course(s): None

CS 6675: Advanced Data Mining
Instructor: Dr. Soukaina Filali Boubrahimi
Semester Offered: Regularly offered in Spring semesters

This course offers an in-depth exploration of advanced data mining techniques for texts, graphs, time-series data, vector datasets, and frequent itemsets. Students gain a strong foundation in applying these methods to large-scale, real-world datasets using Python. Key topics include Node2Vec and Word2Vec for embedding, vector space models, time series classification, representation learning, data reduction, and association rule mining. The course emphasizes hands-on learning through a major data mining project, allowing students to develop practical expertise in a specialized area of interest within data mining.

Prerequisite Course(s): None

CS 6800: Advanced Database Systems
Instructor: Dr. Curtis Dyreson
Semester Offered: Regularly offered in Spring semesters

This advanced course explores non-relational data models, the internal architecture of database management systems, and emerging trends in database technology. Students will learn modern approaches to data modeling and querying, while gaining insight into the evolving role of databases in contemporary applications. Topics may include models and query languages, concurrency control, transaction recovery, and database security.

Prerequisite Course(s): CS 5800

CS 6900: Seminar
Instructor: Dr. Xiaojun Qi
Semester Offered: Regularly offered in Fall semesters

This course consists of a series of 20-minute seminars focused on current research topics in the Computer Science Department. Seminars are presented by faculty members, offering students exposure to a wide range of cutting-edge research areas such as artificial intelligence, cybersecurity, data science, human-computer interaction, software engineering, and more. The course is designed to broaden students' understanding of ongoing research efforts within the field, foster interdisciplinary awareness, and encourage engagement with the research community. Students are expected to attend regularly, participate in discussions, and may be required to submit brief reflections or summaries to reinforce learning and critical thinking.

Prerequisite Course(s): None

CS 6970/CS 7970: Thesis Research/Dissertation Research
Instructor: TBA (Graduate Program Coordinator)
Semester Offered: Regularly offered in Fall, Spring, and Summer semesters

CS 6970 is intended for MS students following Plan A or Plan B. CS 7970 is designated for PhD students. These courses provide dedicated time for students to conduct research in collaboration with their major professor. Instructor permission is required and is managed by the Graduate Program Coordinator (GPC). The GPC will automatically authorize enrollment for Plan A and B students and Ph.D. students who have a supervisory committee on file. In the rare cases where you need to register for either course prior to forming your committee, fill out the Course Authorization form so the GPC can request approval from your major professor.

Prerequisite Course(s): None
Registration Restriction(s): Advisor permission

CS 6990/CS 7990: Continuing Graduate Advisement
Instructor: TBA (Graduate Program Coordinator)
Semester Offered: Regularly offered in Fall, Spring, and Summer semesters

This class is a formal course enrollment used by graduate students to maintain academic advising and stay engaged with their graduate program when they are not actively enrolled in other coursework or research credits. This type of class helps students maintain their graduate student status and allows for ongoing communication and guidance from their academic advisor or graduate program coordinator.

Prerequisite Course(s): None
Registration Restriction(s): Advisor permission

Artificial Intelligence/Machine Learning Developer:
  • CS 3430 – Scientific Computing
  • CS 4320 – Applied Machine Learning
  • CS 5110 – MultiAgent Systems
  • CS 5600 – Intelligent Systems
  • CS 5615 – Natural Language Processing
  • CS 5640 – Artificial Neural Networks
  • CS 5665 – Machine Learning for Data Science
  • CS 5680 – Computer Vision: Foundations & Applications


Security Analyst:
  • CS 3460 – Modern C++
  • CS 4460 – Introduction to Cybersecurity
  • CS 5215 – Computer Networks and Security
  • CS 5710 – Software Security
  • CS 5715 – Program Analysis and Its Application
  • CS 6460 – Usable Privacy and Security


Software Developer/Engineer:
  • CS 4460 – Introduction to Cybersecurity
  • CS 4610 – Modern Web Development
  • CS 5050 – Advanced Algorithms
  • CS 5300 – Compiler Construction
  • CS 5330 – Data-Driven Programming Language Processing
  • CS 5470 – Introduction to Interactive Virtual Reality
  • CS 5700 – Object-Oriented Software Development
  • CS 5800 – Introduction to Database Systems


Cloud Developer:
  • CS 4610 – Modern Web Development
  • CS 5030 – High Performance Computing
  • CS 5270 – Introduction to Cloud Development 

Data Science Analyst:
  • CS 4320 – Applied Machine Learning
  • CS 5040 – Scientific Visualization for Data Science or CS 5820 – Interactive Information Visualization for Data Science
  • CS 5080 – Introduction to Data Mining
  • CS 5840 – Graph Mining
  • CS 5850 – Introduction to Data Analysis
  • CS 5665 – Machine Learning for Data Science
  • CS 5830 – Data Science in Practice


Mobile Application Developer and Web Developer:
  • CS 4460 – Introduction to Cybersecurity
  • CS 4610 – Modern Web Development
  • CS 5140 – Human Factors in Computing
  • CS 5800 – Introduction to Database Systems


Game Developer:
  • CS 3460 – Modern C++
  • CS 5050 – Advanced Algorithms
  • CS 5300 – Compiler Construction
  • CS 5400 – Computer Graphics I (taught infrequently)
  • CS 5410 – Game Development

Startup Entrepreneurs:
  • CS 5311 – Technology Startup Business Principles
  • CS 5312 – Modern Technology Stacks
  • CS 5313 – Technology Startup Software Engineering
  • CS 5314 –Technology Startup Business Launch
  • CS 5315 – Computer Science Innovations
  • CS 5316 – Commercial Software Engineering