CS Curricula

←All schools

Purdue UniversityWebsiteAcademic Catalog

Computer ScienceDepartment Website

Majors

Courses

source 1

CS 17600: Data Engineering In Python (3) intro

The course introduces students to programming fundamentals in Python, including loops, functions and different data types, and provides an introduction to data engineering including working with common data formats and learning the basics of data wrangling. Students will format, extract, clean, filter, transform, search, combine, summarize, aggregate, and visualize a diverse range of data sets. Python libraries including Matplotlib and Pandas are used.

CS 17700: Programming With Multimedia Objects (4) intro

Introduction to computers and programming: number representations, primitive data types and operations, basic control structures, programming applets and applications using graphical user interfaces, programming for detecting events and performing actions, processing multimedia objects such as images and sounds. Throughout the course, examples are drawn from a variety of fields in the natural sciences.

CS 18000: Problem Solving And Object-Oriented Programming (4) intro

Problem solving and algorithms, implementation of algorithms in a high level programming language, conditionals, the iterative approach and debugging, collections of data, searching and sorting, solving problems by decomposition, the object-oriented approach, subclasses of existing classes, handling exceptions that occur when the program is running, graphical user interfaces (GUIs), data stored in files, abstract data types, a glimpse at topics from other CS courses.

CS 18200: Foundations Of Computer Science (3) intro

Logic and proofs; sets, functions, relations, sequences and summations; number representations; counting; fundamentals of the analysis of algorithms; graphs and trees; proof techniques; recursion; Boolean logic; finite state machines; pushdown automata; computability and undecidability.

CS 19100: Freshman Resources Seminar (1)

This course is intended to integrate freshman majors in computer sciences into the department, help them adjust to university life, and assist them in developing academic and intellectual survival skills. Weekly recitation sections enable the students to work in teams. Strongly recommended for freshmen.

CS 19300: Tools (1)

This course is designed to introduce new Computer Science students to various programming tools which will aid them in their Computer Science classes, personal projects, and software development job experiences.

CS 19700: Freshman Honors Seminar (1) talks

A seminar dealing with the history, context, and future of computer science. Open only to students in the Computer Sciences Honors Program. The credit may be used only toward free electives.

CS 21100: Competitive Programming I (2) algs

CP1 teaches applied algorithmic ideas and problem solving techniques to solve programming interview and competitive programming questions including usage of basic data structures such as [array, set, map, stack, queue, deque, priority queue], the four main algorithm paradigms: [complete search, greedy, divide and conquer, dynamic programming], other algorithmic ideas including [binary search the answer/bisection, meet-in-the-middle, prefix sum and difference arrays, two pointers, sliding window], and basic graph algorithms covering [strongly/connected components, floodfill, topological sort, shortest paths].

CS 23500: Introduction To Organizational Computing (3)

People and organizations, decision-making, information systems, telecommunications, desktop systems, integration tools, collaboration and groupware, multimedia, authoring multimedia documents, emerging technologies. May not be taken for credit by Computer Science majors.

CS 24000: Programming In C (3) intro

The UNIX environment, C development cycle, data representation, operators, program structure, recursion, macros, C preprocessor, pointers and addresses, dynamic memory allocation, structures, unions, typedef, bit-fields, pointer/structure applications, UNIX file abstraction, file access, low-level I/O, concurrency.

CS 24200: Introduction To Data Science (3) ai

(STAT 24200) This course provides a broad introduction to the field of data science. The course focuses on using computational methods and statistical techniques to analyze massive amounts of data and to extract knowledge. It provides an overview of foundational computational and statistical tools for data acquisition and cleaning, data management and big data systems. The course surveys the complete data science process from data to knowledge and gives students hands-on experience with tools and methods. Basic knowledge of Python required.

CS 24300: Artificial Intelligence Basics (3) ai

This course provides an introduction to foundational areas of artificial intelligence and current techniques for building intelligent systems. As an entry-level course for Artificial Intelligence, the primary goals of this course are: Teach fundamental building blocks of an intelligent system, namely, knowledge representation; learning; model validation, diagnosis, and visualization; reasoning and decision-making; probabilities and uncertainty in AI. Provide students with first-hand experiences in building a working machine learning and an automated reasoning system. Provide an overview of current state-of-the-art technologies in multiple domains of artificial intelligence. Broaden the students’ horizon and spark their interests via learning about exciting applications of artificial intelligence in many aspects of human society.

CS 25000: Computer Architecture (4) intro

Digital logic: transistors, gates, and combinatorial circuits; clocks; registers and register banks; arithmetic-logic units; data representation: big-endian and little-endian integers; ones and twos complement arithmetic; signed and unsigned values; Von-Neumann architecture and bottleneck; instruction sets; RISC and CISC designs; instruction pipelines and stalls; rearranging code; memory and address spaces; physical and virtual memory; interleaving; page tables; memory caches; bus architecture; polling and interrupts; DMA; device programming; assembly language; optimizations; parallelism; data pipelining.

CS 25100: Data Structures And Algorithms (3) intro

Running time analysis of algorithms and their implementations, one-dimensional data structures, trees, heaps, additional sorting algorithms, binary search trees, hash tables, graphs, directed graphs, weighted graph algorithms, additional topics.

CS 25200: Systems Programming (4) sys

Low-level programming; review of addresses, pointers, memory layout, and data representation; text, data, and bss segments; debugging and hex dumps; concurrent execution with threads and processes; address spaces; file names; descriptors and file pointers; inheritance; system calls and library functions; standard I/O and string libraries; simplified socket programming; building tools to help programmers; make and make files; shell scripts and quoting; Unix tools including sed, echo, test, and find; scripting languages such as awk; version control; object and executable files (.o and a.out); symbol tables; pointers to functions; hierarchical directories; and DNS hierarchy; programming embedded systems.

