COMP SCI/​L I S  102 — INTRODUCTION TO COMPUTING

3 credits.

Provides a broad overview of computing at an introductory level, including topics such as security, robotics, and artificial intelligence. Increases understanding of how computers work and how algorithms solve problems. Design and implement creative applications in an introductory coding environment. Provides a broad overview of computing and algorithms without an emphasis on programming.

COMP SCI 200 — PROGRAMMING I

3 credits.

Learn the process of incrementally developing small (200-500 lines) programs along with the fundamental Computer Science topics. These topics include: problem abstraction and decomposition, the edit-compile-run cycle, using variables of primitive and more complex data types, conditional and loop-based flow control, basic testing and debugging techniques, how to define and call functions (methods), and IO processing techniques. Also teaches and reinforces good programming practices including the use of a consistent style, and meaningful documentation. Intended for students who have no prior programming experience.

COMP SCI 220 — DATA SCIENCE PROGRAMMING I

4 credits.

Introduction to Data Science programming using Python. No previous programming experience required. Emphasis on analyzing real datasets in a variety of forms and visual communication.

COMP SCI/​MATH  240 — INTRODUCTION TO DISCRETE MATHEMATICS

3 credits.

Basic concepts of logic, sets, partial order and other relations, and functions. Basic concepts of mathematics (definitions, proofs, sets, functions, and relations) with a focus on discrete structures: integers, bits, strings, trees, and graphs. Propositional logic, Boolean algebra, and predicate logic. Mathematical induction and recursion. Invariants and algorithmic correctness. Recurrences and asymptotic growth analysis. Fundamentals of counting.

COMP SCI/​E C E  252 — INTRODUCTION TO COMPUTER ENGINEERING

3 credits.

Logic components built with transistors, rudimentary Boolean algebra, basic combinational logic design, basic synchronous sequential logic design, basic computer organization and design, introductory machine- and assembly-language programming.

COMP SCI 270 — FUNDAMENTALS OF HUMAN-COMPUTER INTERACTION

3 credits.

User-centered software design including principles and methods for understanding user needs, designing and prototyping interface solutions, and evaluating their usability covered through lectures and hands-on in-class activities. Meets with COMP SCI 570.

COMP SCI 298 — DIRECTED STUDY IN COMPUTER SCIENCE

1-3 credits.

Undergraduate directed study in computer sciences.

COMP SCI 300 — PROGRAMMING II

3 credits.

Introduction to Object-Oriented Programming using classes and objects to solve more complex problems. Introduces array-based and linked data structures: including lists, stacks, and queues. Programming assignments require writing and developing multi-class (file) programs using interfaces, generics, and exception handling to solve challenging real world problems. Topics reviewed include reading/writing data and objects from/to files and exception handling, and command line arguments. Topics introduced: object-oriented design; class vs. object; create and define interfaces and iterators; searching and sorting; abstract data types (List,Stack,Queue,PriorityQueue(Heap),Binary Search Tree); generic interfaces (parametric polymorphism); how to design and write test methods and classes; array based vs. linked node implementations; introduction to complexity analysis; recursion.

COMP SCI 304 — WES-CS GROUP MEETING

0-1 credits.

Small group meetings for Wisconsin Emerging Scholars - Computer Science (WES-CS) students. Meets in small groups to work together on problems related to the COMP SCI 200 course material. For information about WES-CS membership, contact the computer sciences department.

COMP SCI 310 — PROBLEM SOLVING USING COMPUTERS

3 credits.

Gives students an introduction to computer and analytical skills to use in their subsequent course work and professional development. Discusses several methods of using computers to solve problems, including elementary programming techniques, symbolic manipulation languages, and software packages. Techniques will be illustrated using sample problems drawn from elementary engineering. Emphasis is on introduction of algorithms with the use of specific tools to illustrate the methods.

COMP SCI 319 — DATA SCIENCE PROGRAMMING I FOR RESEARCH

3 credits.

Introduction to Data Science programming using Python. In addition to a survey of programming basics (control flow and data structures), web scraping, database queries, and tabular analysis will be introduced. Projects will emphasize analyzing real datasets in a variety of forms and visual communication using plotting tools. Similar to COMP SCI 220 but the pedagogical style of the projects will be adapted to graduate students in fields other than computer science and data science. No previous programming experience required.

COMP SCI 320 — DATA SCIENCE PROGRAMMING II

4 credits.

Intermediate approach to Data Science programming using Python. Experience with basic tabular analysis in Python is assumed. Learn to implement data structures (e.g., graphs) to efficiently represent datasets. Software-engineering tools such as version control and Python virtual environments will be introduced, with an emphasis on reproducibility of analysis. Tracing and A/B testing will be introduced as techniques for generating meaningful datasets. Introduces basic classification, clustering, optimization, and simulation techniques. Plotting and visual communication will be emphasized throughout the course.

COMP SCI/​E C E  352 — DIGITAL SYSTEM FUNDAMENTALS

3 credits.

Logic components, Boolean algebra, combinational logic analysis and synthesis, synchronous and asynchronous sequential logic analysis and design, digital subsystems, computer organization and design.

COMP SCI/​E C E  354 — MACHINE ORGANIZATION AND PROGRAMMING

3 credits.

An introduction to fundamental structures of computer systems and the C programming language with a focus on the low-level interrelationships and impacts on performance. Topics include the virtual address space and virtual memory, the heap and dynamic memory management, the memory hierarchy and caching, assembly language and the stack, communication and interrupts/signals, compiling and assemblers/linkers.

COMP SCI 368 — LEARNING A PROGRAMMING LANGUAGE

1 credit.

For students interested in learning a particular programming language. Focuses on a specific language offered at one of three levels: beginner, intermediate, and advanced. Students may repeat the course if the topic title is different.

COMP SCI 400 — PROGRAMMING III

3 credits.

