Provides a strong foundation in HTML, CSS, images, beginning web programming, and web design so that the student can create a complete functional web site in a team based final project.
Introduction to algorithmic problem solving and computer programming. Designed to provide a foundation for further studies in computer science.
Introductory computer science through exploration and analysis of mathematical puzzles and games, and the algorithms that handle them. Prerequisite: No credit if taken after CS 2100.
Introduction to analytic and formal methods of computer science with practical examples, including analysis or data structures, recursion relations, proof methods, and logic programming. Credit not awarded for both CS 1640 and MATH 2055. Prerequisites: CS 1210 or CS 2100; MATH 1234 or MATH 1242.
Basic techniques of data harvesting and cleaning; association rules, classification and clustering; analyze, manipulate, and visualize data using programming languages. Basic principles of probability and statistical modeling/inference to make meaning out of large datasets. Credit not awarded after STAT 3000 or greater. Cross-listed with: STAT 1870.
Assist in instruction of undergraduate computer science courses under the direct supervision of a faculty member. Instructor permission required.
Intermediate programming concepts including common data structures, algorithms, style, design, documentation, testing and debugging techniques, and an introduction to object-oriented programming. Prerequisite: CS 1210 with a grade of C- or better.
Introduction to computer system organization including performance, assembly language, machine-level data representation, arithmetic for computers, processor datapath control, memory, and input/output. Includes significant semester project. Cross-listed with: CMPE 2210. Prerequisite: CS 2100.
Design and implementation of linear structures, trees and graphs. Examples of common algorithmic paradigms. Theoretical and empirical complexity analysis. Sorting, searching, and basic graph algorithms. Prerequisites: CS 2100 with a grade of C- or better; minimum Sophomore standing.
Formal languages and expressiveness. Turing completeness and Church's Thesis. Decidability and tractability. Complexity classes and theory of NP completeness. Prerequisites: CS 1640 or MATH 2055. Co-requisite: CS 2240.
Builds programming maturity and proficiency through significant projects with spiral development, including program specification, design, implementation, debugging, testing, validation, internal and external documentation. Focus on advanced topics including efficiency, profiling, modularity, extensibility, programming paradigms, design patterns, memory management, and generics. Prerequisite: CS 2240.
Serves as a foundational course in modern database systems. Introduces the fundamental concepts and techniques of relational database management, data modeling, relational algebra, structured query language, database design and database management. Practical experience will be gained through a series of labs and projects. Credit not awarded after CS 3040 or CS 5040. Prerequisites: CS 1210; minimum Sophomore standing. Pre/Co-requisites: CS 1210; minimum Sophomore standing.
An introduction to artificial intelligence including logic and rule-based approaches, heuristic search, A*, IDA*, minimax, alpha/beta pruning, expectiminimax, Markov models and MDPs, decision tree, ensemble learning / random forest, the neural model and simple multi-layer perceptrons. Other topics, if any may vary. Prerequisite: C- or better in CS 2240.
Introduction to cybersecurity, fundamental security design principles, programming flaws, malicious code, web and database security, cryptography algorithms and hashing functions; overview of computer networks and common network threat vectors. Prerequisites: CS 2210 with a grade of C- or better.
Basic data science techniques, from import to cleaning to visualizing and modeling, using the R language. Machine learning methods include regression, classification and clustering algorithms. Programming methods include user-defined functions. Prerequisite: STAT 1110, STAT 1410, or STAT 2430. Cross-listed with: STAT 2870.
Undergraduate student service as a teaching assistant, usually in an introductory-level course in the discipline, for which credit is awarded. Offered at department discretion.
Supervisory and control software for multiprogrammed computer systems. Processes, threads, synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, secondary storage, case studies. Prerequisites: CS 2300 and CS 2210.
Treatment of software engineering problems and principles, with a focus on iterative software development. A significant part of the course is devoted to two multi-week team projects. Prerequisite: CS 2300.
Exploration of the automated design of autonomous machines using evolutionary algorithms. Coursework involves reading of research papers, programming assignments and a final project. Credit not awarded for both CS 3060 and CS 5060. Prerequisites: Junior standing and programming experience, or Instructor permission.
Techniques for secure computation involving multiple distributed parties, including applied cryptography, homomorphic encryption, secure multiparty computation, and zero-knowledge proof. Applications including Bitcoin and other blockchain systems, encrypted databases, federated learning, and computing on encrypted data. Credit not awarded for both CS 3120 and CS 5120. Prerequisites: CS 2240, CS 2250.
Architecture of computing systems. Control unit logic, input/output processors and devices, asynchronous processing, concurrency, parallelism, and memory hierarchies. Credit not awarded for both CS 3220 and CS 5220. Cross-listed with: CMPE 3220. Prerequisite: CMPE 2210 or CS 2210.
Comprehensive study of algorithms including greedy algorithms, divide and conquer, dynamic programming, graph algorithms and network flow. Computational intractability. Approximation, local search and randomization. Credit not awarded for both CS 3240 and CS 5240. Prerequisite: CS 2240. Pre/co-requisites: Recommended: CS 2250; STAT 2430, or STAT 2510.
Introduction to machine learning algorithms, theory, and implementation, including supervised and unsupervised learning; topics typically include linear and logistic regression, learning theory, support vector machines, decision trees, backpropagation artificial neural networks, and an introduction to deep learning. Includes a team-based project. Credit not awarded for both CS 3540 and CS 5540. Prerequisites: STAT 2510 or STAT 5510; MATH 2522 or MATH 2544.
Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: the Internet; wired and wireless communications protocols; network security protocols. Prerequisite: CS 2240. Cross-listed with: CMPE 3650.
Data harvesting, cleaning, and summarizing; working with non-traditional, non-numeric data (social network, natural language textual data, etc.); scientific visualization; advanced data pipelines; Project-based. Credit not awarded for both CS 3870 and CS 5870. Prerequisites: CS 1210; STAT 1410 or STAT 2430; CS 2100 and MATH 2522 or MATH 2544 recommended. Cross-listed with: STAT 3870.
Oral presentations that pertain to the ethical practice of computer science in government, industry, and academia. Topics may include computer security, copyright, and patent law. Prerequisite: Senior standing in Computer Science.
Seminar to help students develop necessary skills for becoming computing professionals and exposes them to different computing careers. Topics include job search strategies, preparation for technical interviews, networking, and developing soft skills. Several guest lectures by computing professionals and alumni. Prerequisite: CS 2240.
Explores the automated design of autonomous machines using evolutionary algorithms. Covers relevant topics in evolutionary computation, artificial neural networks, robotics, simulation and xenobots. Students complete weekly programming assignments, formulate research a research hypothesis, and use their system to test that hypothesis. Credit not awarded for both CS 5060 and CS 3060. Prerequisite: Graduate student.
Techniques for secure computation involving multiple distributed parties, including applied cryptography, homomorphic encryption, secure multiparty computation, and zero-knowledge proof. Applications including Bitcoin and other blockchain systems, encrypted databases, federated learning, and computing on encrypted data. Credit not awarded for both CS 5120 and CS 3120. Prerequisites: Proficiency in Python programming; familiarity with LaTeX typesetting system; Graduate student.
Provides a thorough and sophisticated examination of various hardware aspects of modern computers, including: virtual memory, instruction-set architectures, instruction-level parallelism through pipelining, caches and cache coherence, threads, vector processors, and GPUs. Prerequisites: Familiarity with topics of computer organization as would come from the equivalent of CS 2210 or CMPE 2210; Graduate student. Credit not awarded for both CS 5220 and CS 3220 or CMPE 3220. Cross-listed with: CMPE 5220.
Studies how to design and analyze computer program algorithms to solve real-world problems. Begins with a review of the concept of algorithm complexity and basic graph algorithms; and then covers algorithm design approaches such as greedy, divide and conquer, dynamic programming, and network flow; then, computational intractability will be treated. Credit not awarded for both CS 5240 and CS 3240. Prerequisite: Familiarity with data structures and elementary algorithms; Graduate student.
Provides a broad introduction to machine learning and statistical pattern recognition. Topics include: supervised learning (linear regression, logistic regression, neural networks, support vector machines, decision tree, ensemble models, random forest); unsupervised learning (clustering, dimensionality reduction, kernel methods); Also introduces deep learning such as convolutional neural networks and discusses recent applications. Credit not awarded for both CS 5540 and CS 3540. Prerequisites: Knowledge of statistics as from STAT 2510, knowledge of linear algebra as from MATH 2522 or MATH 2544; Graduate student.
Data harvesting, cleaning, and summarizing; working with non-traditional, non-numeric data (social network, natural language textual data, etc.); scientific visualization; advanced data pipelines with a practical focus on real datasets and developing good habits for rigorous and reproducible computational science; Project-based. Credit not awarded for both CS 5870 and CS 3870. Prerequisites: Knowledge of CS 1210 and either STAT 1410 or STAT 2430 required; knowledge of CS 2100 and MATH 2522 or MATH 2544 recommended; Graduate student or Instructor permission. Cross-listed with: STAT 5870, CSYS 5870.
Deep dive in state-of-the-art mathematical and computational methods for modeling complex systems; model theory, branching processes, probability generating functions, message passing, master equations, event-driven simulations, Gillespie algorithms, composition-rejection algorithms. Prerequisites: CS 6020 or CSYS 6020. Cross-listed with: CSYS 6021.
Introduces the field of data mining, including general data features, techniques for data preprocessing, data warehousing, and data-mining methods for mining frequent patterns, associations, and correlations; data classification; cluster analysis; and outlier detection. Prerequisite: Computer Science Graduate student.
Research for the Master's Thesis.
Introduction to Deep Learning algorithms and applications, including basic neural networks, convolutional neural networks, recurrent neural networks, deep unsupervised learning, generative adversarial networks and deep reinforcement learning. Includes a semester team-based project. Prerequisite: CS 3540. Cross-listed with: CSYS 6540.
Covers human factors in privacy and security, usability problems in today's computer security and privacy mechanisms, as well as the human-centered empirical research methods to understand and address these usability problems. Students will work individually or in small groups toward semester-long course research projects. Co-requisite: Knowledge of STAT 1410 or equivalent.
Subject will vary from year to year. May be repeated for credit with Instructor permission.
Research for the Doctoral Dissertation.