CS 25300: Data Structures And Algorithms For DS/AI (3) algs

This course gives a broad introduction to the most important data structures and algorithms in computer science. The emphasis is on data structures and their use in algorithms relevant for data science and AI and their applications. The course focuses on developing and comparing efficient implementations, assessing suitability of data structures for massive data sets, and understanding effective use, modifications, and extensions.

CS 28400: Professional Practice III (0)

Professional Practice. Permission of instruction required.

CS 28401: Professional Practice Part-Time (0)

Professional Practice Part-Time. The instructor determines the adequacy of the student’s preparation for the work assignment proposed by the prospective employer for the student. Permission of Instructor required.

CS 29000: Topics In Computer Sciences (15) special

Topics vary. Permission of instructor required.

CS 29100: Sophomore Development Seminar (1) special

Presentations by corporate partners about careers in computer science. Presentations by faculty about careers in academia and research. Students learn about upper-division courses, tour research laboratories, and attend job fairs.

CS 29199: Cooperative Experience I (0) special

Professional experience in computer science. Program coordinated by school with cooperation of participating employers. Students submit summary report and company evaluation. Professional Practice students only. Permission of department required.

CS 29299: Cooperative Experience II (0) special

Professional experience in computer science. Program coordinated by school with cooperation of participating employers. Students submit summary report and company evaluation. Professional Practice students only. Permission of department required.

CS 30700: Software Engineering I (3) softeng

An introduction to the methods and tools of software engineering; software life cycle; specification and design of software, software testing, cost and effort estimation; laboratory exercises with design, testing, and other tools.

CS 31100: Competitive Programming II (2) algs

CP2 teaches experienced programmers additional techniques to solve interview and competitive programming problems and builds on material learned in CP1. This includes specific algorithmic techniques such as [shortest paths, topological sort, MST, union find, range queries], advanced algorithms surrounding trees and DAGs, advanced problem types in [dynamic programming, backtracking/simulation, mathematics, string processing], and more. It can be viewed as a programming complement to CS 38100, with some overlap in content.

CS 31400: Numerical Methods (3) math

Iterative methods for solving nonlinear equations; direct and iterative methods for solving linear systems; approximations of functions, derivatives, and integrals; error analysis.

CS 33400: Fundamentals Of Computer Graphics (3) graphics

Fundamental principles and techniques of computer graphics. The course covers the basics of going from a scene representation to a raster image using OpenGL. Specific topics include coordinate manipulations, perspective, basics of illumination and shading, color models, texture maps, clipping and basic raster algorithms, fundamentals of scene constructions. CS 31400 is recommended.

CS 34800: Information Systems (3) sys

File organization and index structures; object-oriented database languages; the relational database model with introductions to SQL and DBMS; hierarchical models and network models with introductions to HDDL, HDML, and DBTG Codasyl; data mining; data warehousing; database connectivity; distributed databases; the client/server paradigm; middleware, including ODBC, JDBC, CORBA, and MOM.

CS 35100: Cloud Computing (3) sys

Introduction to cloud computing. Cloud data center infrastructure, public and private clouds, servers and virtualized servers, data center networks and virtualized networks, virtualized disk, file, and object storage, the concept of scale-out, algorithms and programming systems used in the design and implementation of cloud-native software, especially using containers and orchestration systems, microservices, serverless designs, controller-based designs, edge and fog computing, security in a cloud environment, programming models.

CS 35200: Compilers: Principles And Practice (3) pls

The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but nontrivial programming language. Modules, interfaces, tools. Data structures for tree languages. Lexical analysis, syntax analysis, abstract syntax. Symbol tables, semantic analysis. Translation, intermediate code, basic blocks, traces. Instruction selection, CISC and RISC machines. Liveness analysis, graph coloring register allocation. Supplemental material drawn from garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimization, polymorphism, scheduling and pipelining, memory hierarchies.

CS 35300: Principles Of Concurrency And Parallelism (3) sys

Important concepts, models, algorithms, abstractions, and implementation aspects of concurrent and parallel programs. Topics include: techniques used to describe concurrent programs (e.g., threads, events, co-routines, continuations), abstractions for shared-memory and message-passing programs, relaxed memory models, livelock and deadlock detection, lock-free algorithms, data races and atomicity, scheduling techniques, process calculi, and software transactions.

CS 35400: Operating Systems (3) sys

Introduction to operating systems. Computer system and operating system architectures, processes, inter-process communication, inter-process synchronization, mutual exclusion, deadlocks, memory hierarchy, virtual memory, CPU scheduling, file systems, I/O device management, security.

CS 35500: Introduction To Cryptography (3) math

An introduction to cryptography basics: Classic historical ciphers including Caesar, Vigenere, and Vernam ciphers; modern ciphers including DES, AES, Pohlig-Hellman, and RSA; signatures and digests; key exchange; simple protocols; block and stream ciphers; network-centric protocols.

CS 36000: Software Engineering (3) softeng

The course presents the common forms of the software life cycle, which are used throughout the commercial, industrial, institutional, and even governmental communities when a single development effort is appropriate. We will discuss the nature of software and software projects, software development models, software design, software process maturity, project planning, management, and communication. We will study methods for analysis, design, testing, and implementation of various software systems.

CS 36100: Great Issues In Computer Science (3) impact

This course provides an overview of current and essential professional and ethical issues in computing and their impact on society. Topics specialize in the impact of computing, including algorithmic bias, motives behind design decisions, data ethics, privacy and security, and legal issues. The goal of this course is to equip students with the framework and context necessary to think critically about the impact of computing. Discussions and readings will include current events.

