Fall Term Schedule
Fall 2026
| Number | Title | Instructor | Time |
|---|
|
CSC 1005-01
Daniel Gildea
7:00PM - 7:00PM
|
|
This course provides PhD students the opportunity to work full-time on their dissertation. Students will make significant progress toward completing degree requirements.
|
|
CSC 1006-01
Daniel Gildea
7:00PM - 7:00PM
|
|
This course provides PhD students the opportunity to work full-time on their dissertation. Students will make significant progress toward completing degree requirements.
|
|
CSC 1007-01
Daniel Gildea
7:00PM - 7:00PM
|
|
This course provides PhD students the opportunity to work full-time on their dissertation. Students will make significant progress toward completing degree requirements.
|
|
CSC 1008-01
Daniel Gildea
7:00PM - 7:00PM
|
|
This course provides PhD students the opportunity to work on their dissertation. Students will make significant progress toward completing degree requirements.
|
|
CSC 1011-01
Daniel Gildea
7:00PM - 7:00PM
|
|
This course provides PhD students the opportunity to work on their dissertation. Students will make progress toward completing degree requirements.
|
|
CSC 131-01
Ted Pawlicki
TR 11:05AM - 12:20PM
|
|
A hands on introduction to 3D computer graphics and animation techniques taught from a user point of view. Topics include 3D modeling, animation, and simulation.
|
|
CSC 160-01
Adam Purtee
TR 4:50PM - 6:05PM
|
|
This experimental course will explore how AI can be safely, ethically, and effectively leveraged by students to enhance their ability to learn. Students will be expected to both collaboratively and independently pursue AI applications within their own domains of interest, and to participate in course discussions. Basic concepts of how AI systems work and how they are built will be covered at a general audience level. This course has no prerequisites and is open to all students.
|
|
CSC 161-01
Monika Polak
TR 11:05AM - 12:20PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-02
Monika Polak
W 9:00AM - 10:15AM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-03
Monika Polak
U 1:30PM - 3:00PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-04
Monika Polak
W 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-05
Monika Polak
M 10:25AM - 11:40AM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-10
Monika Polak
R 2:00PM - 3:15PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-11
Monika Polak
R 4:50PM - 6:05PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-13
Monika Polak
T 3:25PM - 4:40PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-14
Monika Polak
T 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-16
Monika Polak
W 3:25PM - 4:40PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 161-23
Monika Polak
W 2:00PM - 3:15PM
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics.
|
|
CSC 171-01
Eustrat Zhupa
MW 10:25AM - 11:40AM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-03
Eustrat Zhupa
W 2:00PM - 3:15PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-04
Eustrat Zhupa
M 3:25PM - 4:40PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-08
Eustrat Zhupa
W 3:25PM - 4:40PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-09
Eustrat Zhupa
T 2:00PM - 3:15PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-14
Eustrat Zhupa
T 3:25PM - 4:40PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-15
Eustrat Zhupa
T 4:50PM - 6:05PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 171-27
Eustrat Zhupa
M 12:30PM - 1:45PM
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required.
|
|
CSC 172-01
Andrew Read-McFarland
MW 10:25AM - 11:40AM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 172-03
Andrew Read-McFarland
T 6:15PM - 7:30PM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 172-04
Andrew Read-McFarland
W 4:50PM - 6:05PM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 172-05
Andrew Read-McFarland
M 3:25PM - 4:40PM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 172-06
Andrew Read-McFarland
M 4:50PM - 6:05PM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 172-09
Andrew Read-McFarland
R 3:25PM - 4:40PM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 172-18
Andrew Read-McFarland
R 2:00PM - 3:15PM
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion).
|
|
CSC 173-01
George Ferguson
MW 3:25PM - 4:40PM
|
|
An introduction to some of the most important formal models of computation and their application to real-world computing problems.
|
|
CSC 211-01
Zhen Bai
TR 11:05AM - 12:20PM
|
|
The goal of this course is to provide an introductory overview of the concepts, principles, methods and special topics of Human-Computer Interaction (HCI). This course will help students to build a frame of reference of HCI approaches and apply them in conducting design practices for real-world problems. This course contains a combination of lectures, seminars and group projects. The lectures will cover origins of HCI and interaction design, user-centered design methods, usability evaluation and user experience. The seminars will be a combination of guest lecturers and student-led discussions to introduce special topics in HCI, which may include Augmented and Virtual Reality, Tangible User Interface, Human-Robot Interaction, learning technologies, and assistive technologies. The group project will take place throughout the course and provide an opportunity for students to apply and reflect on HCI methods and user-centered design processes through contextual inquiry, prototyping, evaluation, iteration and presentation. Prerequisite: CSC 172 Previous completion of CSC 214 is preferred.
|
|
CSC 214-01
Arthur Roolfs
TR 6:15PM - 7:30PM
|
|
Coursework focuses on native mobile application development for iOS (fall) and Android (spring), using platform-standard languages, SDKs, and IDEs. Topics include modern architectural patterns, concurrency and memory management, networking, RESTful API integration, persistence, and development workflows aligned with current industry practice, including responsible use of AI-assisted development tools.
|
|
CSC 239-01
Xiangxiang Xu
MW 9:00AM - 10:15AM
|
|
This course provides a theoretical foundation for analyzing and understanding machine learning algorithms, with a particular focus on deep learning. Our discussions cover key factors for understanding the behaviors of classical learning algorithms and deep neural networks, including: 1. Approximation: When do neural networks have enough capacity to represent certain functions? 2. Optimization: Why do gradient-based methods converge, even in highly non-convex parameter spaces? 3. Generalization: How can large, overparamterized models still avoid overfitting and achieve good test performance? The course will present students with both developments in classical statistical learning (VC theory, Rademacher complexity, uniftorm convergence, PAC-Bayes analysis) and more recent results in deep learning theory, such as neural tangent kernels (NTK), overparamterization, double descent, and their applications. With these theoretical viewpoints, students will develop the mathematical maturity and analytical skills needed to address research problems in deep learning analysis and design.
|
|
CSC 240-01
Cantay Caliskan
TR 2:00PM - 3:15PM
|
|
Fundamental concepts and techniques of data mining, including data attributes, data visualization, data pre-processing, mining frequent patterns, association and correlation, classification methods, and cluster analysis. Advanced topics include outlier detection, stream mining, and social media data mining. CSC 440, a graduate-level course, requires additional readings and a course project.
|
|
CSC 241-01
Ralf Haefner
TR 9:40AM - 10:55AM
|
|
This is a rotating topics course that includes the study of both the computations performed by the brain and of computational models of neuronal responses. Primary focus will be on the visual system. This course is taught at an introductory level in odd numbered years and an advanced level in even numbered years.
|
|
CSC 242-01
Ted Pawlicki
TR 3:25PM - 4:40PM
|
|
Introduces fundamental principles and techniques from Artificial Intelligence, including heuristic search, automated reasoning, handling uncertainty, and machine learning, to prepare students for advanced AI courses.
|
|
CSC 245-01
Chenliang Xu
TR 9:40AM - 10:55AM
|
|
Much of the recent advances in machine learning and artificial intelligence have been dominated by neural network approaches broadly described as deep learning. This course provides an overview of the most important deep learning techniques covering both theoretical foundations and practical applications. The applications focus on problems in image understanding and language modeling utilizing state-of-the-art deep learning libraries and tools, which are introduced in the course.
|
|
CSC 246-01
Jiaming Liang
TR 3:25PM - 4:40PM
|
|
Mathematical foundations of classification, regression, and decision making. Supervised algorithms covered include perceptrons, logistic regression, support vector machines, and neural networks. Directed and undirected graphical models. Numerical parameter optimization, including gradient descent, expectation maximization, and other methods. Introduction to reinforcement learning. Proofs covered as appropriate. Significant programming projects will be assigned.
|
|
CSC 252-01
Yanan Guo
MW 2:00PM - 3:15PM
|
|
Introduction to computer architecture and the layering of hardware/software systems. Topics include instruction set design; logical building blocks; computer arithmetic; processor organization; the memory hierarchy (registers, caches, main memory, and secondary storage); I/Obuses, devices, and interrupts; microcode and assembly language; virtual machines; the roles of the assembler, linker, compiler, and operating system; technological trends and the future of computing hardware. Several programming assignments required.
|
|
CSC 253-01
Chen Ding
MW 3:25PM - 4:40PM
|
|
Software design is a critical discipline because modern software systems are too complex for any single individual to fully comprehend, yet they must be designed to avoid causing harm to the people they serve. This course focuses on the collaborative construction of software by teams. The curriculum covers: 1. Design Principles and Practices: Information hiding, software architectures, work assignments, team organization, iterative development, and documentation. 2. Safe Programming in Rust: Generics and traits, ownership and borrowing rules, safe pointers, modules, and design patterns. 3. AI Assistance: Automated code and test generation, specialization, and coordination by coding agents. 4. Ethical Principles: Fairness and human fallibility. Assignments emphasize teamwork in software design and development. Students enrolled in CSC 453 are also required to learn Rust meta-programming
|
|
CSC 256-01
John Criswell
TR 2:00PM - 3:15PM
|
|
Principles of operating system design, explored within the practical context of traditional, embedded, distributed, and real-time operating systems. Topics include device management, process management, scheduling, synchronization principles, memory management and virtual memory, file management and remote files, protection and security, fault tolerance, networks, and distributed computing. CSC 456, a graduate-level course, requires additional readings and assignments.
|
|
CSC 257-01
Adam Purtee
MW 4:50PM - 6:05PM
|
|
Introduction to computer networks and computer communication: Architecture and Protocols:. Design of protocols for error recovery, reliable delivery, routing and congestion control. Store-and-forward networks, satellite networks, local area networks and locally distributed systems. Case studies of networks, protocols and protocol families. Emphasis on software design issues in computer communication.
|
|
CSC 259-01
Yuhao Zhu
WF 9:00AM - 10:15AM
|
|
This is NOT a computer vision class. Computer vision is concerned with understanding images, whereas in this class we are mostly concerned with how images are formed in the first place. In particular, we will study three fundamental forms of image formation: biological (human eye and retina), electrical (cameras), and computational (computer graphics).
Why do we care about image formation? First, it's a wonderfully rich topic that covers sciences (e.g., physics, optics, visual neuroscience), engineering (e.g., camera/display design, Augmented/Virtual Reality glass design), computation (e.g., rendering algorithms, computational photography, image/video compression algorithms), art (e.g., paintings, pentimento), and mathematics (e.g., linear systems, Fourier analysis). Second, understanding image formation allows us to better design vision systems (both computer vision and human vision) — if we don't understand how an image is formed in the first place, how can we analyze it to extract useful information?
|
|
CSC 261-01
Eustrat Zhupa
TR 12:30PM - 1:45PM
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project.
|
|
CSC 261-02
Eustrat Zhupa
T 6:15PM - 7:30PM
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project.
|
|
CSC 261-03
Eustrat Zhupa
W 3:25PM - 4:40PM
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project.
|
|
CSC 261-04
Eustrat Zhupa
W 4:50PM - 6:05PM
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project.
|
|
CSC 261-05
Eustrat Zhupa
R 4:50PM - 6:05PM
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project.
|
|
CSC 261-06
Eustrat Zhupa
R 6:15PM - 7:30PM
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project.
|
|
CSC 264-01
Zhiyao Duan
TR 12:30PM - 1:45PM
|
|
Computer audition is the study of how to design a computational system that can analyze and process auditory scenes. Example problems in this field include source separation (splitting audio mixtures into individual source tracks), pitch estimation (estimating the pitches played by each instrument), timbre modeling (finding features to distinguish different kinds of instruments), and source localization (finding where the sound comes from). This course will cover both fundamentals and state-of-the-art research in this field, which applies various kinds of signal processing and machine learning techniques. Multiple programming assignments will help students practice what they learn, and a final research project will lead students through the entire research process.
|
|
CSC 273W-01
Joseph Loporcaro
T 2:00PM - 3:15PM
|
|
In this course, students prepare, critique, and discuss written materials relevant to Computer Science. Will count as one of the two upper level writing requirements for Computer Science majors. If the course is closed, DO NOT email the professor.
|
|
CSC 273W-02
Joseph Loporcaro
T 4:50PM - 6:05PM
|
|
In this course, students prepare, critique, and discuss written materials relevant to Computer Science. Will count as one of the two upper level writing requirements for Computer Science majors. If the course is closed, DO NOT email the professor.
|
|
CSC 276-01
Yanan Guo
MW 9:00AM - 10:15AM
|
|
This course delves into advanced topics in computer architecture such as out-of-order execution, speculative execution, cache protocols, and advanced memory techniques. It will also introduce the security problems caused by these designs, such as side-channel attacks, Rowhammer attacks, and Spectre/Meltdown vulnerabilities. Students will learn about the design of modern processors and their impact on performance and security.
|
|
CSC 277-01
Christopher Kanan
MW 3:25PM - 4:40PM
|
|
Deep learning systems are now being widely productionized at large corporations and many AI-centric start-ups have been created. Productionizing AI systems requires more than just algorithmic considerations. We need to organize the data for training these systems, measure the bias present in these systems after training them, monitor them over time, and more. This course covers these topics, including, but are not limited to, deploying AI systems, MLOps, model versioning, dataset curation, data management, AI ethics/fairness, detecting and mitigation of bias, detecting out-of-distribution inputs, domain shift, data-centric AI, real-time machine learning, continual machine learning, monitoring AI systems after deployment, model/data parallelism, managing AI projects/teams, training and inference on edge-devices, and launching AI start-ups.
|
|
CSC 280-01
Monika Polak
MW 9:00AM - 10:15AM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness.
|
|
CSC 280-02
Monika Polak
M 4:50PM - 6:05PM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness.
|
|
CSC 280-04
Monika Polak
W 6:15PM - 7:30PM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness.
|
|
CSC 280-07
Monika Polak
T 6:15PM - 7:30PM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness.
|
|
CSC 281-01
Andrew Read-McFarland
MW 2:00PM - 3:15PM
|
|
The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques.
|
|
CSC 282-01
Daniel Stefankovic
TR 11:05AM - 12:20PM
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.
|
|
CSC 282-02
Daniel Stefankovic
T 6:15PM - 7:30PM
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.
|
|
CSC 282-03
Daniel Stefankovic
W 6:15PM - 7:30PM
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.
|
|
CSC 282-04
Daniel Stefankovic
M 6:15PM - 7:30PM
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.
|
|
CSC 282-05
Daniel Stefankovic
W 7:40PM - 8:55PM
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.
|
|
CSC 284-01
Daniel Stefankovic
MW 9:00AM - 10:15AM
|
|
Advanced study of design and analysis of algorithms. Topics typically include: combinatorial optimization, computational geometry, number-theoretic algorithms, probabilistic analysis and randomized algorithms, string algorithms, streaming algorithms. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.
|
|
CSC 289-01
Anson Kahng
MW 4:50PM - 6:05PM
|
|
This class will provide an introduction to topics at the intersection of computer science and economics, including game theory, auctions, incentive-compatible mechanism design, matching algorithms, human computation (e.g., crowdsourcing and peer prediction), trust and reputation systems, and social choice (voting) theory. We hope to convey the fact that the relationship between computer science and economics is a two-way street: It is important to consider incentives and strategic action are important when designing computation-intensive systems, and efficient and robust algorithms enable the deployment of impactful economic ideas.
|
|
CSC 290-01
Sreepathi Pai
MW 2:00PM - 3:15PM
|
|
This advanced course is aimed at students who wish to build and use efficient large-scale AI systems. It condenses CSC 252, CSC 254, CSC 258, and CSC 255, collating material from those courses that are most relevant to modern AI systems. Topics covered include machine learning (ML) applications, ML programming models, code generation and optimization, manual and automatic parallelization, performance modeling, systems-level challenges, and specialized AI hardware. No background in AI or ML is expected, but proficiency in programming is expected.
|
|
CSC 296-01
Ted Pawlicki
MW 4:50PM - 6:05PM
|
|
This course will focus on practical quantum computational approaches to machine learning, clustering, classification, and optimization algorithms. Topics include quantum K-means, quantum support vector machines, quantum principle component analysis, the Quantum Approximate Optimization Algorithm (QAOA), the Variational Quantum Eigensolver (VQE), and quantum neural networks. Both quantum circuit and adiabatic computing models will be examined as well as the design of Hamiltonians for specific problems. Most programming assignments will use the Qiskit (Python based) environment.
|
|
CSC 299W-01
Joseph Loporcaro
MW 3:25PM - 4:40PM
|
|
Computers and the Internet, perhaps more than any other technology, have transformed society over the past 50 years. In developed nations, at least, they have enabled dramatic increases in human productivity; an explosion of options for news, entertainment, and communication; and fundamental breakthroughs in almost every branch of science and engineering. At the same time, they have contributed to unprecedented threats to privacy; whole new categories of crime and anti-social behavior; major disruptions in the job market; and the large-scale concentration of risk into systems capable of catastrophic failure. In this discussion- and writing-oriented class, we will consider all of this and more, with the goal of better understanding how to shape technological change in ways that maximize the benefits and minimize the costs.
|
|
CSC 391-01
7:00PM - 7:00PM
|
|
This course provides undergraduate students the opportunity to pursue in-depth, independent exploration of a topic not regularly offered in the curriculum, under the supervision of a faculty member in the form of independent study, practicum, internship or research. The objectives and content are determined in consultation between students and full-time members of the teaching faculty. Responsibilities and expectations vary by course and department.
|
|
CSC 391W-01
Yukang Yan
7:00PM - 7:00PM
|
|
This course provides undergraduate students the opportunity to pursue in-depth, independent exploration of a topic not regularly offered in the curriculum, under the supervision of a faculty member in the form of independent study, practicum, internship or research. The objectives and content are determined in consultation between students and full-time members of the teaching faculty. Responsibilities and expectations vary by course and department. Registration for Independent Study courses needs to be completed through the Independent Study Registration form (https://secure1.rochester.edu/registrar/forms/independent-study-form.php)
|
|
CSC 394-01
Adam Purtee
7:00PM - 7:00PM
|
|
This course provides undergraduate students the opportunity to pursue in-depth, independent exploration of a topic not regularly offered in the curriculum, under the supervision of a faculty member in the form of independent study, practicum, internship or research. The objectives and content are determined in consultation between students and full-time members of the teaching faculty. Responsibilities and expectations vary by course and department.
|
|
CSC 395-01
Zhen Bai
7:00PM - 7:00PM
|
|
This course provides undergraduate students the opportunity to pursue in-depth, independent exploration of a topic not regularly offered in the curriculum, under the supervision of a faculty member in the form of independent study, practicum, internship or research. The objectives and content are determined in consultation between students and full-time members of the teaching faculty. Responsibilities and expectations vary by course and department.
|
|
CSC 395H-01
Yuhao Zhu
7:00PM - 7:00PM
|
|
This course provides undergraduate students the opportunity to pursue in-depth, independent exploration of a topic not regularly offered in the curriculum, under the supervision of a faculty member in the form of independent study, practicum, internship or research. The objectives and content are determined in consultation between students and full-time members of the teaching faculty. Responsibilities and expectations vary by course and department.
|
|
CSC 395W-01
Cantay Caliskan
7:00PM - 7:00PM
|
|
This course provides undergraduate students the opportunity to pursue in-depth, independent exploration of a topic not regularly offered in the curriculum, under the supervision of a faculty member in the form of independent study, practicum, internship or research. The objectives and content are determined in consultation between students and full-time members of the teaching faculty. Responsibilities and expectations vary by course and department.
|
Fall 2026
| Number | Title | Instructor | Time |
|---|---|
| Monday | |
|
CSC 161-05
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 171-27
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 171-04
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 172-05
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 172-06
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 280-02
Monika Polak
|
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. |
|
|
CSC 282-04
Daniel Stefankovic
|
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments. |
|
| Monday and Wednesday | |
|
CSC 239-01
Xiangxiang Xu
|
|
|
This course provides a theoretical foundation for analyzing and understanding machine learning algorithms, with a particular focus on deep learning. Our discussions cover key factors for understanding the behaviors of classical learning algorithms and deep neural networks, including: 1. Approximation: When do neural networks have enough capacity to represent certain functions? 2. Optimization: Why do gradient-based methods converge, even in highly non-convex parameter spaces? 3. Generalization: How can large, overparamterized models still avoid overfitting and achieve good test performance? The course will present students with both developments in classical statistical learning (VC theory, Rademacher complexity, uniftorm convergence, PAC-Bayes analysis) and more recent results in deep learning theory, such as neural tangent kernels (NTK), overparamterization, double descent, and their applications. With these theoretical viewpoints, students will develop the mathematical maturity and analytical skills needed to address research problems in deep learning analysis and design. |
|
|
CSC 276-01
Yanan Guo
|
|
|
This course delves into advanced topics in computer architecture such as out-of-order execution, speculative execution, cache protocols, and advanced memory techniques. It will also introduce the security problems caused by these designs, such as side-channel attacks, Rowhammer attacks, and Spectre/Meltdown vulnerabilities. Students will learn about the design of modern processors and their impact on performance and security. |
|
|
CSC 280-01
Monika Polak
|
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. |
|
|
CSC 284-01
Daniel Stefankovic
|
|
|
Advanced study of design and analysis of algorithms. Topics typically include: combinatorial optimization, computational geometry, number-theoretic algorithms, probabilistic analysis and randomized algorithms, string algorithms, streaming algorithms. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments. |
|
|
CSC 171-01
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 172-01
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 252-01
Yanan Guo
|
|
|
Introduction to computer architecture and the layering of hardware/software systems. Topics include instruction set design; logical building blocks; computer arithmetic; processor organization; the memory hierarchy (registers, caches, main memory, and secondary storage); I/Obuses, devices, and interrupts; microcode and assembly language; virtual machines; the roles of the assembler, linker, compiler, and operating system; technological trends and the future of computing hardware. Several programming assignments required. |
|
|
CSC 281-01
Andrew Read-McFarland
|
|
|
The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques. |
|
|
CSC 290-01
Sreepathi Pai
|
|
|
This advanced course is aimed at students who wish to build and use efficient large-scale AI systems. It condenses CSC 252, CSC 254, CSC 258, and CSC 255, collating material from those courses that are most relevant to modern AI systems. Topics covered include machine learning (ML) applications, ML programming models, code generation and optimization, manual and automatic parallelization, performance modeling, systems-level challenges, and specialized AI hardware. No background in AI or ML is expected, but proficiency in programming is expected. |
|
|
CSC 173-01
George Ferguson
|
|
|
An introduction to some of the most important formal models of computation and their application to real-world computing problems. |
|
|
CSC 253-01
Chen Ding
|
|
|
Software design is a critical discipline because modern software systems are too complex for any single individual to fully comprehend, yet they must be designed to avoid causing harm to the people they serve. This course focuses on the collaborative construction of software by teams. The curriculum covers: 1. Design Principles and Practices: Information hiding, software architectures, work assignments, team organization, iterative development, and documentation. 2. Safe Programming in Rust: Generics and traits, ownership and borrowing rules, safe pointers, modules, and design patterns. 3. AI Assistance: Automated code and test generation, specialization, and coordination by coding agents. 4. Ethical Principles: Fairness and human fallibility. Assignments emphasize teamwork in software design and development. Students enrolled in CSC 453 are also required to learn Rust meta-programming |
|
|
CSC 277-01
Christopher Kanan
|
|
|
Deep learning systems are now being widely productionized at large corporations and many AI-centric start-ups have been created. Productionizing AI systems requires more than just algorithmic considerations. We need to organize the data for training these systems, measure the bias present in these systems after training them, monitor them over time, and more. This course covers these topics, including, but are not limited to, deploying AI systems, MLOps, model versioning, dataset curation, data management, AI ethics/fairness, detecting and mitigation of bias, detecting out-of-distribution inputs, domain shift, data-centric AI, real-time machine learning, continual machine learning, monitoring AI systems after deployment, model/data parallelism, managing AI projects/teams, training and inference on edge-devices, and launching AI start-ups. |
|
|
CSC 299W-01
Joseph Loporcaro
|
|
|
Computers and the Internet, perhaps more than any other technology, have transformed society over the past 50 years. In developed nations, at least, they have enabled dramatic increases in human productivity; an explosion of options for news, entertainment, and communication; and fundamental breakthroughs in almost every branch of science and engineering. At the same time, they have contributed to unprecedented threats to privacy; whole new categories of crime and anti-social behavior; major disruptions in the job market; and the large-scale concentration of risk into systems capable of catastrophic failure. In this discussion- and writing-oriented class, we will consider all of this and more, with the goal of better understanding how to shape technological change in ways that maximize the benefits and minimize the costs. |
|
|
CSC 257-01
Adam Purtee
|
|
|
Introduction to computer networks and computer communication: Architecture and Protocols:. Design of protocols for error recovery, reliable delivery, routing and congestion control. Store-and-forward networks, satellite networks, local area networks and locally distributed systems. Case studies of networks, protocols and protocol families. Emphasis on software design issues in computer communication. |
|
|
CSC 289-01
Anson Kahng
|
|
|
This class will provide an introduction to topics at the intersection of computer science and economics, including game theory, auctions, incentive-compatible mechanism design, matching algorithms, human computation (e.g., crowdsourcing and peer prediction), trust and reputation systems, and social choice (voting) theory. We hope to convey the fact that the relationship between computer science and economics is a two-way street: It is important to consider incentives and strategic action are important when designing computation-intensive systems, and efficient and robust algorithms enable the deployment of impactful economic ideas. |
|
|
CSC 296-01
Ted Pawlicki
|
|
|
This course will focus on practical quantum computational approaches to machine learning, clustering, classification, and optimization algorithms. Topics include quantum K-means, quantum support vector machines, quantum principle component analysis, the Quantum Approximate Optimization Algorithm (QAOA), the Variational Quantum Eigensolver (VQE), and quantum neural networks. Both quantum circuit and adiabatic computing models will be examined as well as the design of Hamiltonians for specific problems. Most programming assignments will use the Qiskit (Python based) environment. |
|
| Tuesday | |
|
CSC 171-09
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 273W-01
Joseph Loporcaro
|
|
|
In this course, students prepare, critique, and discuss written materials relevant to Computer Science. Will count as one of the two upper level writing requirements for Computer Science majors. If the course is closed, DO NOT email the professor. |
|
|
CSC 161-13
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 171-14
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 171-15
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 273W-02
Joseph Loporcaro
|
|
|
In this course, students prepare, critique, and discuss written materials relevant to Computer Science. Will count as one of the two upper level writing requirements for Computer Science majors. If the course is closed, DO NOT email the professor. |
|
|
CSC 161-14
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 172-03
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 261-02
Eustrat Zhupa
|
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project. |
|
|
CSC 280-07
Monika Polak
|
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. |
|
|
CSC 282-02
Daniel Stefankovic
|
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments. |
|
| Tuesday and Thursday | |
|
CSC 241-01
Ralf Haefner
|
|
|
This is a rotating topics course that includes the study of both the computations performed by the brain and of computational models of neuronal responses. Primary focus will be on the visual system. This course is taught at an introductory level in odd numbered years and an advanced level in even numbered years. |
|
|
CSC 245-01
Chenliang Xu
|
|
|
Much of the recent advances in machine learning and artificial intelligence have been dominated by neural network approaches broadly described as deep learning. This course provides an overview of the most important deep learning techniques covering both theoretical foundations and practical applications. The applications focus on problems in image understanding and language modeling utilizing state-of-the-art deep learning libraries and tools, which are introduced in the course. |
|
|
CSC 131-01
Ted Pawlicki
|
|
|
A hands on introduction to 3D computer graphics and animation techniques taught from a user point of view. Topics include 3D modeling, animation, and simulation. |
|
|
CSC 161-01
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 211-01
Zhen Bai
|
|
|
The goal of this course is to provide an introductory overview of the concepts, principles, methods and special topics of Human-Computer Interaction (HCI). This course will help students to build a frame of reference of HCI approaches and apply them in conducting design practices for real-world problems. This course contains a combination of lectures, seminars and group projects. The lectures will cover origins of HCI and interaction design, user-centered design methods, usability evaluation and user experience. The seminars will be a combination of guest lecturers and student-led discussions to introduce special topics in HCI, which may include Augmented and Virtual Reality, Tangible User Interface, Human-Robot Interaction, learning technologies, and assistive technologies. The group project will take place throughout the course and provide an opportunity for students to apply and reflect on HCI methods and user-centered design processes through contextual inquiry, prototyping, evaluation, iteration and presentation. Prerequisite: CSC 172 Previous completion of CSC 214 is preferred. |
|
|
CSC 282-01
Daniel Stefankovic
|
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments. |
|
|
CSC 261-01
Eustrat Zhupa
|
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project. |
|
|
CSC 264-01
Zhiyao Duan
|
|
|
Computer audition is the study of how to design a computational system that can analyze and process auditory scenes. Example problems in this field include source separation (splitting audio mixtures into individual source tracks), pitch estimation (estimating the pitches played by each instrument), timbre modeling (finding features to distinguish different kinds of instruments), and source localization (finding where the sound comes from). This course will cover both fundamentals and state-of-the-art research in this field, which applies various kinds of signal processing and machine learning techniques. Multiple programming assignments will help students practice what they learn, and a final research project will lead students through the entire research process. |
|
|
CSC 240-01
Cantay Caliskan
|
|
|
Fundamental concepts and techniques of data mining, including data attributes, data visualization, data pre-processing, mining frequent patterns, association and correlation, classification methods, and cluster analysis. Advanced topics include outlier detection, stream mining, and social media data mining. CSC 440, a graduate-level course, requires additional readings and a course project. |
|
|
CSC 256-01
John Criswell
|
|
|
Principles of operating system design, explored within the practical context of traditional, embedded, distributed, and real-time operating systems. Topics include device management, process management, scheduling, synchronization principles, memory management and virtual memory, file management and remote files, protection and security, fault tolerance, networks, and distributed computing. CSC 456, a graduate-level course, requires additional readings and assignments. |
|
|
CSC 242-01
Ted Pawlicki
|
|
|
Introduces fundamental principles and techniques from Artificial Intelligence, including heuristic search, automated reasoning, handling uncertainty, and machine learning, to prepare students for advanced AI courses. |
|
|
CSC 246-01
Jiaming Liang
|
|
|
Mathematical foundations of classification, regression, and decision making. Supervised algorithms covered include perceptrons, logistic regression, support vector machines, and neural networks. Directed and undirected graphical models. Numerical parameter optimization, including gradient descent, expectation maximization, and other methods. Introduction to reinforcement learning. Proofs covered as appropriate. Significant programming projects will be assigned. |
|
|
CSC 160-01
Adam Purtee
|
|
|
This experimental course will explore how AI can be safely, ethically, and effectively leveraged by students to enhance their ability to learn. Students will be expected to both collaboratively and independently pursue AI applications within their own domains of interest, and to participate in course discussions. Basic concepts of how AI systems work and how they are built will be covered at a general audience level. This course has no prerequisites and is open to all students. |
|
|
CSC 214-01
Arthur Roolfs
|
|
|
Coursework focuses on native mobile application development for iOS (fall) and Android (spring), using platform-standard languages, SDKs, and IDEs. Topics include modern architectural patterns, concurrency and memory management, networking, RESTful API integration, persistence, and development workflows aligned with current industry practice, including responsible use of AI-assisted development tools. |
|
| Wednesday | |
|
CSC 161-02
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 161-23
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 171-03
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 161-16
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 171-08
Eustrat Zhupa
|
|
|
This course explores fundamental Computer Science concepts through practical programming. The focus is on algorithmic thinking, computational problem solving and implementation using the Python programming language. Topics include: programming paradigms, design patterns, efficiency analysis, algorithmic problem solving techniques and fundamental linear and nonlinear data structures. Workshop required. |
|
|
CSC 261-03
Eustrat Zhupa
|
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project. |
|
|
CSC 172-04
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 261-04
Eustrat Zhupa
|
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project. |
|
|
CSC 161-04
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 280-04
Monika Polak
|
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. |
|
|
CSC 282-03
Daniel Stefankovic
|
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments. |
|
|
CSC 282-05
Daniel Stefankovic
|
|
|
How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divide-and-conquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NP-completeness and linear programming. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments. |
|
| Wednesday and Friday | |
|
CSC 259-01
Yuhao Zhu
|
|
|
This is NOT a computer vision class. Computer vision is concerned with understanding images, whereas in this class we are mostly concerned with how images are formed in the first place. In particular, we will study three fundamental forms of image formation: biological (human eye and retina), electrical (cameras), and computational (computer graphics).
Why do we care about image formation? First, it's a wonderfully rich topic that covers sciences (e.g., physics, optics, visual neuroscience), engineering (e.g., camera/display design, Augmented/Virtual Reality glass design), computation (e.g., rendering algorithms, computational photography, image/video compression algorithms), art (e.g., paintings, pentimento), and mathematics (e.g., linear systems, Fourier analysis). Second, understanding image formation allows us to better design vision systems (both computer vision and human vision) — if we don't understand how an image is formed in the first place, how can we analyze it to extract useful information? |
|
| Thursday | |
|
CSC 161-10
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 172-18
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 172-09
Andrew Read-McFarland
|
|
|
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). |
|
|
CSC 161-11
Monika Polak
|
|
|
Hands-on introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as object-oriented programming and graphics. |
|
|
CSC 261-05
Eustrat Zhupa
|
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project. |
|
|
CSC 261-06
Eustrat Zhupa
|
|
|
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semester-long group project. |
|