The third course in our programming fundamentals sequence. It presumes that students understand and use functional and object-oriented design and abstract data types as needed. This course introduces balanced search trees, graphs, graph traversal algorithms, hash tables and sets, and complexity analysis and about classes of problems that require each data type. Students are required to design and implement using high quality professional code, a medium sized program, that demonstrates knowledge and use of latest language features, tools, and conventions. Additional topics introduced will include as needed for projects: inheritance and polymorphism; anonymous inner classes, lambda functions, performance analysis to discover and optimize critical code blocks. Students learn about industry standards for code development. Students will design and implement a medium size project with a more advanced user-interface design, such as a web or mobile application with a GUI and event- driven implementation; use of version-control software.

COMP SCI 402 — INTRODUCING COMPUTER SCIENCE TO K-12 STUDENTS

2 credits.

Work in teams to lead Computer Science clubs and workshops for K-12 students at sites in the Madison area. Design and lead activities to help K-12 students learn computational thinking and computer programming.

COMP SCI/​STAT  403 — INTERNSHIP COURSE IN COMP SCI AND DATA SCIENCE

1 credit.

Enables students with outside internships to earn academic credit connected to their work experience related to the Computer Sciences or Data Science programs.

COMP SCI 407 — FOUNDATIONS OF MOBILE SYSTEMS AND APPLICATIONS

3 credits.

Design and implementation of applications, systems, and services for mobile platforms with (i) constraints, such as limited processing, memory, energy, interfaces, variable bandwidth, and high mobility, and (ii) features, such as touchscreens, cameras, electronic compasses, GPS, and accelerometers.

COMP SCI 412 — INTRODUCTION TO NUMERICAL METHODS

3 credits.

Interpolation, solution of linear and nonlinear systems of equations, approximate integration and differentiation, numerical solution of ordinary differential equations, Data fitting (such as least squares) by polynomials and splines. Knowledge of matrix algebra recommended, such as MATH 340.

COMP SCI/​I SY E/​MATH  425 — INTRODUCTION TO COMBINATORIAL OPTIMIZATION

3 credits.

Focuses on optimization problems over discrete structures, such as shortest paths, spanning trees, flows, matchings, and the traveling salesman problem. We will investigate structural properties of these problems, and we will study both exact methods for their solution, and approximation algorithms.

COMP SCI/​E C E/​MATH  435 — INTRODUCTION TO CRYPTOGRAPHY

3 credits.

Cryptography is the art and science of transmitting digital information in a secure manner. Provides an introduction to its technical aspects.

COMP SCI/​STAT  471 — INTRODUCTION TO COMPUTATIONAL STATISTICS

3 credits.

Classical statistical procedures arise where closed-form mathematical expressions are available for various inference summaries (e.g. linear regression; analysis of variance). A major emphasis of modern statistics is the development of inference principles in cases where both more complex data structures are involved and where more elaborate computations are required. Topics from numerical linear algebra, optimization, Monte Carlo (including Markov chain Monte Carlo), and graph theory are developed, especially as they relate to statistical inference (e.g., bootstrapping, permutation, Bayesian inference, EM algorithm, multivariate analysis).

COMP SCI/​MATH/​STAT  475 — INTRODUCTION TO COMBINATORICS

3 credits.

Problems of enumeration, distribution, and arrangement. Inclusion-exclusion principle. Generating functions and linear recurrence relations. Combinatorial identities. Graph coloring problems. Finite designs. Systems of distinct representatives and matching problems in graphs. Potential applications in the social, biological, and physical sciences. Puzzles. Problem solving.

COMP SCI/​CURRIC  502 — THEORY AND PRACTICE IN COMPUTER SCIENCE EDUCATION

1 credit.

Computer science educational pedagogy and general teaching practices. Practical experience gained through tutoring students. Knowledge of object-oriented programming required.

COMP SCI/​E C E  506 — SOFTWARE ENGINEERING

3 credits.

Ideas and techniques for designing, developing, and modifying large software systems. Topics include software engineering processes; requirements and specifications; project team organization and management; software architectures; design patterns; testing and debugging; and cost and quality metrics and estimation. Students will work in large teams on a substantial programming project.

COMP SCI/​MATH  513 — NUMERICAL LINEAR ALGEBRA

3 credits.

Direct and iterative solution of linear and nonlinear systems and of eigenproblems. LU and symmetric LU factorization. Complexity, stability, and conditioning. Nonlinear systems. Iterative methods for linear systems. QR-factorization and least squares. Eigenproblems: local and global methods.

COMP SCI/​MATH  514 — NUMERICAL ANALYSIS

3 credits.

Polynomial forms, divided differences. Polynomial interpolation. Polynomial approximation: uniform approximation and Chebyshev polynomials, least-squares approximation and orthogonal polynomials. Numerical differentiation and integration. Splines, B-splines and spline approximation. Numerical methods for solving initial and boundary value problems for ordinary differential equations.

COMP SCI/​DS/​I SY E  518 — WEARABLE TECHNOLOGY

3 credits.

Gives students hands-on experience in building wearable computing platforms. Designed for students who have a background in textiles and apparel design, computer science, engineering or media arts. By the completion of the course students will have fundamental knowledge of electronic circuitry, programming, and "maker skills".

COMP SCI 520 — INTRODUCTION TO THEORY OF COMPUTING

3 credits.

Basics about the notion, capabilities, and limitations of computation: elements of finite automata and regular languages, computability theory, and computational complexity theory. Additional topics include context-free grammars and languages, and complexity-theoretic cryptography.

COMP SCI/​E C E/​I SY E  524 — INTRODUCTION TO OPTIMIZATION

3 credits.

Introduction to mathematical optimization from a modeling and solution perspective. Formulation of applications as discrete and continuous optimization problems and equilibrium models. Survey and appropriate usage of basic algorithms, data and software tools, including modeling languages and subroutine libraries.

COMP SCI/​I SY E/​MATH/​STAT  525 — LINEAR OPTIMIZATION

3 credits.

Introduces optimization problems whose constraints are expressed by linear inequalities. Develops geometric and algebraic insights into the structure of the problem, with an emphasis on formal proofs. Presents the theory behind the simplex method, the main algorithm used to solve linear optimization problems. Explores duality theory and theorems of the alternatives.

COMP SCI/​I SY E  526 — ADVANCED LINEAR PROGRAMMING

3 credits.