CS 37300: Data Mining And Machine Learning (3) ai

This course will introduce students to the field of data mining and machine learning, which sits at the interface between statistics and computer science. Data mining and machine learning focuses on developing algorithms to automatically discover patterns and learn models of large datasets. This course introduces students to the process and main techniques in data mining and machine learning, including exploratory data analysis, predictive modeling, descriptive modeling, and evaluation.

CS 38001: C++ Programming (1) intro

This course builds on the CS 24000 (Programming In C) course to teach C++ extensions. This 5-week one-credit course teaches C++ programming and helps students improve their understanding of object-oriented programming. It also teaches how to use an Integrated Development Environment (IDE) when programming in C++.

CS 38002: Advanced Java Programming (1) intro

This course builds on the Java course CS 18000 (Problem Solving And Object Oriented Programming) to teach advanced topics in Java. This 5-week one-credit course will teach advanced topics such as Network Programming in Java, JDBC, JNI, and J2EE to write web applications in Java. You will also improve your understanding of Object Oriented Programming.

CS 38003: Python Programming (1) intro

This course teaches the Python programming language assuming that students have already taken a course in computer programming. This 5-week one-credit course teaches the Python language, the most common modules used in Python, as well as how to write Python web applications.

CS 38100: Introduction To The Analysis Of Algorithms (3) algs

Techniques for analyzing the time and space requirements of algorithms. Application of these techniques to sorting, searching, pattern-matching, graph problems, and other selected problems. Brief introduction to the intractable (NP-hard) problems.

CS 39000: Topics In Computer Sciences (15) special

Topics vary. Permission of instructor required.

CS 39100: Junior Resources Seminar (1) impact

This seminar course engages a number of outside speakers who typically present information on the role of research in computer science, how the research components of computer science relate to each other, approaches to software development in industry, different types of application development paradigms, technological trends, and societal, ethical, and legal issues. The credit may be used only toward free electives.

CS 39399: Cooperative Experience III (0) special

Professional experience in computer science. Program coordinated by school with cooperation of participating employers. Students submit summary report and company evaluation. Professional Practice students only. Permission of department required.

CS 39499: Extensive Cooperative Experience IV (0) special

Professional experience in computer science. Program coordinated by school with cooperation of participating employers. Students submit summary report and company evaluation. Professional Practice students only. Permission of department required.

CS 39599: Extensive Cooperative Experience V (0) special

Professional experience in computer science. Program coordinated by school with cooperation of participating employers. Students submit summary report and company evaluation. Professional Practice students only. Permission of department required.

CS 39700: Honors Seminar (0) talks

A seminar for all sophomores, juniors, and seniors in the Computer Sciences Honors Program. Meets eight times each semester under the supervision of the Honors coordinator. The meetings focus on honors research projects, helping students to identify appropriate projects and form groups, and providing a forum for juniors and seniors to report on their projects as required in the honors program.

CS 40700: Software Engineering Senior Project (3) capstone

A capstone course combining all the concepts students have learned in the Software Engineering Track: software and software engineering, working as a team leader and as a team member, Agile Software Development, Scrum Software Development, Version Control, basing software development on reusable technology, developing requirements (User Stories and Use Cases), modelling with classes, design patterns, focusing on users, modelling interactions and behavior, architecting and designing software, testing and inspecting, managing the software development process. This is a project course. Students are organized into 4-6 student teams. Each team completes a full-semester software engineering project. Each team creates a Project Charter, Product Backlog, Design, and for 3 Sprints – Planning Document, Demo, Retrospective Document. The final demo is a formal presentation.

CS 40800: Software Testing (3) softeng

Preliminaries: errors and testing; software quality, requirements, behavior, and correctness; testing, debugging, verification; control flow graphs, dominators; types of testing; Test selection: from requirements, finite state models, and combinatorial designs; regression testing and test minimization; Test adequacy assessment: control and data flow; mutation based; testing tools.

CS 41100: Competitive Programming III (2) algs

CP3 teaches experienced programmers additional techniques to solve competitive programming problems and builds on material learned in CP1 and CP2. This includes algorithmic techniques in topics such as [network flow, computational geometry, graph matching, NP-hard problems]. Primarily, CP3 prepares students to compete in programming contests, which means most class time is focused on simulating contest environments and teaching teamwork and communication alongside problem practice.

CS 42200: Computer Networks (3) sys

Undergraduate-level introduction to computer networks and data communication. Low-level details of media, signals, and bits: time division and frequency division multiplexing; encoding; modulation; bandwidth, throughput, and noise. Packet transmission: Local Area Network (Ethernet, FDDI) and Wide Area Network technologies (ATM); wireless networks; network interconnection with repeaters, bridges, and switches; DSU/CSU; xDSL and cable modems. Internetworking: router-based architecture; IP addressing; address binding with ARP; datagram encapsulation and fragmentation; UDP and TCP, retransmission; protocol ports; ICMP and error handling. Network applications: client/server concept; port demultiplexing; program interface to protocols (API); use by clients and servers; domain name system; TELNET; Web technologies including HTTP, CGI, Java; RPC and middleware; network management.

CS 42600: Computer Security (3) sys

A survey of the fundamentals of information security. Risks and vulnerabilities, policy formation, controls and protection methods, database security, encryption, authentication technologies, host-based and network-based security issues, personnel and physical security issues, issues of law and privacy.

CS 43400: Advanced Computer Graphics (3) graphics

Advanced concepts and techniques of computer graphics. The course covers, in complete detail, going from a scene representation to a raster image without using OpenGL or other graphics packages. The course develops a complete graphics implementation in which the students implement every aspect of the graphics pipeline. This involves a substantial software project in C/C++.

