Spring Term Schedule
Spring 2026
| Number | Title | Instructor | Time |
|---|
|
CSC 160-01
Adam Purtee
TR 3:25PM - 4:40PM
|
|
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
Andrew Read-McFarland
TR 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-02
Andrew Read-McFarland
TR 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-03
Andrew Read-McFarland
MW 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-04
Andrew Read-McFarland
MW 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-05
Andrew Read-McFarland
TR 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-06
Andrew Read-McFarland
M 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-07
Andrew Read-McFarland
M 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-08
Andrew Read-McFarland
M 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-09
Andrew Read-McFarland
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-10
Andrew Read-McFarland
M 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-11
Andrew Read-McFarland
T 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-12
Andrew Read-McFarland
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-13
Andrew Read-McFarland
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-14
Andrew Read-McFarland
T 7:40PM - 8:55PM
|
|
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-15
Andrew Read-McFarland
R 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
Andrew Read-McFarland
W 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-17
Andrew Read-McFarland
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-18
Andrew Read-McFarland
W 7:40PM - 8:55PM
|
|
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-19
Andrew Read-McFarland
R 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-20
Andrew Read-McFarland
R 7:40PM - 8:55PM
|
|
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
TR 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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-02
Eustrat Zhupa
MW 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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-03
Eustrat Zhupa
MW 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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-04
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-05
Eustrat Zhupa
MW 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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-06
Eustrat Zhupa
W 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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-08
Eustrat Zhupa
M 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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-10
Eustrat Zhupa
M 6:15PM - 7:30PM
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-13
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-14
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-15
Eustrat Zhupa
T 6:15PM - 7:30PM
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-16
Eustrat Zhupa
T 6:15PM - 7:30PM
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-19
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-20
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-21
Eustrat Zhupa
W 6:15PM - 7:30PM
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 171-22
Eustrat Zhupa
R 6:15PM - 7:30PM
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
CSC 172-01
Andrew Read-McFarland
TR 11:05AM - 12:20PM
|
|
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-02
Andrew Read-McFarland
TR 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-03
Andrew Read-McFarland
MW 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
MW 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 172-06
Andrew Read-McFarland
MW 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-07
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-09
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-10
Andrew Read-McFarland
M 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-12
Andrew Read-McFarland
M 7:40PM - 8:55PM
|
|
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-13
Andrew Read-McFarland
T 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 172-14
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-15
Andrew Read-McFarland
T 7:40PM - 8:55PM
|
|
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-17
Andrew Read-McFarland
T 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-18
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-19
Andrew Read-McFarland
W 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-22
Andrew Read-McFarland
R 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-23
Andrew Read-McFarland
R 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 173-01
George Ferguson
TR 2:00PM - 3:15PM
|
|
An introduction to some of the most important formal models of computation and their application to real-world computing problems. Prerequisites: CSC 172 and MATH 150
|
|
CSC 186-01
Ted Pawlicki
TR 11:05AM - 12:20PM
|
|
This course is a hands-on lab based introduction to software engineering and computer programming using the development of computer/video games as the application area. Topics will include mesh modeling, level design, asset management, shading, texturing, lighting, event scripting, character rigging, and particle effects.
|
|
CSC 200-01
Fatemeh Nargesian
MW 11:50AM - 1:05PM
|
|
Intensive seminar on cooperative problem solving. Overview of the subdisciplines and the research of the University of Rochester's computer science faculty. Students who participate or intend to participate in research, or who want to improve their problem-solving skills, are well-advised to take CSC 200/200H 200H required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects.
|
|
CSC 200H-01
Fatemeh Nargesian
MW 11:50AM - 1:05PM
|
|
Intensive seminar on cooperative problem-solving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Students who participate or intend to participate in research, or who want to improve their problem-solving skills, are well-advised to take CSC 200/200H. CSC 200H is required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects.
|
|
CSC 209-01
Christopher Kanan
M 2:00PM - 3:15PM
|
|
Many companies are working towards creating artificial general intelligence (AGI), i.e., systems capable of accomplishing any human intellectual task, and multiple companies aspire to create such systems within the next decade. WHile large language models (LLMs) do not yet have these capabilities, they exhibit "sparks" of AGI. In this course we review the concept of AGI and how we might assess a system to understand if it is an AGI. We will study the gaps in state-of-the-art systems and what would be needed for a system to be considered an AGI. We will also study AI ethics and safety, the socioeconomic implications of AGI, the likelihood of an intelligence explosion (i.e., the singularity), and existential risk due to AGI. Coursework includes readings, student presentations, and a project. Students are expected to be familiar with Python, one or more deep learning toolboxes, deep learning, and machine learning more broadly. Students should have a solid understanding of large language models, e.g., GPT-based causal transformers and similar approaches, backpropagation, multi-layer perceptrons, transformers, convolutional neural networks, and neural network fine-tuning.
|
|
CSC 210-01
Andrew Read-McFarland
MW 2:00PM - 3:15PM
|
|
The World Wide Web was born around 1990, so it is not much older than most of you. In this course, we will follow the growth of the Web from its toddler years, to early childhood, to its turbulent pre-teen and teenage years, and finally as it begins to mature as a young adult. Along this journey, you will learn influential Web technologies such as HTTP, HTML, JavaScript, CSS, the LAMP stack, XML, JSON, Ajax, WebSockets, and modern MVC frameworks. Even though you will be doing a lot of programming in this course, its purpose is not to teach you to become an expert in any particular language or framework. Web technologies change at a blistering pace, so specifics quickly get outdated. However, once you take this course and understand the fundamentals, you will be able to easily pick up new technologies on the fly. Prerequisites: CSC 172. No Audits.
|
|
CSC 214-01
Arthur Roolfs
TR 6:15PM - 7:30PM
|
|
Coursework covers user interface designs and functional algorithms for mobile devices (iOS fall, Android spring) and unique user interactions using multi-touch technologies. Object-oriented design using model-view-controller paradigm, memory management. Other topics include: object-oriented database API, animation, multi-threading and performance considerations. Prerequisite: CSC 172
|
|
CSC 216-01
Zhen Bai
TR 3:25PM - 4:40PM
|
|
Human activity is embodied through all our sensorimotor capacities, immersed in our immediate physical, social & cultural surroundings. Interaction technologies such as Augmented Reality (AR) & Virtual Reality (VR) have shown vast potential to enhance the way we think, feel & behave by superimposing/substituting digital contents onto/with our reality. This course is an introduction to AR,VR & related technologies, aiming to help students build a frame of reference of those technologies, apply them in design practices that address real-world problems, & actively reflect on social implications. CSC 172 and CSC 214 required (or proven equivalent application development experience); CSC 131 recommended.
|
|
CSC 229-01
Robert Jacobs
TR 11:05AM - 12:20PM
|
|
How can computer models help us understand how people perceive and reason about their environments? This course addresses this question, with emphasis placed on how people use probabilistic reasoning in order to represent and manage ambiguity and uncertainty for the purpose of making intelligent decisions. The course is relevant to students with interests in computational studies of human perception and cognition, and to students with interests in artificial intelligence. Homework assignments will require students to write computer programs using the Python programming language. Prerequisites: MATH 161, MATH 162, and CSC 161 (or equivalent proficiency in Python programming) required. MATH 164, MATH 165, and/or STAT 213 are helpful but not required.
|
|
CSC 240-01
Monika Polak
TR 9:40AM - 10:55AM
|
|
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. Prerequisites will be strictly enforced: CSC171, CSC 172 and MATH 161 Recommended: CSC 242 or CSC262 and MATH165
|
|
CSC 242-01
Adam Purtee
TR 4:50PM - 6:05PM
|
|
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 243-01
Ralf Haefner
TR 9:40AM - 10:55AM
|
|
This is a seminar-style course for advanced undergraduate and graduate students covering multiple areas of computational neuroscience by weekly readings and student presentations. Many of the topics are deeper explorations of topics covered in Introduction to Computational Neuroscience, focusing on the sensory system, decision-making, action selection and active inference, especially from a probabilistic and normative perspective. The reading list is somewhat flexible and adaptable to student interest. There is an opportunity for a final project but this is not required.
|
|
CSC 243-02
Ralf Haefner
F 2:00PM - 3:15PM
|
|
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. Programming experience is required. This course is taught every other year, alternating with Intro to Computational Neuroscience. Prerequisite: CSC 241 or permission of instructor
|
|
CSC 246-01
Xiangxiang Xu
TR 11:05AM - 12:20PM
|
|
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. Prerequisites: MATH 165 and a complete calculus sequence (e.g., MATH 14x, 16x, or 17x). Recommended: STAT 190 or similar statistics course
|
|
CSC 247-01
Hangfeng He
MW 10:25AM - 11:40AM
|
|
This introductory course in Natural Language Processing (NLP) explores the AI techniques enabling computers to understand and communicate with humans. Divided into four main sections—Statistical NLP, Neural NLP, Foundation Models, and Advanced Topics—the curriculum covers essential language tasks, from syntax and semantics to complex applications like question answering. We'll also touch on current trends in Large Language Models, such as emergent abilities and human-alignment techniques. Ideal for those interested in the intersection of AI and language, the course tackles challenges at the word, sentence, and document levels.
|
|
CSC 249-01
Jiebo Luo
TR 9:40AM - 10:55AM
|
|
Introduction to computer vision, including camera models, basic image processing, pattern and object recognition, and elements of human vision. Specific topics include geometric issues, statistical models, Hough transforms, color theory, texture, and optic flow. CSC 449, a graduate-level course, requires additional readings and assignments. Prerequisites: MATH 161 and CSC 242; MATH 165 strongly recommended
|
|
CSC 252-01
Yuhao Zhu
WF 3:25PM - 4:40PM
|
|
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. Prerequisites: MATH 150 and CSC 172
|
|
CSC 254-01
George Ferguson
TR 3:25PM - 4:40PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 254-04
George Ferguson
R 6:15PM - 7:30PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 254-05
George Ferguson
R 6:15PM - 7:30PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 254-07
George Ferguson
W 3:25PM - 4:40PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 254-08
George Ferguson
W 4:50PM - 6:05PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 254-09
George Ferguson
W 4:50PM - 6:05PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 254-12
George Ferguson
W 3:25PM - 4:40PM
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
CSC 258-01
Michael Scott
MW 3:25PM - 4:40PM
|
|
Principles of parallel and distributed systems, and the associated implementation and performance issues. Topics covered will include programming interfaces to parallel and distributed computing, interprocess communication, synchronization, and consistency models, fault tolerance and reliability, distributed process management, distributed file systems, multiprocessor architectures, parallel program optimization, and parallelizing compilers. Students taking this course at the 400 level will be required to complete additional readings and/or assignments.
|
|
CSC 261-01
Eustrat Zhupa
MW 2:00PM - 3:15PM
|
|
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 263-01
Fatemeh Nargesian
MW 9:00AM - 10:15AM
|
|
This course explores the internals of data engines. Topics covered will include the relational model; relational database design principles based on dependencies and normal forms; query execution; transactions; recovery; query optimization; parallel query processing; NoSQL. Prerequisites:CSC 173 and CSC 252 (or CSC 261)
|
|
CSC 273W-01
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 273W-02
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 276-01
Yanan Guo
MW 10:25AM - 11:40AM
|
|
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
Kaave Hosseini
MW 2:00PM - 3:15PM
|
|
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. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE
|
|
CSC 280-02
Kaave Hosseini
W 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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
CSC 280-03
Kaave Hosseini
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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
CSC 280-04
Kaave Hosseini
R 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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
CSC 280-09
Kaave Hosseini
R 3:25PM - 4:40PM
|
|
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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
CSC 282-01
Eustrat Zhupa
TR 9:40AM - 10:55AM
|
|
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
CSC 282-02
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
CSC 282-03
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
CSC 282-04
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
CSC 282-05
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
CSC 283-01
Monika Polak
MW 11:50AM - 1:05PM
|
|
In this course students will learn about the current state of Public Key Cryptography. In particular the NIST (National Institute of Standards and Technology) process to solicit, evaluate, and standardize one or more quantum-resistant public-key cryptographic algorithms will be discussed. Quantum-Resistant Cryptography (QRC) refers to cryptographic systems that are secure against both quantum and classical computers. Such systems may be achieved through classical (i.e. non-quantum) means. The security of many commonly used cryptographic protocols (especially public-key cryptosystems) would be compromised if general-purpose large-scale, fault-tolerant quantum computers became a reality. This course covers the consequences of Quantum Computing and why it poses a threat to currently used cryptographic systems, and then discusses potential Post-Quantum cryptosystems designed to be resistant to such attacks.
|
|
CSC 285-01
Lane Hemaspaandra
MW 4:50PM - 6:05PM
|
|
This course covers gems from the study of elections and the study of algorithms. Students do not need to have previous exposure to either of those topics. Most of the class's work is done via in-class, hands-on, team-based problem-solving, and discussion of the solutions. Topics vary between years, but typical topics include how to fairly apportion (e.g., assign to states their number of seats in the US House of Representatives); using algorithms to manipulate elections and using complexity to protect elections from manipulative attacks; and the interaction between algorithms and information content. The course is designed to be accessible to any student from CSC, ECON, MATH, or PSCI who likes tackling problems as part of a team and discussing the solutions; no experience is assumed or expected beyond satisfying the flexible prerequisite. Prerequisites: Permission of the instructor or at least one of the following: MATH 150, MATH 143, MATH 162, MATH 172, PSCI 107, CSC 173, CSC 280, CSC 281, CSC 282.
|
|
CSC 288-01
Kaave Hosseini
MW 4:50PM - 6:05PM
|
|
In this course we introduce a number of tools with analytic flavor that have an impressive range of applications in computer science and discrete mathematics. Although the objects we are dealing with (such as graphs, sets, boolean functions, and various models of computation) are discrete in nature, it turns out that an analytic point of view —as opposed to a purely combinatorial one— provides a powerful lens to study these objects. We start with elementary tools such as probabilistic concentration bounds and then move on to more advanced material such as spectral graph theory, discrete Fourier analysis, and pseudorandomness. Applications of these tools in areas such as algorithms, coding theory, complexity theory, discrete mathematics, and machine learning will be discussed.
|
|
CSC 295-01
Ted Pawlicki
TR 12:30PM - 1:45PM
|
|
This course is a introduction to areas in Quantum Computing from a programming, algorithmic and mathematical perspective. Familiarity with Quantum Mechanics is not required. Areas covered include: the Qbit representation of information, superposition, entanglement, interference, Hilbert Spaces, reversible computations, Quantum teleportation, Deutsch-Jozsa Algorithm, Simon's Algorithm, Grover's Algorithm, Shor's Algorithm and the philosophical interpretations of Quantum Mechanics (Copenhagen, Many Worlds, etc.) The focus is on programming quantum computers.
|
|
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 386V-01
Chenliang Xu
|
|
This non-credit placeholder course is used to maintain registration status for visiting students enrolled at the institution as a non-matriculted student. It allows access to university systems, resources, and services during the approved term of study. Visiting students may be enrolled in academic coursework or engaged in approved research, exchange programs, or special academic arrangements.an educational or academic nature
|
|
CSC 391-01
Lane Hemaspaandra
|
|
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 391H-01
Hangfeng He
|
|
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 391W-01
Jiebo Luo
|
|
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 392-01
|
|
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-02
Adam Purtee
|
|
No description
|
|
CSC 395-01
Ehsan Hoque
|
|
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 395H-01
Aaron White
|
|
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 395H-02
Lane Hemaspaandra
|
|
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 395H-06
Jiebo Luo
|
|
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 395W-01
Lenhart Schubert
|
|
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)
|
Spring 2026
| Number | Title | Instructor | Time |
|---|---|
| Monday | |
|
CSC 161-06
Andrew Read-McFarland
M 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 209-01
Christopher Kanan
M 2:00PM - 3:15PM
|
|
|
Many companies are working towards creating artificial general intelligence (AGI), i.e., systems capable of accomplishing any human intellectual task, and multiple companies aspire to create such systems within the next decade. WHile large language models (LLMs) do not yet have these capabilities, they exhibit "sparks" of AGI. In this course we review the concept of AGI and how we might assess a system to understand if it is an AGI. We will study the gaps in state-of-the-art systems and what would be needed for a system to be considered an AGI. We will also study AI ethics and safety, the socioeconomic implications of AGI, the likelihood of an intelligence explosion (i.e., the singularity), and existential risk due to AGI. Coursework includes readings, student presentations, and a project. Students are expected to be familiar with Python, one or more deep learning toolboxes, deep learning, and machine learning more broadly. Students should have a solid understanding of large language models, e.g., GPT-based causal transformers and similar approaches, backpropagation, multi-layer perceptrons, transformers, convolutional neural networks, and neural network fine-tuning.
|
|
|
CSC 161-07
Andrew Read-McFarland
M 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 172-07
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 161-08
Andrew Read-McFarland
M 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 171-08
Eustrat Zhupa
M 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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-09
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 161-10
Andrew Read-McFarland
M 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 171-10
Eustrat Zhupa
M 6:15PM - 7:30PM
|
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-10
Andrew Read-McFarland
M 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 282-04
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
|
CSC 172-12
Andrew Read-McFarland
M 7:40PM - 8:55PM
|
|
|
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).
|
|
| Monday and Wednesday | |
|
CSC 263-01
Fatemeh Nargesian
MW 9:00AM - 10:15AM
|
|
|
This course explores the internals of data engines. Topics covered will include the relational model; relational database design principles based on dependencies and normal forms; query execution; transactions; recovery; query optimization; parallel query processing; NoSQL. Prerequisites:CSC 173 and CSC 252 (or CSC 261)
|
|
|
CSC 171-04
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 247-01
Hangfeng He
MW 10:25AM - 11:40AM
|
|
|
This introductory course in Natural Language Processing (NLP) explores the AI techniques enabling computers to understand and communicate with humans. Divided into four main sections—Statistical NLP, Neural NLP, Foundation Models, and Advanced Topics—the curriculum covers essential language tasks, from syntax and semantics to complex applications like question answering. We'll also touch on current trends in Large Language Models, such as emergent abilities and human-alignment techniques. Ideal for those interested in the intersection of AI and language, the course tackles challenges at the word, sentence, and document levels.
|
|
|
CSC 276-01
Yanan Guo
MW 10:25AM - 11:40AM
|
|
|
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 200-01
Fatemeh Nargesian
MW 11:50AM - 1:05PM
|
|
|
Intensive seminar on cooperative problem solving. Overview of the subdisciplines and the research of the University of Rochester's computer science faculty. Students who participate or intend to participate in research, or who want to improve their problem-solving skills, are well-advised to take CSC 200/200H 200H required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects.
|
|
|
CSC 200H-01
Fatemeh Nargesian
MW 11:50AM - 1:05PM
|
|
|
Intensive seminar on cooperative problem-solving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Students who participate or intend to participate in research, or who want to improve their problem-solving skills, are well-advised to take CSC 200/200H. CSC 200H is required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects.
|
|
|
CSC 283-01
Monika Polak
MW 11:50AM - 1:05PM
|
|
|
In this course students will learn about the current state of Public Key Cryptography. In particular the NIST (National Institute of Standards and Technology) process to solicit, evaluate, and standardize one or more quantum-resistant public-key cryptographic algorithms will be discussed. Quantum-Resistant Cryptography (QRC) refers to cryptographic systems that are secure against both quantum and classical computers. Such systems may be achieved through classical (i.e. non-quantum) means. The security of many commonly used cryptographic protocols (especially public-key cryptosystems) would be compromised if general-purpose large-scale, fault-tolerant quantum computers became a reality. This course covers the consequences of Quantum Computing and why it poses a threat to currently used cryptographic systems, and then discusses potential Post-Quantum cryptosystems designed to be resistant to such attacks.
|
|
|
CSC 171-03
Eustrat Zhupa
MW 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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 171-05
Eustrat Zhupa
MW 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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-04
Andrew Read-McFarland
MW 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 210-01
Andrew Read-McFarland
MW 2:00PM - 3:15PM
|
|
|
The World Wide Web was born around 1990, so it is not much older than most of you. In this course, we will follow the growth of the Web from its toddler years, to early childhood, to its turbulent pre-teen and teenage years, and finally as it begins to mature as a young adult. Along this journey, you will learn influential Web technologies such as HTTP, HTML, JavaScript, CSS, the LAMP stack, XML, JSON, Ajax, WebSockets, and modern MVC frameworks. Even though you will be doing a lot of programming in this course, its purpose is not to teach you to become an expert in any particular language or framework. Web technologies change at a blistering pace, so specifics quickly get outdated. However, once you take this course and understand the fundamentals, you will be able to easily pick up new technologies on the fly. Prerequisites: CSC 172. No Audits.
|
|
|
CSC 261-01
Eustrat Zhupa
MW 2:00PM - 3:15PM
|
|
|
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-01
Kaave Hosseini
MW 2:00PM - 3:15PM
|
|
|
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. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE
|
|
|
CSC 161-04
Andrew Read-McFarland
MW 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 172-06
Andrew Read-McFarland
MW 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 258-01
Michael Scott
MW 3:25PM - 4:40PM
|
|
|
Principles of parallel and distributed systems, and the associated implementation and performance issues. Topics covered will include programming interfaces to parallel and distributed computing, interprocess communication, synchronization, and consistency models, fault tolerance and reliability, distributed process management, distributed file systems, multiprocessor architectures, parallel program optimization, and parallelizing compilers. Students taking this course at the 400 level will be required to complete additional readings and/or assignments.
|
|
|
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 171-02
Eustrat Zhupa
MW 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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 285-01
Lane Hemaspaandra
MW 4:50PM - 6:05PM
|
|
|
This course covers gems from the study of elections and the study of algorithms. Students do not need to have previous exposure to either of those topics. Most of the class's work is done via in-class, hands-on, team-based problem-solving, and discussion of the solutions. Topics vary between years, but typical topics include how to fairly apportion (e.g., assign to states their number of seats in the US House of Representatives); using algorithms to manipulate elections and using complexity to protect elections from manipulative attacks; and the interaction between algorithms and information content. The course is designed to be accessible to any student from CSC, ECON, MATH, or PSCI who likes tackling problems as part of a team and discussing the solutions; no experience is assumed or expected beyond satisfying the flexible prerequisite. Prerequisites: Permission of the instructor or at least one of the following: MATH 150, MATH 143, MATH 162, MATH 172, PSCI 107, CSC 173, CSC 280, CSC 281, CSC 282.
|
|
|
CSC 288-01
Kaave Hosseini
MW 4:50PM - 6:05PM
|
|
|
In this course we introduce a number of tools with analytic flavor that have an impressive range of applications in computer science and discrete mathematics. Although the objects we are dealing with (such as graphs, sets, boolean functions, and various models of computation) are discrete in nature, it turns out that an analytic point of view —as opposed to a purely combinatorial one— provides a powerful lens to study these objects. We start with elementary tools such as probabilistic concentration bounds and then move on to more advanced material such as spectral graph theory, discrete Fourier analysis, and pseudorandomness. Applications of these tools in areas such as algorithms, coding theory, complexity theory, discrete mathematics, and machine learning will be discussed.
|
|
|
CSC 161-03
Andrew Read-McFarland
MW 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 172-03
Andrew Read-McFarland
MW 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).
|
|
| Tuesday | |
|
CSC 161-11
Andrew Read-McFarland
T 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 172-13
Andrew Read-McFarland
T 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 273W-02
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 161-12
Andrew Read-McFarland
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 171-13
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 171-14
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-17
Andrew Read-McFarland
T 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 273W-01
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 161-13
Andrew Read-McFarland
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 171-15
Eustrat Zhupa
T 6:15PM - 7:30PM
|
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 171-16
Eustrat Zhupa
T 6:15PM - 7:30PM
|
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-14
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 282-02
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
|
CSC 161-14
Andrew Read-McFarland
T 7:40PM - 8:55PM
|
|
|
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-15
Andrew Read-McFarland
T 7:40PM - 8:55PM
|
|
|
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).
|
|
| Tuesday and Thursday | |
|
CSC 240-01
Monika Polak
TR 9:40AM - 10:55AM
|
|
|
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. Prerequisites will be strictly enforced: CSC171, CSC 172 and MATH 161 Recommended: CSC 242 or CSC262 and MATH165
|
|
|
CSC 243-01
Ralf Haefner
TR 9:40AM - 10:55AM
|
|
|
This is a seminar-style course for advanced undergraduate and graduate students covering multiple areas of computational neuroscience by weekly readings and student presentations. Many of the topics are deeper explorations of topics covered in Introduction to Computational Neuroscience, focusing on the sensory system, decision-making, action selection and active inference, especially from a probabilistic and normative perspective. The reading list is somewhat flexible and adaptable to student interest. There is an opportunity for a final project but this is not required.
|
|
|
CSC 249-01
Jiebo Luo
TR 9:40AM - 10:55AM
|
|
|
Introduction to computer vision, including camera models, basic image processing, pattern and object recognition, and elements of human vision. Specific topics include geometric issues, statistical models, Hough transforms, color theory, texture, and optic flow. CSC 449, a graduate-level course, requires additional readings and assignments. Prerequisites: MATH 161 and CSC 242; MATH 165 strongly recommended
|
|
|
CSC 282-01
Eustrat Zhupa
TR 9:40AM - 10:55AM
|
|
|
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
|
CSC 172-01
Andrew Read-McFarland
TR 11:05AM - 12:20PM
|
|
|
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 186-01
Ted Pawlicki
TR 11:05AM - 12:20PM
|
|
|
This course is a hands-on lab based introduction to software engineering and computer programming using the development of computer/video games as the application area. Topics will include mesh modeling, level design, asset management, shading, texturing, lighting, event scripting, character rigging, and particle effects.
|
|
|
CSC 229-01
Robert Jacobs
TR 11:05AM - 12:20PM
|
|
|
How can computer models help us understand how people perceive and reason about their environments? This course addresses this question, with emphasis placed on how people use probabilistic reasoning in order to represent and manage ambiguity and uncertainty for the purpose of making intelligent decisions. The course is relevant to students with interests in computational studies of human perception and cognition, and to students with interests in artificial intelligence. Homework assignments will require students to write computer programs using the Python programming language. Prerequisites: MATH 161, MATH 162, and CSC 161 (or equivalent proficiency in Python programming) required. MATH 164, MATH 165, and/or STAT 213 are helpful but not required.
|
|
|
CSC 246-01
Xiangxiang Xu
TR 11:05AM - 12:20PM
|
|
|
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. Prerequisites: MATH 165 and a complete calculus sequence (e.g., MATH 14x, 16x, or 17x). Recommended: STAT 190 or similar statistics course
|
|
|
CSC 295-01
Ted Pawlicki
TR 12:30PM - 1:45PM
|
|
|
This course is a introduction to areas in Quantum Computing from a programming, algorithmic and mathematical perspective. Familiarity with Quantum Mechanics is not required. Areas covered include: the Qbit representation of information, superposition, entanglement, interference, Hilbert Spaces, reversible computations, Quantum teleportation, Deutsch-Jozsa Algorithm, Simon's Algorithm, Grover's Algorithm, Shor's Algorithm and the philosophical interpretations of Quantum Mechanics (Copenhagen, Many Worlds, etc.) The focus is on programming quantum computers.
|
|
|
CSC 161-02
Andrew Read-McFarland
TR 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
TR 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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 173-01
George Ferguson
TR 2:00PM - 3:15PM
|
|
|
An introduction to some of the most important formal models of computation and their application to real-world computing problems. Prerequisites: CSC 172 and MATH 150
|
|
|
CSC 160-01
Adam Purtee
TR 3:25PM - 4:40PM
|
|
|
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 216-01
Zhen Bai
TR 3:25PM - 4:40PM
|
|
|
Human activity is embodied through all our sensorimotor capacities, immersed in our immediate physical, social & cultural surroundings. Interaction technologies such as Augmented Reality (AR) & Virtual Reality (VR) have shown vast potential to enhance the way we think, feel & behave by superimposing/substituting digital contents onto/with our reality. This course is an introduction to AR,VR & related technologies, aiming to help students build a frame of reference of those technologies, apply them in design practices that address real-world problems, & actively reflect on social implications. CSC 172 and CSC 214 required (or proven equivalent application development experience); CSC 131 recommended.
|
|
|
CSC 254-01
George Ferguson
TR 3:25PM - 4:40PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 161-01
Andrew Read-McFarland
TR 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 172-02
Andrew Read-McFarland
TR 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 242-01
Adam Purtee
TR 4:50PM - 6:05PM
|
|
|
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 161-05
Andrew Read-McFarland
TR 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 214-01
Arthur Roolfs
TR 6:15PM - 7:30PM
|
|
|
Coursework covers user interface designs and functional algorithms for mobile devices (iOS fall, Android spring) and unique user interactions using multi-touch technologies. Object-oriented design using model-view-controller paradigm, memory management. Other topics include: object-oriented database API, animation, multi-threading and performance considerations. Prerequisite: CSC 172
|
|
| Wednesday | |
|
CSC 171-06
Eustrat Zhupa
W 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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 161-09
Andrew Read-McFarland
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 171-19
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 171-20
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 254-07
George Ferguson
W 3:25PM - 4:40PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 254-12
George Ferguson
W 3:25PM - 4:40PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 161-16
Andrew Read-McFarland
W 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 172-18
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 254-08
George Ferguson
W 4:50PM - 6:05PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 254-09
George Ferguson
W 4:50PM - 6:05PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 280-02
Kaave Hosseini
W 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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
|
CSC 161-17
Andrew Read-McFarland
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 171-21
Eustrat Zhupa
W 6:15PM - 7:30PM
|
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-19
Andrew Read-McFarland
W 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 280-03
Kaave Hosseini
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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
|
CSC 282-03
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
|
CSC 161-18
Andrew Read-McFarland
W 7:40PM - 8:55PM
|
|
|
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 282-05
Eustrat Zhupa
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. Prerequisites: (CSC 172 and MATH 150) or MATH172.
|
|
| Wednesday and Friday | |
|
CSC 252-01
Yuhao Zhu
WF 3:25PM - 4:40PM
|
|
|
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. Prerequisites: MATH 150 and CSC 172
|
|
| Thursday | |
|
CSC 161-19
Andrew Read-McFarland
R 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 280-09
Kaave Hosseini
R 3:25PM - 4:40PM
|
|
|
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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
|
CSC 172-22
Andrew Read-McFarland
R 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 280-04
Kaave Hosseini
R 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. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics
|
|
|
CSC 161-15
Andrew Read-McFarland
R 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 171-22
Eustrat Zhupa
R 6:15PM - 7:30PM
|
|
|
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. Lab and workshop required. 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. Lab and workshop required.
|
|
|
CSC 172-23
Andrew Read-McFarland
R 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 254-04
George Ferguson
R 6:15PM - 7:30PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 254-05
George Ferguson
R 6:15PM - 7:30PM
|
|
|
Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. In-depth examination of 'how programming languages work.' Topics include fundamental language concepts (names, values, types, abstraction, control flow); compilation and interpretation (syntactic and semantic analysis, code generation and optimization); major language paradigms (imperative, object-oriented, functional, logic-based, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues. Prerequisites: CSC 173 and CSC 252 Computer Organization, or equivalent.
|
|
|
CSC 161-20
Andrew Read-McFarland
R 7:40PM - 8:55PM
|
|
|
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.
|
|
| Friday | |
|
CSC 243-02
Ralf Haefner
F 2:00PM - 3:15PM
|
|
|
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. Programming experience is required. This course is taught every other year, alternating with Intro to Computational Neuroscience. Prerequisite: CSC 241 or permission of instructor
|
|