Review of linear programming. Polynomial time methods for linear programming. Quadratic programs and linear complementarity problems and related solution techniques. Solution sets and their continuity properties. Error bounds for linear inequalities and programs. Parallel algorithms for linear and quadratic programs.

COMP SCI/​E C E/​M E  532 — MATRIX METHODS IN MACHINE LEARNING

3 credits.

Linear algebraic foundations of machine learning featuring real-world applications of matrix methods from classification and clustering to denoising and data analysis. Mathematical topics include: linear equations, regression, regularization, the singular value decomposition, and iterative algorithms. Machine learning topics include: the lasso, support vector machines, kernel methods, clustering, dictionary learning, neural networks, and deep learning. Previous exposure to numerical computing (e.g. Matlab, Python, Julia, R) required.

COMP SCI/​E C E  533 — IMAGE PROCESSING

3 credits.

Mathematical representation of continuous and digital images; models of image degradation; picture enhancement, restoration, segmentation, and coding; pattern recognition, tomography.

COMP SCI 534 — COMPUTATIONAL PHOTOGRAPHY

3 credits.

Study of sensing and computational techniques that enhance or extend the capabilities of digital photography by using methods from computer vision and computer graphics to create new visual representations. Algorithms for analyzing, improving, manipulating, combining, and synthesizing images.

COMP SCI 536 — INTRODUCTION TO PROGRAMMING LANGUAGES AND COMPILERS

3 credits.

Introduction to the theory and practice of compiler design. Comparison of features of several programming languages and their implications for implementation techniques. Several programming projects required.

COMP SCI 537 — INTRODUCTION TO OPERATING SYSTEMS

4 credits.

Input-output hardware, interrupt handling, properties of magnetic tapes, discs and drums, associative memories and virtual address translation techniques. Batch processing, time sharing and real-time systems, scheduling resource allocation, modular software systems, performance measurement and system evaluation.

COMP SCI 538 — INTRODUCTION TO THE THEORY AND DESIGN OF PROGRAMMING LANGUAGES

3 credits.

Design and theory of programming languages: procedural, object-oriented, functional and logic paradigms. Serial and concurrent programming. Execution models and formal specification techniques.

COMP SCI/​E C E/​M E  539 — INTRODUCTION TO ARTIFICIAL NEURAL NETWORKS

3 credits.

Theory and applications of artificial neural networks: multi-layer perceptron, self-organization mapdeep neural network convolutional neural network, recurrent network, support vector machines genetic algorithm, and evolution computing. Applications to control, pattern recognition, prediction, and object detection and tracking.

COMP SCI 540 — INTRODUCTION TO ARTIFICIAL INTELLIGENCE

3 credits.

Principles of knowledge-based search techniques, automatic deduction, knowledge representation using predicate logic, machine learning, probabilistic reasoning. Applications in tasks such as problem solving, data mining, game playing, natural language understanding, computer vision, speech recognition, and robotics.

COMP SCI 542 — INTRODUCTION TO SOFTWARE SECURITY

3 credits.

Teaches the security considerations that occur during all steps of the software development life cycle: methodologies for designing secure software, programming using secure programming techniques, in-depth vulnerability assessment methodologies, static and dynamic analysis tools for evaluating software security, and system defenses reducing security threats.

COMP SCI 544 — INTRODUCTION TO BIG DATA SYSTEMS

3 credits.

Deploy and use distributed systems to store and analyze large datasets. Unstructured and structured approaches to storage will be covered. Analysis will involve learning new query languages, processing streaming data, and training machine learning models. Most programming will be done in Python.

COMP SCI 545 — NATURAL LANGUAGE AND COMPUTING

3 credits.

The course covers basic techniques and tools in natural language processing: generative grammars, parsing, dictionary construction, semantic networks, generation of text from a knowledge base, natural language interfacing, and machine translation.

COMP SCI/​E C E  552 — INTRODUCTION TO COMPUTER ARCHITECTURE

3 credits.

The design of computer systems and components. Processor design, instruction set design, and addressing; control structures and microprogramming; memory management, caches, and memory hierarchies; and interrupts and I/O structures. E C E 551 or knowledge of Verilog is recommended.

COMP SCI/​I SY E/​M E  558 — INTRODUCTION TO COMPUTATIONAL GEOMETRY

3 credits.

Introduction to fundamental geometric computations and algorithms, and their use for solving engineering and scientific problems. Computer representations of simple geometric objects and paradigms for algorithm design. Applications from areas of engineering analysis, design and manufacturing, biology, statistics, and other sciences.

COMP SCI 559 — COMPUTER GRAPHICS

3 credits.

Survey of computer graphics. Image representation, formation, presentation, composition and manipulation. Modeling, transformation, and display of geometric objects in two and three dimensions. Representation of curves and surfaces. Rendering, animation, multi-media and visualization. Fluency with vector mathematics (e.g., from MATH 234 or a linear algebra class) is recommended.

COMP SCI/​E C E  561 — PROBABILITY AND INFORMATION THEORY IN MACHINE LEARNING

3 credits.

Probabilistic tools for machine learning and analysis of real-world datasets. Introductory topics include classification, regression, probability theory, decision theory and quantifying information with entropy, relative entropy and mutual information. Additional topics include naive Bayes, probabilistic graphical models, discriminant analysis, logistic regression, expectation maximization, source coding and variational inference.

COMP SCI 564 — DATABASE MANAGEMENT SYSTEMS: DESIGN AND IMPLEMENTATION

4 credits.

What a database management system is; different data models currently used to structure the logical view of the database: relational, hierarchical, and network. Hands-on experience with relational and network-based database systems. Implementation techniques for database systems. File organization, query processing, concurrency control, rollback and recovery, integrity and consistency, and view implementation.

COMP SCI 565 — INTRODUCTION TO DATA VISUALIZATION

3 credits.

Introduction to topics such as perception, cognition, communication, design, implementation, applications, tools, and evaluation. Provides a broad survey of the field and covers fundamental concepts, theory, and tools in data visualization with opportunities for hands-on activities. Gain real-world experience in designing and evaluating visualizations.

COMP SCI 566 — INTRODUCTION TO COMPUTER VISION

3 credits.

Topics include image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, and automatic vehicle navigation. Broad overview of various computer vision and machine learning techniques and sensing and imaging technologies used in computer vision applications. This is a project-based course.