CS 43900: Introduction To Data Visualization (3) sys

The course offers an introduction to the fundamentals principles, design strategies, and techniques needed to visually communicate, explore, and analyze data. The course focuses primarily on the visual representation of inherently non-spatial data (e.g., tables and spreadsheets, graphs and networks, trees, text, and time series), but also considers the visualization of maps and of data in geospatial context.

CS 44000: Large Scale Data Analytics (3) ai

This course provides an integrated view of the key concepts of modern algorithmic data analytics. It focuses on teaching principles and methods needed to analyze large datasets in order to extract novel, transformative insights for the underlying application. The course emphasizes the duality between formulating questions that can be answered by statistical data analysis tools (the statistical perspective) and the algorithmic challenge of actually extracting such answers using available parallel and distributed computational resources from massive datasets. The topics cover three areas: (1) algorithmic concepts necessary for big data analytics, (2) big data systems, including data management and programming, and (3) advanced analytic methods to address characteristics of real-world big data problems.

CS 44100: Data Science Capstone (3) capstone

The Capstone course aims at providing students with an opportunity to integrate their accumulated knowledge and technical and social skills in order to identify and solve realistic or real-world data science problem, with an emphasis on the application domain. Capstone projects are often sponsored by corporate partners or by academic or non-academic research groups. The Capstone course serves as preparation for students entering into the profession of Data Science. Students will conduct a team-based project through the entire data science pipeline, by following the six phases of the CRISP-DM (Cross-Industry Standard Process for Data Mining) methodology. Students get experience in working as teams, participating in project planning, writing reports, and giving presentations.

CS 44800: Introduction To Relational Database Systems (3) sys

An in-depth examination of relational database systems including theory and concepts as well as practical issues in relational databases. Modern database technologies such as object-relational and Web-based access to relational databases. Conceptual design and entity relationship modeling, relational algebra and calculus, data definition and manipulation languages using SQL, schema and view management, query processing and optimization, transaction management, security, privacy, integrity management.

CS 45600: Programming Languages (3) pls

Concepts for structuring data, computation, and whole programs. Object-oriented languages, functional languages, logic- and rule-based languages. Data types, type checking, exception handling, concurrent processes, synchronization, modularity, encapsulation, interfaces, separate compilation, inheritance, polymorphism, dynamic binding, subtyping, overloading, beta-reduction, unification.

CS 45800: Introduction To Robotics (3) ai

Any intelligent robot system interacting with our environment needs to have perception, planning, and control methods in its cognition process. The perception module outlines the robot’s procedures to gather and interpret sensory observations into world models. The underlying planning and control modules use those world models to plan robot behaviors and their interaction with our natural environments. Therefore, this course will cover the fundamental topics in robot perception, planning, and control to design general-purpose robot cognition algorithms. Overall, this course is divided into four modules: Robot perception: This covers fundamental techniques needed for robot localization and mapping from raw 3D sensory data. Robot planning: This module will discuss robot behavior planning techniques such as A*, RRT*, and trajectory optimization. Robot Control: This introduces basic control techniques such as PID controller to execute the robot’s planned behaviors in the real world. Robot Learning: This part will briefly introduce machine learning techniques for robot decision-making and control.

CS 47100: Introduction To Artificial Intelligence (3) ai

Students are expected to spend at least three hours per week gaining experience with artificial intelligence systems and developing software. Basic problem-solving strategies, heuristic search, problem reduction and AND/OR graphs, knowledge representation, expert systems, generating explanations, uncertainty reasoning, game playing, planning, machine learning, computer vision, and programming systems such as Lisp or Prolog.

CS 47300: Web Information Search And Management (3) sys

This course teaches important concepts and knowledge of information retrieval for managing unstructured data such as text data on Web or in emails. At the same time, students will be exposed to a large number of important applications. Students in the course will get hands on experience from homework and a course project. The first part of the course focuses on general concepts/techniques such as stemming, indexing, vector space model, and feedback procedure. The second part of the course shows how to apply the set of techniques on different applications such as Web search, text categorization, and information recommendation.

CS 47500: Human-Computer Interaction (3) humans

The goal of this course is to teach students how to design useful and usable interactive systems that address important needs of people. Students will experience the entire user-centered design life cycle, from need finding to usability evaluation. Topics covered in the course include user-centered design principles, usability heuristics, need-finding methods such as semi-structured interviews and contextual inquiry, quick prototyping techniques, usability evaluation methods such as hallway testing and human-subjects user study, and theories about user interaction and decision making. As we are entering a new era of AI, the course will also include a brief introduction on how to apply the HCI principles and techniques to AI-powered systems. This course is project-based. Students will form project teams among themselves to work on a semester-long project and apply the user-centered design principles, theories, and techniques that they have learned in class to build a useful and usable interactive system such as a mobile application. This course is also highly interactive, including a series of design studios and in-class activities that require active participation, communication, and discussion with other students.

CS 47800: Introduction To Bioinformatics (3) science

Bioinformatics is broadly defined as the study of molecular biological information, targeting particularly the enormous volume of DNA sequence and functional complexity embedded in entire genomes. Topics will include understanding the evolutionary organization of genes (genomics), the structure and function of gene products (proteomics), and the dynamics of gene expression in biological processes (transcriptomics). Inherently, bioinformatics is interdisciplinary, melding various applications of computational science with biology. This jointly taught course introduces analytical methods from biology, statistics and computer science that are necessary for bioinformatics investigations. The course is intended for junior and senior undergraduates from various science backgrounds. Our objective is to develop the skills of both tool users and tool designers in this important new field of research.

CS 48300: Introduction To The Theory Of Computation (3) theory