COMP SCI/​B M I  567 — MEDICAL IMAGE ANALYSIS

3 credits.

Present introductory medical image processing and analysis techniques. Topics include medical imaging formats, segmentation, registration, image quantification, classification. Strongly encourage Matlab experience, such as COMP SCI 310 or 368-Matlab.

COMP SCI 570 — INTRODUCTION TO HUMAN-COMPUTER INTERACTION

4 credits.

User-centered software design; (1) principles of and methods for understanding user needs, designing and prototyping interface solutions, and evaluating their usability, (2) their applications in designing web-based, mobile,and embodied interfaces through month long group projects. Meets with Comp Sci 270.

COMP SCI 571 — BUILDING USER INTERFACES

3 credits.

Introduces software development of user interfaces (UIs).  Build competence in implementing UIs using state-of-the-art (1) UI paradigms, such as event-driven interfaces, direct-manipulation interfaces, and dialogue-based interaction; (2) methods for capturing, interpreting, and responding to different forms of user input and states, including pointing, text entry, speech, touch, gestures, user activity, context, and physiological states; and (3) platform-specific UI development APIs, frameworks, and toolkits for multiple platforms including web/mobile/desktop interfaces, natural user interfaces, and voice user interfaces. Learn about the fundamental concepts, technologies, algorithms, and methods in building user interfaces, implement UIs using of state-of-the-art UI development tools, and build a UI development portfolio.

COMP SCI/​B M I  576 — INTRODUCTION TO BIOINFORMATICS

3 credits.

Algorithms for computational problems in molecular biology. Studies algorithms for problems such as: genome sequencing and mapping, pairwise and multiple sequence alignment, modeling sequence classes and features, phylogenetic tree construction, and gene-expression data analysis.

COMP SCI 577 — INTRODUCTION TO ALGORITHMS

4 credits.

Basic paradigms for the design and analysis of efficient algorithms: greed, divide-and-conquer, dynamic programming, reductions, and the use of randomness. Computational intractability including typical NP-complete problems and ways to deal with them.

COMP SCI 578 — CONTEST-LEVEL PROGRAMMING

1 credit.

Training in computer programming for competitions: assessing the coding difficulty and complexity of computational problems, recognizing the applicability of known algorithms, fast coding and testing, team work. COMP SCI 577 is suggested but not required.

COMP SCI/​DS  579 — VIRTUAL REALITY

3 credits.

Introduces students to the field of virtual reality and focuses on creating immersive, interactive virtual experiences. Survey topics include historical perspectives on virtual reality technology, computer graphics and 3D modeling, human perception and psychology, human computer interaction and user interface design. This course is designed for students with backgrounds in Computer Science, Engineering, Art, Architecture and Design. Students will work in interdisciplinary teams on projects, culminating in a final event that will be showcased to the public. While not an official uisite, the class will be technologically motivated; therefore students should be comfortable learning new software. The class will utilize publicly available game design software which provides tools and services for the creation of interactive content. While not necessary, students may find it helpful to have taken classes in programming and computer graphics (such COMP SCI 559: Computer Graphics) or in 3D modeling (such as ART 429: 3D Digital Studio I or DS 242: Visual Communication II).

COMP SCI/​L I S  611 — USER EXPERIENCE DESIGN 1

3 credits.

Introduction to the user experience design including key stages of the design process, design ethics, and the methods and tools involved at each stage of design. Conduct formative research on clients, users, use contexts and tasks. Gain experience with user research methodologies and learn to create intermediate design tools such as personas. Develop and present a design proposal for a chosen project.

COMP SCI/​L I S  612 — USER EXPERIENCE DESIGN 2

3 credits.

Advanced study of UX design. Introduces processes of ideation, key concepts of visual design, conceptual and interaction design, low and high-resolution prototyping of design techniques. Applications include drafting designs based on user models and initial testing of prototypes.

COMP SCI/​L I S  613 — USER EXPERIENCE DESIGN 3

3 credits.

Conduct formal evaluations of the user experience (UX) or usability of a digital system. Gain familiarity with the evaluation and research process including key stages, tasks for each stage, common data collection and analysis methods, and common tools employed in the field. Gain experience with a variety of UX evaluation approaches. Collect pilot data and develop a proposal for further UX testing.

COMP SCI/​L I S  614 — USER EXPERIENCE DESIGN CAPSTONE

1 credit.

Applies a design studio critique approach to produce a learning environment of collaborative and interdisciplinary peer critique and learning, in addition to provide expert feedback and suggestions. Present and defend the latest iteration of the user experience design project developed in earlier courses while learning about the professions associated with digital user experience design.

COMP SCI/​I SY E  635 — TOOLS AND ENVIRONMENTS FOR OPTIMIZATION

3 credits.

Formulation and modeling of applications from computer sciences, operations research, business, science and engineering involving optimization and equilibrium models. Survey and appropriate usage of software tools for solving such problems, including modeling language use, automatic differentiation, subroutine libraries and web-based optimization tools and environments.

COMP SCI 638 — UNDERGRADUATE TOPICS IN COMPUTING

1-4 credits.

Selected topics in computing. Each offering of the course will cover a topic selected by the instructor and may cover one or more topics from all of computer science.

COMP SCI 639 — UNDERGRADUATE ELECTIVE TOPICS IN COMPUTING

3-4 credits.

Selected topics in computing. Each offering of the course will cover a topic selected by the instructor. Offerings of this course will provide sufficient depth into their subject to count as electives to meet CS Major requirements.

COMP SCI 640 — INTRODUCTION TO COMPUTER NETWORKS

3 credits.

Architecture of computer networks and network protocols, protocol layering, reliable transmission, congestion control, flow control, naming and addressing, unicast and multicast routing, network security, network performance widely used protocols such as Ethernet, wireless LANs, IP, TCP, and HTTP.

COMP SCI 642 — INTRODUCTION TO INFORMATION SECURITY

3 credits.

Senior level undergraduate course covering various topics on information security. Covers a wide range of topics, such as cryptographic primitives, security protocols, system security, and emerging topics. Elementary knowledge of mathematical logic and discrete probability theory needed, such as MATH/​COMP SCI  240.

COMP SCI 681 — SENIOR HONORS THESIS

3 credits.

Individual study for seniors completing theses for honors in the Computer Sciences major as arranged with a faculty member.

COMP SCI 682 — SENIOR HONORS THESIS

3 credits.

Individual study for seniors completing theses for honors in the Computer Sciences major as arranged with a faculty member. Continuation of COMP SCI 681

COMP SCI 691 — SENIOR THESIS

2-3 credits.

Individual study for seniors completing theses as arranged with a faculty member.

COMP SCI 692 — SENIOR THESIS

2-3 credits.

Individual study for seniors completing theses as arranged with a faculty member, continuation of COMP SCI 691

COMP SCI 698 — DIRECTED STUDY

1-6 credits.

Directed study projects for juniors and seniors as arranged with a faculty member.

COMP SCI 699 — DIRECTED STUDY

1-6 credits.

Directed study projects for juniors and seniors as arranged with a faculty member.

COMP SCI 701 — CONSTRUCTION OF COMPILERS

3 credits.

Principles of the design and implementation of programming languages. Topics include: Principles of compilation, static program analysis, compilation methods to support profiling, and code-generation methods. Knowledge of programming languages and compiler design strongly encouraged, such as COMP SCI 536.

COMP SCI 702 — GRADUATE COOPERATIVE EDUCATION

1-2 credits.

A full-time cooperative experience (10 or 5 week option) in computer science in a commercial, government, or nonprofit setting, usually in the form of an internship. The work will be monitored by a graduate advisor from the faculty of the Department of Computer Sciences. 10 week option for 2 credits, 5 week option for 1 credit.

COMP SCI 703 — PROGRAM VERIFICATION AND SYNTHESIS

3 credits.

Formal methods for program verification. Model-checking techniques; linear temporal logic; computational tree logic; logic/automata connection; bisimulations; probabilistic model-checking. Special topics include: program synthesis, verification and synthesis of privacy properties. Knowledge of programming languages and compiler design strongly encouraged, such as COMP SCI 536.

COMP SCI 704 — PRINCIPLES OF PROGRAMMING LANGUAGES

3 credits.

Introduction to principles of advanced programming languages and programming-language theory. Topics include: lambda-calculus, functional languages, polymorphic functions, type inference, structural induction, lazy evaluation, operational semantics, denotational semantics, and axiomatic semantics. Students are strongly encouraged to have knowledge of programming languages, such as from COMP SCI 536.

COMP SCI 706 — ANALYSIS OF SOFTWARE ARTIFACTS

3 credits.

Advanced course covering various analysis techniques used in software engineering. Covers techniques for analyzing various software artifacts. Some of the topics that will be covered are: model checking, testing, program analysis, requirements analysis, and safety analysis. Students are strongly encouraged to have knowledge of programming languages and compiler design, such as COMP SCI 536, and a basic knowledge of mathematical logic.

COMP SCI/​E C E  707 — MOBILE AND WIRELESS NETWORKING

3 credits.

Design and implementation of protocols, systems, and applications for mobile and wireless networking, particularly at the media access control, network, transport, and application layers. Focus is on the unique problems and challenges presented by the properties of wireless transmission, various device constraints such as limited battery power, and node mobility. Knower of computer networking is strongly encouraged, such as from COMP SCI 640 or E C E 537.

COMP SCI 710 — COMPUTATIONAL COMPLEXITY

3 credits.

Study of the capabilities and limitations of efficient computation. Relationships between models representing capabilities such as parallelism, randomness, quantum effects, and non-uniformity; and models based on the notions of nondeterminism, alternation, and counting, which capture the complexity of important problems. Knowledge of the theory of computation is strongly encouraged, such as COMP SCI 520.

COMP SCI/​MATH  714 — METHODS OF COMPUTATIONAL MATHEMATICS I

3 credits.

Development of finite difference methods for hyperbolic, parabolic and elliptic partial differential equations. Analysis of accuracy and stability of difference schemes. Direct and iterative methods for solving linear systems. Introduction to finite volume methods. Applications from science and engineering. Students are strongly encouraged to have programming skills (e.g. COMP SCI 200) and some undergraduate numerical analysis (e.g. MATH/​COMP SCI  514 or COMP SCI 412), analysis and differential equations (e.g. MATH 322 and MATH 521) and linear algebra (e.g. MATH 341).

COMP SCI/​MATH  715 — METHODS OF COMPUTATIONAL MATHEMATICS II

3 credits.

Introduction to spectral methods (Fourier, Chebyshev, Fast Fourier Transform), finite element methods (Galerkin methods, energy estimates and error analysis), and mesh-free methods (Monte-Carlo, smoothed-particle hydrodynamics) for solving partial differential equations. Applications from science and engineering. Applications from science and engineering. Students are strongly encouraged to have programming skills (e.g. COMP SCI 200), undergraduate numerical analysis (e.g. MATH/​COMP SCI  514 or COMP SCI 412), analysis (MATH 322 and math 521) and linear algebra (e.g. MATH 341 or equiv.)

COMP SCI/​I SY E  719 — STOCHASTIC PROGRAMMING

3 credits.

Stochastic programming is concerned with decision making in the presence of uncertainty, where the eventual outcome depends on a future random event. Topics include modeling uncertainty in optimization problems, risk measures, stochastic programming algorithms, approximation and sampling methods, and applications. Students are strongly encouraged to have knowledge of linear programming (e.g., MATH/​COMP SCI/​I SY E/​STAT  525) and probability and statistics (e.g., MATH/​STAT  431). Knowledge of integer optimization (MATH/​COMP SCI/​I SY E  728) is helpful, but not required.

COMP SCI/​B M I/​E C E/​MED PHYS  722 — COMPUTATIONAL OPTICS AND IMAGING

3 credits.

Computational imaging includes all imaging methods that produce images as a result of computation on collected signals. Learn the tools to design new computational imaging methods to solve specific imaging problems. Provides an understanding of the physics of light propagation and measurement, and the computational tools to model it, including wave propagation, ray tracing, the radon transform, and linear algebra using matrix and integral operators and the computational tools to reconstruct an image, including linear inverse problems, neural networks, convex optimization, and filtered back-projection. Covers a variety of example computational imaging techniques and their applications including coded apertures, structured illumination, digital holography, computed tomography, imaging through scattering media, compressed sensing, and non-line-of-sight imaging.