Turing machines and the Church-Turing thesis; decidability; halting problem; reducibility; undecidable problems; decidability of logical theories; Kolmogorov complexity; time classes; P, NP, NP-complete; space classes; Savitch’s theorem, PSPACE-completeness, NL-completeness; hierarchy theorems; approximation theorems; probabilistic algorithms; applications of complexity to parallel computation and cryptography. Typically offered Fall Spring.

CS 48900: Embedded Systems (3) sys

Software for embedded systems; programming with extreme constraints on memory, storage, and processing power; programming models, including synchronous, asynchronous, and concurrent; programming systems that run forever; use of Finite State Machines (FSMs); review of embedded hardware and available boards; asynchronous and synchronous serial connections (e.g., RS232 and SPI); General Purpose I/O (GPIO) pins; relays, servos, and other peripherals; design for low power; battery characteristics; systems that communicate over computer networks and the Internet; current industry practices; design of embedded projects; working in teams.

CS 49000: Topics In Computer Sciences For Undergraduates (15) special

Supervised reading and reports in various fields.

CS 49700: Honors Research Project (3) capstone

One semester of the project may be counted as one of the seven computer science courses at or above the 300 level required for the bachelor’s degree. One more semester, if approved by the honors coordinator, can be used as a free elective. A group research project directed by Computer Sciences faculty members. Each group must submit a technical report describing its work and the results obtained.

CS 50010: Foundational Principles Of Information Security (3) sys

This course covers foundational principles relevant to information security including data structures, algorithm design, computational complexity, probability theory, number theory, and basics of cryptography.

CS 50011: Introduction To Systems For Information Security (3) sys

The course covers computer systems principles relevant to information security and it serves as a prerequisite for the later courses in the MS in IS program. The material includes features in the C/C++ programming languages for understanding security-critical software vulnerabilities, basic knowledge in computer architecture and assembly languages, knowledge of the compiling process, operating systems, networking, databases, and web applications relevant to information security.

CS 50023: Data Engineering I (1) sys

The course introduces students to the fundamentals of Data Engineering with a focus on tools and computational techniques to gather, construct, manipulate, summarize, and visualize data sets as a means to extract knowledge from the underlying data. Python and Python libraries are used. Completion of the course will allow learners to perform basic data analysis on data sets.

CS 50024: Data Engineering II (1) sys

This course introduces students to the fundamentals of database management systems (DBMS) from a user’s perspective. The principles of modeling an enterprise using Entity-Relationship diagrams and transforming the model into a relational or NoSQL database are illustrated through a range of examples. The SQL language is used to create, query, aggregate, and update a relational database. NOSQL databases and the related data models (column, graph, and document-based) are introduced. Experience in Python Programming is required.

CS 50025: Foundations Of Decision Making (1) math

This course provides an overview of data science methods used for data-driven discovery, extraction of knowledge, and informed decision making. The course covers fundamental computational methods and statistical techniques used to correctly reason about uncertainty, conduct hypothesis tests, infer causal relationships, and apply and evaluate predictive models. The course highlights how sampling biases can impact fairness in decision making. Throughout, students get hands-on experience on how to make correct and explainable inferences from data. Experience in Python Progamming, Probability, Statistics and Linear Algebra is required. Typically offered Fall Spring Summer.

CS 50100: Computing For Science And Engineering (3)

Credit in this course may not be used toward a graduate degree in Computer Sciences. Computational concepts, tools, and skills for computational science and engineering scripting for numerical computing, scripting for file processing, high performance computing, and software development. Project may be required. Typically offered Fall.

CS 50200: Compiling And Programming Systems (3) pls

Basic principles of compilers and compiler design; control of translation, loading, and execution; symbolic coding systems; lexical and syntactic analysis, design and operation of assemblers and macroprocessors; design of interpretive systems. Students are expected to complete a large programming project as part of the course. Typically offered Fall.

CS 50300: Operating Systems (3) sys

Basic principles of operating systems: addressing modes, indexing, relative addressing, indirect addressing, stack maintenance; implementation of multitask systems; control and coordination of tasks, deadlocks, synchronization, mutual exclusion; storage management, segmentation, paging, virtual memory; protection, sharing, access control; file systems; resource management; evaluation and prediction of performance. Students are expected to spend at least three hours per week gaining hands-on experience in using and modifying a small operating system. Typically offered Fall Spring.

CS 50500: Distributed Systems (3) sys

Foundations for building reliable distributed systems, including failure and system models, and basic communication and agreement problems; crash failures, recovery, partition, Byzantine failures; asynchronous systems, failure detectors, communication channels, wireless and sensor networks; software clocks, causality, and cuts. Examples of problems include reliable broadcast consensus, leader election, group communication, and replication. Permission of department required. Typically offered Spring.

CS 51000: Software Engineering (3) softeng

Software life cycles, requirements engineering, software design, design of distributed systems, verification and validation, software architecture, process metrics and models, and research methods in software engineering. Typically offered Spring.

CS 51500: Numerical Linear Algebra (3) math

Direct and iterative solvers of dense and sparse linear systems of equations, numerical schemes for handling symmetric algebraic eigenvalue problems, and the singular-value decomposition and its applications in linear least squares problems.

CS 51501: Parallelism In Numerical Linear Algebra (3) math

This course examines both theoretical and practical aspects of numerical algorithm design and implementation on parallel computing platforms. In particular, it provides an understanding of the tradeoff between arithmetic complexity and management of hierarchical memory structures, roundoff characteristics if different from the sequential schemes, and performance evaluation and enhancement. Applications are derived from a variety of computational science and engineering areas.

CS 51520: Operating Systems (3) sys