COMP SCI/​I SY E  723 — DYNAMIC PROGRAMMING AND ASSOCIATED TOPICS

3 credits.

General and special techniques of dynamic programming developed by means of examples. Shortest-path algorithms. Deterministic equipment replacement models. Resource allocation problem. Traveling-salesman problem. Knapsack problem. Analysis of inventory systems. General stochastic formulations. Markovian decision processes. Students are strongly encouraged to have knowledge of mathematical optimization (e.g., COMP SCI/​I SY E/​MATH/​STAT  525, I SY E 623, COMP SCI/​I SY E/​MATH/​STAT  726), knowledge of analysis (e.g., MATH/​STAT  431 or 521) and programming ability (e.g., COMP SCI 200 or 301)

COMP SCI/​I SY E/​MATH/​STAT  726 — NONLINEAR OPTIMIZATION I

3 credits.

Theory and algorithms for nonlinear optimization, focusing on unconstrained optimization. Line-search and trust-region methods; quasi-Newton methods; conjugate-gradient and limited-memory methods for large-scale problems; derivative-free optimization; algorithms for least-squares problems and nonlinear equations; gradient projection algorithms for bound-constrained problems; and simple penalty methods for nonlinearly constrained optimization. Students are strongly encouraged to have knowledge of linear algebra and familiarity with basic mathematical analysis.

COMP SCI/​I SY E  727 — CONVEX ANALYSIS

3 credits.

Convex sets in finite-dimensional spaces: relative interiors, separation, set operations. Convex functions: conjugacy, subdifferentials and directional derivations, functional operations, Fenchel-Rockafellar duality. Applications to operations research and related areas. Students taking this course are strongly encouraged to have had a course in basic analysis (e.g. MATH 521) and a course in linear algebra (e.g., MATH 340).

COMP SCI/​I SY E/​MATH  728 — INTEGER OPTIMIZATION

3 credits.

Introduces optimization problems over integers, and surveys the theory behind the algorithms used in state-of-the-art methods for solving such problems. Special attention is given to the polyhedral formulations of these problems, and to their algebraic and geometric properties. Applicability of Integer Optimization is highlighted with applications in combinatorial optimization. Key topics include: formulations, relaxations, polyhedral theory, cutting planes, decomposition, enumeration. Students are strongly encouraged to have knowledge of Linear Programming (e.g., MATH/​COMP SCI/​I SY E/​STAT  525), including algorithms, duality and polyhedral theory.

COMP SCI/​I SY E/​MATH  730 — NONLINEAR OPTIMIZATION II

3 credits.

Theory and algorithms for nonlinearly constrained optimization. Relevant geometric concepts, including tangent and normal cones, theorems of the alternative, and separation results. Constraint qualifications. Geometric and algebraic expression of first-order optimality conditions. Second-order optimality conditions. Duality. Nonlinear programming algorithms: merit functions and filters; interior-point, augmented Lagrangian, and sequential quadratic programming algorithms.

COMP SCI 736 — ADVANCED OPERATING SYSTEMS

3 credits.

Advanced topics in operating systems, including process communication, resource allocation, multiprocess and network operating systems, kernel philosophies, fault-tolerant systems, virtual machines, high-level language systems, verifiability and proof techniques. Comp Sci 537 or cons inst

COMP SCI 739 — DISTRIBUTED SYSTEMS

3 credits.

Basic concepts; distributed programming; distributed file systems; atomic actions; fault tolerance, transactions, program and data replication, recovery; distributed machine architectures; security and authentication; load balancing and process migration; distributed debugging; distributed performance measurement; distributed simulation techniques; distributed applications; correctness considerations and proof systems.

COMP SCI 740 — ADVANCED COMPUTER NETWORKS

3 credits.

Advanced topics in computer communications networks: congestion and flow control; routing; rate-based protocols; high speed interfaces and technologies: metropolitan area networks; fast packet switching technologies; advanced applications; network services: name service, authentication, resource location. Students are strongly encouraged to have knowledge of computer network design and protocols (e.g., COMP SCI 640)

COMP SCI 744 — BIG DATA SYSTEMS

3 credits.

Issues in the design and implementation of big data processing systems, including: an overview of cluster architecture, key design goals (flexibility, performance and fault tolerance), popular execution frameworks, basic abstractions, and applications (e.g., batch analytics, stream processing, graph processing, and machine learning).

COMP SCI/​E C E  750 — REAL-TIME COMPUTING SYSTEMS

3 credits.

Introduction to the unique issues in the design and analysis of computer systems for real-time applications. Hardware and software support for guaranteeing timeliness with and without failures. Resource management, time-constrained communication, scheduling and imprecise computations, real-time kernels and case studies. Students are strongly encouraged to have knowledge of computer architecture (e.g., E C E/​COMP SCI  552) and operating system functions (e.g., COMP SCI 537)

COMP SCI/​E C E  752 — ADVANCED COMPUTER ARCHITECTURE I

3 credits.

Processor design, computer arithmetic, pipelining, multi-operation processors, vector processors, control units, precise interrupts, main memory, cache memories, instruction set design, stack machines, busses and I/O, protection and security. Students are strongly encouraged to have knowledge of computer architecture (e.g., E C E/​COMP SCI  552).

COMP SCI/​E C E  755 — VLSI SYSTEMS DESIGN

3 credits.

Overview of MOS devices and circuits; introduction to integrated circuit fabrication; topological design of data flow and control; interactive graphics layout; circuit simulation; system timing; organizational and architectural considerations; alternative implementation approaches; design project. E C E 555 or equivalent experience is strongly recommended.

COMP SCI/​E C E  756 — COMPUTER-AIDED DESIGN FOR VLSI

3 credits.

Broad introduction to computer-aided design tools for VLSI, emphasizing implementation algorithms and data structures. Topics covered: design styles, layout editors, symbolic compaction, module generators, placement and routing, automatic synthesis, design-rule checking, circuit extraction, simulation and verification. Students are strongly encourage to have programming skills and to have taken a course in Digital System Fundamentals such as E C E/​COMP SCI  352.

COMP SCI/​E C E  757 — ADVANCED COMPUTER ARCHITECTURE II

3 credits.

Parallel algorithms, principles of parallelism detection and vectorizing compilers, interconnection networks, MIMD machines, processor synchronization, data coherence, multis, dataflow machines, special purpose processors. Students are strongly encouraged to have knowledge of computer architecture (e.g., E C E/​COMP SCI  552).

COMP SCI 758 — ADVANCED TOPICS IN COMPUTER ARCHITECTURE

3 credits.

Advanced topics in computer architecture that explore the implications to architecture of forthcoming evolutionary and revolutionary changes in application demands, software paradigms, and hardware implementation technologies. Students are strongly encouraged to have knowledge of computer architecture (e.g., E C E/​COMP SCI  552).

COMP SCI/​E C E/​E M A/​E P/​M E  759 — HIGH PERFORMANCE COMPUTING FOR APPLICATIONS IN ENGINEERING

3 credits.

An overview of hardware and software solutions that enable the use of advanced computing in tackling computationally intensive Engineering problems. Hands-on learning promoted through programming assignments that leverage emerging hardware architectures and use parallel computing programming languages. Students are strongly encourage to have completed COMP SCI 367 or COMP SCI 400 or to have equivalent experience.

COMP SCI/​E C E  760 — MACHINE LEARNING

3 credits.

Computational approaches to learning: including inductive inference, explanation-based learning, analogical learning, connectionism, and formal models. What it means to learn. Algorithms for learning. Comparison and evaluation of learning algorithms. Cognitive modeling and relevant psychological results.

COMP SCI/​E C E  761 — MATHEMATICAL FOUNDATIONS OF MACHINE LEARNING

3 credits.

Mathematical foundations of machine learning theory and algorithms. Probabilistic, algebraic, and geometric models and representations of data, mathematical analysis of state-of-the-art learning algorithms and optimization methods, and applications of machine learning. Knowledge of probability [such as MATH/​STAT  431 or COMP SCI/​E C E  561] and linear algebra [such as MATH 341 or M E/​COMP SCI/​E C E  532] is required.

COMP SCI 762 — ADVANCED DEEP LEARNING

3 credits.

Explore methods and applications of deep learning. Covers cutting-edge topics, including neural architecture design, robustness and reliability of deep learning, learning with less supervision, lifelong machine learning, deep generative modeling, theoretical understanding of deep learning, and interpretable deep learning.

COMP SCI 763 — SECURITY AND PRIVACY FOR DATA SCIENCE

3 credits.

Security and privacy concerns in data science. Three core subjects will be considered: Differential privacy and algorithmic fairness; Adversarial machine learning; and Applied cryptography, especially with applications to machine learning. In addition, a selection of more advanced topics will be covered. Possible examples include additional notions of privacy, language-based security, robust optimization. A firm grasp of probability/statistics (STAT/​MATH  431) is recommended. Previous exposure to at least one of cryptography (COMP SCI/​E C E/​MATH  435), security (COMP SCI 642), and modern machine learning (COMP SCI/​E C E/​M E  539 or 540) is also recommended.

COMP SCI 764 — TOPICS IN DATABASE MANAGEMENT SYSTEMS

3 credits.

Implementation of database management systems, the impact of new technology on database management systems, back-end database computers, distributed database management systems, concurrency control, and query execution in both distributed and centralized systems, implementation of multiple user views, roll-back and recovery mechanisms, database translation. Students are strongly encouraged to have knowledge of database design (e.g., COMP SCI 564).

COMP SCI 765 — DATA VISUALIZATION

3 credits.

Principles of the visual presentation of data. Survey of Information Visualization, Scientific Visualization, and Visual Analytics. Design and evaluation of visualizations and interactive exploration tools. Introduction to relevant foundations in visual design, human perception, and data analysis. Encodings, layout and interaction. Approaches to large data sets. Visualization of complex data types such as scalar fields, graphs, sets, texts, and multi-variate data. Use of 2D, 3D and motion in data presentations. Implementation issues.

COMP SCI/​E C E  766 — COMPUTER VISION

3 credits.

Fundamentals of image analysis and computer vision; image acquisition and geometry; image enhancement; recovery of physical scene characteristics; shape-from techniques; segmentation and perceptual organization; representation and description of two-dimensional objects; shape analysis; texture analysis; goal-directed and model-based systems; parallel algorithms and special-purpose architectures. Students are strongly encouraged to have basic proficiency in calculus and linear algebra, such as MATH 340, and basic programming such as COMP SCI 300.

COMP SCI/​B M I  767 — COMPUTATIONAL METHODS FOR MEDICAL IMAGE ANALYSIS

3 credits.

Study of computational techniques that facilitate automated analysis, manipulation, denoising, and improvement of large-scale and high resolution medical images. Design and implementation of methods from computer Vision and Machine Learning to efficiently process such image data to answer biologically and clinically meaningful scientific questions. Students are strongly encouraged to have programming skills and basic proficiency in calculus and linear algebra, such as MATH 340.

COMP SCI 769 — ADVANCED NATURAL LANGUAGE PROCESSING

3 credits.

Develop algorithms and mathematical models for natural language processing tasks, including text categorization, information retrieval, speech recognition, machine translation, and information extraction. Focus is on the state-of-the-art computational techniques as they are applied to natural language tasks. Students are strongly encouraged to have knowledge of introductory artificial intelligence (e.g., COMP SCI 540).

COMP SCI/​ED PSYCH/​PSYCH  770 — HUMAN-COMPUTER INTERACTION

3 credits.

Principles of human-computer interaction (HCI); human subjects research methods and procedures, qualitative and quantitative data analysis; and semester-long research project situated in critical domains of HCI, including applications in ubiquitous, affective, assistive, social, and embodied computing.

COMP SCI/​B M I  771 — LEARNING BASED METHODS FOR COMPUTER VISION

3 credits.