This course is about the concepts and principles of modern operation systems. It includes: design and implementation of multi-process systems; process synchronization, mutual exclusion; CPU scheduling, deadlock, memory management, segmentation, paging, virtual memory; storage management, file system management, protection and security, evaluation and prediction of performance. Reading the latest paper about operation systems and presentations are required. Every student should participate in debates based on the case studies of Linux System and Windows 7.

CS 52000: Computational Methods In Optimization (3) math

A treatment of numerical algorithms and software for optimization problems with a secondary emphasis on linear and nonlinear systems of equations: unconstrained and constrained optimization; line search methods; trust region methods; Quasi-Newton methods; linear programming; calculating derivatives; quadratic programming; global optimization, including simulated annealing.

CS 52300: Social, Economic, And Legal Aspects Of Security (3) impact

This course focuses on social, legal, and economic aspects of information security and privacy, also including ethics, policies, and human behavioral issues. The course covers the interactions between non-technological aspects of information security as well as relevant technological aspects. It focuses on how non-technological facets can inform and guide technological choices, and how technological choices can enhance or detract from the broader organizational and societal goals.

CS 52500: Parallel Computing (3) sys

Parallel computing for science and engineering applications: parallel programming and performance evaluation, parallel libraries and problem-solving environments, models of parallel computing and run-time support systems, and selected applications.

CS 52540: Data Mining, Machine Learning And Statistical Analysis (3) ai

This course combines computer science algorithms and statistics analysis for data mining and machine learning. The course introduces rule-based decision tree systems, statistical learning, supervised and unsupervised learning, and multi-layer Neural Networks deep learning. Students will do modeling with C5, Neural Networks and R, and implement multiple algorithms in the programming languages C and Python.

CS 52600: Information Security (3) sys

(CSCI 52600) Basic notions of confidentiality, integrity, availability; authentication models; protection models; security kernels; secure programming; audit; intrusion detection and response; operational security issues; physical security issues; personnel security; policy formation and enforcement; access controls; information flow; legal and social issues; identification and authentication in local and distributed systems; classification and trust modeling; and risk assessment.

CS 52700: Software Security (3) sys

This course focuses on software security fundamentals, secure coding guidelines and principles, and advanced software security concepts. Students will learn to assess and understand threats, learn how to design and implement secure software systems, and get hands-on experience with common security pitfalls.

CS 52800: Network Security (3) sys

The course focuses on the principles and foundations of building secure network systems and on security and privacy challenges in existing and emerging networks. The course compares and analyzes network architectures and network protocols from the physical layer to the access control, network, transport and application layer from an adversarial standpoint to understand how to build more secure protocols that can withstand attacks. Restricted to CS MS and CS PHD students. Significant programming experience and skills are required to complete the projects. Typically offered Spring.

CS 52900: Security Analytics (3) sys

This course focuses on applied data mining, machine learning, data analytics techniques, and their application and relevance in information security. The course covers basic concepts of data mining and machine learning, computation platforms in support of big data analytics including Map-Reduce and Spark, machine learning algorithms such as classification trees, logistic regression, naive Bayes, k Nearest Neighbors, Support Vector Machines, Artificial Neural Networks (including Feed Forward, Convolutional, and Recurrence), the application of these algorithms to security tasks such as Spam/Phishing detection, malware detection, intrusion detection, and situational awareness. The future and potential role of applying machine learning techniques in information and data security is explored.

CS 53000: Introduction To Scientific Visualization (3) graphics

Teaches the fundamentals of scientific visualization and prepares students to apply these techniques in fields such as astronomy, biology, chemistry, engineering, and physics. Emphasis is on the representation of scalar, vector, and tensor fields; data sampling and resampling; and reconstruction using multivariate finite elements (surfaces, volumes, and surfaces on surfaces). Typically offered Fall.

CS 56000: Reasoning About Programs (3) theory

The course focuses on the logical foundations and algorithmic techniques used to ensure program correctness. With an emphasis on automated program verification and synthesis, the course covers classical concepts and techniques such as Hoare logic, abstract interpretation, abstraction-refinement and bounded model checking. The course also exposes students to approaches for program synthesis, a new frontier for program reasoning, such as inductive synthesis, synthesis using version space algebras, constraint-based synthesis and synthesis based on machine-learning techniques. The courses emphasizes both theoretical foundations as well as hands-on experience with verification/synthesis tools and SAT/SMT solvers. Students are expected to have completed undergraduate coursework in Foundations of Computer Science (CS 18200) or equivalent, Systems Programming (CS 25200) or equivalent, and Introduction to the Analysis of Algorithms (CS 38100) or equivalent. Mathematical maturity is expected. Typically offered Fall.

CS 57700: Natural Language Processing (3) ai

This course will cover the key concepts and methods used in modern Natural Language Processing (NLP). Throughout the course several core NLP tasks, such as sentiment analysis, information extraction, syntactic and semantic analysis, will be discussed. The course will emphasize machine-learning and data-driven algorithms and techniques, and will compare several different approaches to these problems in terms of their performance, supervision effort and computational complexity.

CS 57800: Statistical Machine Learning (3) ai

This introductory course will cover many concepts, models, and algorithms in machine learning. Topics include classical supervised learning (e.g., regression and classification), unsupervised learning (e.g., principle component analysis and K-means), and recent development in the machine learning field such as variational Bayes, expectation propagation, and Gaussian processes. While this course will give students the basic ideas and intuition behind modern machine learning methods, the underlying theme in the course is probabilistic inference.

CS 59000: Topics In Computer Sciences (15) special

Directed study for students who wish to undertake individual reading and study on approved topics. Permission of instructor required.

MA 16100: Plane Analytic Geometry And Calculus I (5) math