Addresses the problems of representation and reasoning for large amounts of visual data, including images and videos, medical imaging data, and their associated tags or text descriptions. Introduces deep learning in the context of computer vision. Covers topics on visual recognition using deep models, such as image classification, object detection, human pose estimation, action recognition, 3D understanding, and medical image analysis. Emphasizes the design of vision and learning algorithms and models, as well as their practical implementations. Strongly recommended to have knowledge in computer vision or machine learning [such as COMP SCI 540] or medical image analysis [such as B M I / COMP SCI/​B M I  567].

COMP SCI/​B M I  775 — COMPUTATIONAL NETWORK BIOLOGY

3 credits.

Introduces networks as a powerful representation in many real-world domains including biology and biomedicine. Encompasses theory and applications of networks, also referred to as graphs, to study complex systems such as living organisms. Surveys the current literature on computational, graph-theoretic approaches that use network algorithms for biological modeling, analysis, interpretation, and discovery. Enables hands-on experience in network biology by implementing computational projects.

COMP SCI/​B M I  776 — ADVANCED BIOINFORMATICS

3 credits.

Advanced course covering computational problems in molecular biology. The course will study algorithms for problems such as: modeling sequence classes and features, phylogenetic tree construction, gene-expression data analysis, protein and RNA structure prediction, and whole-genome analysis and comparisons.

COMP SCI/​E C E  782 — ADVANCED COMPUTER SECURITY AND PRIVACY

3 credits.

Security and privacy issues in software, networks, and hardware systems. Security vulnerabilities, privacy threats, threats modeling, and mitigation strategies. Privacy issues related to user interaction with devices, online systems, and networks. In addition, a selection of more advanced topics will be covered. Possible examples include applied cryptography in the context of systems, security and privacy policies, user authentication, and cyber-physical systems. Builds on prior experiences with one or more of the following: networking, security, modern machine learning, embedded systems, and mobile computing.

COMP SCI 784 — FOUNDATIONS OF DATA MANAGEMENT

3 credits.

Foundational concepts in databases and data management. The first part of the course discusses topics on query languages (conjunctive queries, Datalog), their expressivity and complexity of evaluation. The second part studies advanced topics in modern data management, including data streams, massive parallelism, provenance, uncertain data management and privacy. There are no specific course prerequisites. It is strongly encouraged that the students are familiar with databases and relational algebra (COMP SCI 564 or equivalent). Knowledge of algorithms, complexity theory and probability will also be helpful.

COMP SCI 787 — ADVANCED ALGORITHMS

3 credits.

Advanced paradigms for the design and analysis of efficient algorithms, including the use of randomness, linear programming, and semi-definite programming. Applications to data structures, approximating NP-hard optimization problems, learning, on-line and distributed problems. Students are strongly encouraged to have introductory knowledge of algorithms (e.g., COMP SCI 577)

COMP SCI 790 — MASTER'S THESIS

1-9 credits.

Grad st; Master's candidates only

COMP SCI 799 — MASTER'S RESEARCH

1-9 credits.

COMP SCI 809 — MATHEMATICAL TECHNIQUES IN THE ANALYSIS OF ALGORITHMS

3 credits.

Techniques for quantitative analysis of algorithms. Charging arguments, amortization, probabilistic methods. Adversary and information lower bounds. Use of methods from combinatorics, complex analysis, and asymptotics in obtaining precise analyses of quicksort, chained hashing, and other algorithms. Students are strongly encouraged to have knowledge of algorithms (e.g., COMP SCI 577) or applied math analysis (e.g., MATH 321) and theory of probability (e.g., MATH/​STAT  431).

COMP SCI 812 — ARITHMETIC ALGORITHMS

3 credits.

Survey of algorithms and design paradigms for exact arithmetic, as used in public-key cryptography, computer algebra, and pseudo-random number generation. Topics include primality testing, factorization of integers and polynomials, discrete logarithms, and (optionally) elliptic curves and integer lattices. Students are strongly encourage to have knowledge of basic abstract algebra (e.g., MATH 541), and intermediate programming ability (e.g., COMP SCI 367 or COMP SCI 300).

COMP SCI 838 — TOPICS IN COMPUTING

1-3 credits.

Advanced topics of special interest to students in various areas of Computer Science. Each offering of the course will cover a topic selected by the instructor. Credit varies by offering - check with the department to determine how an offering counts toward degree requirements.

COMP SCI 839 — CORE TOPICS IN COMPUTING

3 credits.

Topics selected from advanced areas.

COMP SCI/​B M I/​PSYCH  841 — COMPUTATIONAL COGNITIVE SCIENCE

3 credits.

Studies the biological and computational basis of intelligence, by combining methods from cognitive science, artificial intelligence, machine learning, computational biology, and cognitive neuroscience. Requires ability to program.

COMP SCI/​E C E/​STAT  861 — THEORETICAL FOUNDATIONS OF MACHINE LEARNING

3 credits.

Advanced mathematical theory and methods of machine learning. Statistical learning theory, Vapnik-Chevronenkis Theory, model selection, high-dimensional models, nonparametric methods, probabilistic analysis, optimization, learning paradigms.

COMP SCI 880 — TOPICS IN THEORETICAL COMPUTER SCIENCE

3 credits.

Advanced topics in algorithms, complexity, and cryptography. The exact topic varies.

COMP SCI 899 — PRE-DISSERTATOR RESEARCH

1-9 credits.

Independent research supervised by a faculty member for students who have completed a master's degree but have not reached dissertator status.

COMP SCI 900 — ADVANCED SEMINAR IN COMPUTER SCIENCE

0-1 credits.

Seminar on recent research on various aspects of computer science.

COMP SCI/​B M E/​B M I/​BIOCHEM/​CBE/​GENETICS  915 — COMPUTATION AND INFORMATICS IN BIOLOGY AND MEDICINE

1 credit.

Participants and outside speakers will discuss current research in computation and informatics in biology and medicine. This seminar is required of all CIBM program trainees.

COMP SCI 990 — DISSERTATION

1-6 credits.

Advanced level mentored reading and research for students with dissertator status.

COMP SCI 999 — DISSERTATOR RESEARCH

1-6 credits.

Advanced level mentored reading and research for dissertators.