Introduction to differential and integral calculus of one variable, with applications. Some schools or departments may allow only 4 credit hours toward graduation for this course. Designed for students who have not had at least a one-semester calculus course in high school, with a grade of “A” or “B”. Not open to students with credit in MA 16500. Demonstrated competence in college algebra and trigonometry.

MA 16200: Plane Analytic Geometry And Calculus II (5) math

Continuation of MA 16100. Vectors in two and three dimensions, techniques of integration, infinite series, conic sections, polar coordinates, surfaces in three dimensions. Some schools or departments may allow only 4 credit hours toward graduation for this course.

MA 16500: Analytic Geometry And Calculus I (4) math

Introduction to differential and integral calculus of one variable, with applications. Conic sections. Designed for students who have had at least a one-semester calculus course in high school, with a grade of “A” or “B”, but are not qualified to enter MA 16200 or MA 16600 or the advanced placement courses MA 17300 or the honors calculus course MA 18100. Demonstrated competence in college algebra and trigonometry.

MA 16600: Analytic Geometry And Calculus II (4) math

Continuation of MA 16500. Vectors in two and three dimensions. Techniques of integration, infinite series, polar coordinates, surfaces in three dimensions. Not open to students with credit in MA 16200.

STAT 24200: Introduction To Data Science (3) math

This course provides a broad introduction to the field of data science. The course focuses on using computational methods and statistical techniques to analyze massive amounts of data and to extract knowledge. It provides an overview of foundational computational and statistical tools for data acquisition and cleaning, data management and big data systems. The course surveys the complete data science process from data to knowledge and gives students hands-on experience with tools and methods. Basic knowledge of Python required.

MA 26100: Multivariate Calculus (4) math

Planes, lines, and curves in three dimensions. Differential calculus of several variables; multiple integrals. Introduction to vector calculus. Not open to students with credit in MA 17400 or 27100.

MA 26500: Linear Algebra (3) math

Introduction to linear algebra. Systems of linear equations, matrix algebra, vector spaces, determinants, eigenvalues and eigenvectors, diagonalization of matrices, applications. Not open to students with credit in MA 26200, 27200, 35000 or 35100.

MA 26600: Ordinary Differential Equations (3) math

First order equations, second and n’th order linear equations, series solutions, solution by Laplace transform, systems of linear equations. It is preferable but not required to take MA 26500 either first or concurrently. Not open to students with credit in MA 26200, 27200, 36000, 36100, or 36600.

MA 27101: Honors Multivariate Calculus (5) math

This course is the Honors version of MA 26100, Multivariate Calculus; it will also include a review of infinite series. The course is intended for first-year students who have credit for Calculus I and II. There will be a significant emphasis on conceptual explanation, but not on formal proof. Permission of department is required.

MA 34100: Foundations Of Analysis (3) math

An introductory course in rigorous analysis, covering real numbers, sequences, series, continuous functions, differentiation, and Riemann integration. MA 30100 is helpful but not required.

STAT 35000: Introduction To Statistics (3) math

This course provides a data-oriented introduction to applied statistics, covering exploratory data analysis, experimental design, probability distributions, simulation, sampling distributions, and the Central Limit Theorem. Students will learn the fundamentals of statistical inference, including confidence intervals and hypothesis tests for population means, paired and independent comparisons of means, analysis of variance, and regression. The course emphasizes hands-on experience with statistical software and is primarily intended for students majoring in the mathematical sciences.

MA 35100: Elementary Linear Algebra (3) math

Systems of linear equations, finite dimensional vector spaces, matrices, determinants, eigenvalues and eigenvector applications to analytical geometry.

MA 35301: Linear Algebra II (3) math

Theoretical background for methods and results that appear in MA 35100. Inner products, orthogonality, and applications including least squares.

STAT 35500: Statistics For Data Science (3) math

An introduction to methodologies for data analysis and simulation. Populations and sampling. Distributions and summaries of distributions. Algorithms for sampling and resampling. Foundational statistical concepts including confidence intervals, hypothesis testing, correlation. Introduction to classification and regression. Essential use is made of statistical software throughout.

MA 36200: Topics In Vector Calculus (3) math

Multivariate calculus; partial differentiation; implicit function theorems and transformations; line and surface integrals; vector fields; theorems of Gauss, Green, and Stokes. Credit granted for only one of MA 36200 and MA 51000.

MA 36600: Ordinary Differential Equations (4) math

An introduction to ordinary differential equations with emphasis on problem solving and applications. The one-hour computer lab will give students an opportunity for hands-on experience with both the theory and applications of the subject.

MA 38500: Introduction To Logic (3) math

Propositional calculus and predicate calculus with applications to mathematical proofs, valid arguments, switching theory, and formal languages.

MA 41600: Probability (3) math

An introduction to mathematical probability suitable as a preparation for actuarial science, statistical theory, and mathematical modeling. General probability rules, conditional probability and Bayes theorem, discrete and continuous random variables, moments and moment generating functions, joint and conditional distributions, standard discrete and continuous distributions and their properties, law of large numbers and central limit theorem.

STAT 41700: Statistical Theory (3) math

An introduction to the mathematical theory of statistical inference, emphasizing inference for standard parametric families of distributions. Properties of estimators. Maximum likelihood estimation. Sufficient statistics. Hypothesis tests and confidence intervals. Distribution theory for common statistics based on normal distributions, including linear regression. Bayesian Statistics include posterior inference, posterior mean, maximum a-posteriori estimator, credible intervals, and Bayesian hypothesis testing.

STAT 42000: Introduction To Time Series (3) math

An introduction to time series analysis suitable for students of actuarial science, engineering, and the sciences. Model building and forecasting with ARMA and ARIMA models. Basic financial volatility models (ARCH and GARCH). Resampling methods for confidence intervals. Basics of spectral analysis, including spectral density estimation and periodograms.

MA 42100: Linear Programming And Optimization Techniques (3) math

Solution of linear programming problems by the simplex method, duality theory, transportation problems, assignment problems, network analysis, dynamic programming.

MA 43200: Elementary Stochastic Processes (3) math

An introduction to some classes of stochastic processes that arise in probabilistic models of time-dependent random processes. The main stochastic processes studied will be discrete time Markov chains and Poisson processes. Other possible topics covered may include continuous time Markov chains, renewal processes, queueing networks, and martingales.

MA 44000: Honors Real Analysis I (3) math

Real analysis in one and n-dimensional Euclidean spaces. Topics include the completeness property of real numbers, topology of Euclidean spaces, Heine-Borel theorem, convergence of sequences and series in Euclidean spaces, limit superior and limit inferior, Bolzano-Weierstrass theorem, continuity, uniform continuity, limits and uniform convergence of functions, Riemann or Riemann-Stieltjes integrals.

MA 45300: Elements Of Algebra I (3) math

Fundamental properties of integers, polynomials, groups, rings, and fields, with emphasis on problem solving and applications. Not open to students with credit in MA 45000.

STAT 50600: Statistical Programming And Data Management (3) math

Use of the SAS software system for managing statistical data. How to write programs to access, explore, prepare, and analyze data. Using the DATA step and procedures to access, transform, and summarize data. Introduction to the SAS macro language. Prepares students for the base SAS certification exam.

STAT 51100: Statistical Methods (3) math

Descriptive statistics; elementary probability; sampling distributions; inference, testing hypotheses, and estimation; normal, binomial, Poisson, hypergeometric distributions; one-way analysis of variance; contingency tables; regression. For statistics majors and minors, credit should be allowed in no more than one of STAT 30100, STAT 30301, STAT 35000, STAT 35500, STAT 50100, and in no more than one of STAT 50300 and STAT 51100.

STAT 51200: Applied Regression Analysis (3) math

Inference in simple and multiple linear regression, residual analysis, transformations, polynomial regression, model building with real data, nonlinear regression. One-way and two-way analysis of variance, multiple comparisons, fixed and random factors, analysis of covariance. Use of existing statistical computer programs.

STAT 51300: Statistical Quality Control (3) math

A strong background in control charts including adaptations, acceptance sampling for attributes and variables data, standard acceptance plans, sequential analysis, statistics of combinations, moments and probability distributions, applications.

STAT 51400: Design Of Experiments (3) math

Fundamentals, completely randomized design; randomized complete blocks; latin square; multi-classification; factorial; nested factorial; incomplete block and fractional replications for 2n, 3n, 2m x 3n; confounding; lattice designs; general mixed factorials; split plot; analysis of variance in regression models; optimum design. Use of existing statistical programs.

STAT 52200: Sampling And Survey Techniques (3) math

This course covers basic sampling design and analysis techniques. Sampling designs include: simple random, stratified, clustered, multi-staged, and systematic samples. Methods of estimation appropriate to design features and efficiency and costs related to sample design are covered.

STAT 52500: Intermediate Statistical Methodology (3) math

Statistical methods for analyzing data based on general/generalized linear models, including linear regression, analysis of variance (ANOVA), analysis of covariance (ANCOVA), random and mixed effects models, and logistic/loglinear regression models. Application of these methods to real-world problems using SAS statistical software.

ECE 30100: Signals And Systems (3) engr

Classification, analysis and design of systems in both the time- and frequency-domains. Continuous-time linear systems: Fourier Series, Fourier Transform, bilateral Laplace Transform. Discrete-time linear systems: difference equations, Discrete-Time Fourier Transform, bilateral Z-Transform. Sampling, quantization, and discrete-time processing of continuous-time signals. Discrete-time nonlinear systems: median-type filters, threshold decomposition. System design examples such as the compact disc player and AM radio.

EPCS 41100: Senior Design Participation In EPICS (1)

Continuation of EPICS courses. Seniors using EPCS 41100 to fulfill capstone or design requirements where approved for their major may be required to satisfy additional course requirements specified by their degree program. EPCS 41100 is offered for 1 credit. The EPICS procedures manual provides information on expected relative workload for EPCS 41100 and EPCS 41200 students. Seniors are responsible for the management tasks of planning and organizing their team project activity. They are expected to contribute expertise from their discipline to the design of the team’s projects throughout most of the design process phases of problem identification, specification development, design, production, and deployment. Seniors will also meet with the customer and mentor the first year, sophomores and juniors. May not be taken concurrently with EPCS 41200.

EPCS 41200: Senior Design Participation In EPICS (2)

Continuation of EPICS courses. Seniors using EPCS 41200 to fulfill capstone or design requirements where approved for their major may be required to satisfy additional course requirements specified by their degree program. EPCS 41200 is offered for 2 credits. The EPICS procedures manual provides information on expected relative workload for EPCS 41100 and EPCS 41200 students. Seniors are responsible for the management tasks of planning and organizing their team project activity. They are expected to contribute expertise from their discipline to the design of the team’s projects throughout most of the design process phases of problem identification, specification development, design, production, and deployment. Seniors will also meet with the customer and mentor the first year, sophomores and juniors. May not be taken concurrently with EPCS 41100.

IE 33500: Operations Research - Optimization (3)

Introduction to deterministic optimization modeling and algorithms in operations research. Emphasis on formulation and solution of linear programs, networks flows, and integer programs.

IE 33600: Operations Research - Stochastic Models (3)

Introduction to probabilistic models in operations research. Emphasis on Markov chains, Poisson processes, and their application to queuing systems.