Spring Term Schedule
Spring 2025
Number | Title | Instructor | Time |
---|
CSC 1000-1
|
Graduate teaching assistantship in Computer Science.
|
CSC 1001-1
|
Graduate research assistantship in Computer Science.
|
CSC 161-1
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. This course is for non-majors, and/or students with less math and science background. Lab and workshop required. This course may not be used for CSC major credit if completed after or at the same time as CSC171
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-11
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-15
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-19
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-2
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-20
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-21
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-22
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-3
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-4
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-5
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-6
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-7
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-8
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 161-9
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
CSC 170-1
Eustrat Zhupa
TR 11:05AM - 12:20PM
|
An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.
|
CSC 170-2
Eustrat Zhupa
MW 9:00AM - 10:15AM
|
An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.
|
CSC 170-3
Eustrat Zhupa
MW 12:30PM - 1:45PM
|
An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.
|
CSC 171-1
Adam Purtee
TR 2:00PM - 3:15PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required. Required for all CSC & DSCC majors.
|
CSC 171-10
Adam Purtee
M 6:15PM - 7:30PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-11
Adam Purtee
M 6:15PM - 7:30PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-12
Adam Purtee
M 7:40PM - 8:55PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-13
Adam Purtee
T 4:50PM - 6:05PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-14
Adam Purtee
T 4:50PM - 6:05PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-15
Adam Purtee
T 6:15PM - 7:30PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-16
Adam Purtee
T 6:15PM - 7:30PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-17
Adam Purtee
T 7:40PM - 8:55PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-18
Adam Purtee
T 7:40PM - 8:55PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-19
Adam Purtee
W 3:25PM - 4:40PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-2
Adam Purtee
MW 4:50PM - 6:05PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-20
Adam Purtee
W 3:25PM - 4:40PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-21
Adam Purtee
W 6:15PM - 7:30PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-22
Adam Purtee
R 6:15PM - 7:30PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-3
Adam Purtee
MW 12:30PM - 1:45PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-4
Adam Purtee
MW 10:25AM - 11:40AM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-5
Adam Purtee
MW 2:00PM - 3:15PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-6
Adam Purtee
W 10:25AM - 11:40AM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-8
Adam Purtee
M 4:50PM - 6:05PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 171-9
Adam Purtee
M 4:50PM - 6:05PM
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
CSC 172-1
Monika Polak
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). Lab and workshop required. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.
|
CSC 172-10
Monika Polak
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). Lab and workshop required.
|
CSC 172-11
Monika Polak
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). Lab and workshop required.
|
CSC 172-12
Monika Polak
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). Lab and workshop required.
|
CSC 172-13
Monika Polak
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). Lab and workshop required.
|
CSC 172-14
Monika Polak
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). Lab and workshop required.
|
CSC 172-15
Monika Polak
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). Lab and workshop required.
|
CSC 172-16
Monika Polak
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). Lab and workshop required.
|
CSC 172-17
Monika Polak
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). Lab and workshop required.
|
CSC 172-18
Monika Polak
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). Lab and workshop required.
|
CSC 172-19
Monika Polak
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). Lab and workshop required.
|
CSC 172-2
Monika Polak
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). Lab and workshop required.
|
CSC 172-20
Monika Polak
W 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). Lab and workshop required.
|
CSC 172-21
Monika Polak
W 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). Lab and workshop required.
|
CSC 172-22
Monika Polak
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). Lab and workshop required.
|
CSC 172-23
Monika Polak
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). Lab and workshop required.
|
CSC 172-3
Monika Polak
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). Lab and workshop required.
|
CSC 172-4
Monika Polak
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). Lab and workshop required.
|
CSC 172-5
Monika Polak
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). Lab and workshop required.
|
CSC 172-6
Monika Polak
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). Lab and workshop required.
|
CSC 172-7
Monika Polak
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). Lab and workshop required.
|
CSC 172-8
Monika Polak
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). Lab and workshop required.
|
CSC 172-9
Monika Polak
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). Lab and workshop required.
|
CSC 173-1
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 MTH 150. No audits allowed.
|
CSC 186-1
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-1
Fatemeh Nargesian
MW 4:50PM - 6: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. Prerequisite: All BS pre-major requirements and CSC 173
|
CSC 200H-1
Fatemeh Nargesian
MW 4:50PM - 6: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. Prerequisites: All premajor requirements and CSC 173
|
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. Prerequisites: At least one course that covers neural networks, e.g., CSC 242, CSC 298/578, CSC 266/466, CSC 249/449, CSC 277/3477, or instructor permission. 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-1
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 211-01
Zhen Bai
TR 12:30PM - 1:45PM
|
The goal of this course is to provide an introductory overview of the concepts, principles, methods and special topics of Human-Computer Interaction (HCI). This course will help students to build a frame of reference of HCI approaches and apply them in conducting design practices for real-world problems. This course contains a combination of lectures, seminars and group projects. The lectures will cover origins of HCI and interaction design, user-centered design methods, usability evaluation and user experience. The seminars will be a combination of guest lecturers and student-led discussions to introduce special topics in HCI, which may include Augmented and Virtual Reality, Tangible User Interface, Human-Robot Interaction, learning technologies, and assistive technologies. The group project will take place throughout the course and provide an opportunity for students to apply and reflect on HCI methods and user-centered design processes through contextual inquiry, prototyping, evaluation, iteration and presentation. Prerequisite: CSC 172 Previous completion of CSC 214 is preferred.
|
CSC 214-1
Arthur Roolfs
TR 6:15PM - 7:30PM
|
Coursework covers UI design and functional algorithms for Android mobile devices. It incorporates an introduction to the Kotlin computer language, object-oriented design with architectural patterns like MVVM, data persistence via ORM as well as an introduction to leveraging REST APIs. Additional topics include in-app navigation, animation, localization, and performance considerations. Prerequisites: CSC 172
|
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-1
Jian Kang
TR 4:50PM - 6:05PM
|
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; MATH165. Open to CSC and DSCC majors only during registration week.
|
CSC 242-1
Yukang Yan
TR 9:40AM - 10:55AM
|
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. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended.
|
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 246-1
Adam Purtee
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. Prereqs: CSC 172 & CSC 242
|
CSC 249-1
Chenliang Xu
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 251-1
Michael Huang
TR 12:30PM - 1:45PM
|
This course is cross-listed with ECE 201. Check the description there.
|
CSC 252-1
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: MTH 150 and CSC 172
|
CSC 254-1
Michael Scott
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 Computation and Formal Systems, and CSC 252 Computer Organization, or equivalent.
|
CSC 254-10
Michael Scott
W 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.
|
CSC 254-12
Michael Scott
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.
|
CSC 254-3
Michael Scott
R 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.
|
CSC 254-4
Michael Scott
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.
|
CSC 254-5
Michael Scott
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.
|
CSC 254-7
Michael Scott
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.
|
CSC 254-8
Michael Scott
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.
|
CSC 254-9
Michael Scott
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.
|
CSC 255-1
Sree Pai
MW 10:25AM - 11:40AM
|
Programming is the automation of information processing. Program analysis and transformation is the automation of programming itself---how much a program can understand and improve other programs. Because of the diversity and complexity of computer hardware, programmers increasingly depend on automation in compilers and other tools to deliver efficient and reliable software. This course combines fundamental principles and (hands-on) practical applications. Specific topics include data flow and dependence theories; static and dynamic program transformation including parallelization; memory and cache management; type checking and program verification; and performance analysis and modeling. The knowledge and practice will help students to become experts in software performance and correctness. Students taking the graduate level will have additional course requirements and a more difficult project. Recommended prerequisites: CSC 252, CSC 254.
|
CSC 258-1
Andrew Read-McFarland
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. Prerequisites: CSC 252 and (CSC 254 or CSC 256) or instructor permission
|
CSC 261-1
Eustrat Zhupa
MW 10:25AM - 11:40AM
|
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. Prerequisites: CSC 172; CSC 173 and CSC 252 recommended.
|
CSC 263-1
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) Note: Only open to CSC & DSCC majors during registration week. Restriction will be lifted Monday, November 18th.
|
CSC 273W-1
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-2
Joseph Loporcaro
R 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 278-1
John Criswell
MW 6:15PM - 7:30PM
|
This course will teach students the foundations of computer security. Students will learn what security is, the design principles of secure systems, how security is enforced, and how security is compromised. Topics include access controls, information flow, basic applications of cryptography, buffer overflow attacks, and malware. Prerequisites: CSC 252 or CSC 452 or ECE 200.
|
CSC 280-1
Monika Polak
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. Prerequisites include CSC 173 and MATH 150. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE
|
CSC 280-2
Monika Polak
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, NP-completeness. Prerequisites are CSC 173 and MTH 150.
|
CSC 280-3
Monika Polak
W 6:15PM - 7:30PM
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. Prerequisites include CSC 173 and MTH 150.
|
CSC 280-4
Monika Polak
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, NP-completeness. Prerequisites include CSC 173 and MTH 150
|
CSC 280-5
Monika Polak
R 6:15PM - 7:30PM
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. Prerequisites include CSC 173 and MTH 150.
|
CSC 280-7
Monika Polak
W 6:15PM - 7:30PM
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. Prerequisites are CSC 173 and MTH 150.
|
CSC 280-8
Monika Polak
R 7:40PM - 8:55PM
|
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. Prerequisites are CSC 173 and MTH 150.
|
CSC 280-9
Monika Polak
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, NP-completeness. Prerequisites are CSC 173 and MTH 150
|
CSC 282-1
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. Students MUST register for the recitation when registering for this course.
|
CSC 282-2
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.
|
CSC 282-3
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.
|
CSC 282-4
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.
|
CSC 282-5
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.
|
CSC 283-1
Monika Polak
MW 9:00AM - 10:15AM
|
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. Students enrolled in this course must have a background in cryptography such as that obtained by taking CSC-281/CSC-481 (Introduction to Cryptography) or similar courses, or permission of the instructor.
|
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, MATH162, MATH172, PSCI107, CSC173, CSC280, CSC 281, CSC 282.
|
CSC 286-1
Lane Hemaspaandra
MW 2:00PM - 3:15PM
|
This course is based on doing hands-on problem-solving to uncover the power and limitations of computer algorithms, and in particular focuses on in-class, group, discovery-based learning. This is usually done via the class's members creating algorithms under situation-specific assumptions, as much of complexity theory is based on simple algorithms. If you secretly liked 280 or 282, but would enjoy moving forward in a much smaller setting where you work with a few teammates to solve challenges and discover/design algorithms, this course likely is for you. The course typically covers the following: The difference between computable and uncomputable problems and between feasible and infeasible problems. Regarding the latter, what properties of a problem make it computationally simple? What properties of a problem may preclude its having efficient algorithms? How computationally hard are problems? Complete sets and low information content; P=NP?; characterizing whether one-way functions exist; reductions relating problems' complexities; complexity classes and hierarchies. Prerequisite: CSC 280
|
CSC 294-01
Jiaming Liang
TR 2:00PM - 3:15PM
|
This course serves as a modern introduction to the field of optimization. It covers important topics such as convexity, optimality conditions, duality, gradient methods, and Newton's method. The objective is to provide the foundations of theory and algorithms of nonlinear optimization, as well as to present a variety of applications from diverse areas. Prerequisites: The course is intended for advanced undergraduate students with mathematical maturity in multivariate calculus (MATH 164) and linear algebra (MATH 165). Prior knowledge of optimization (MATH 208) is helpful but not required. Students should have good MATLAB or Python programming skills.
|
CSC 295-1
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. Prerequisites Any introductory computer programming course is strictly required : CSC161, CSC171, ECE114. Any course covering Linear Algebra is required. Previous familiarity with Quantum Mechanics (physics perspective) is NOT required.
|
CSC 297-01
George Ferguson
TR 9:40AM - 10:55AM
|
This course will explore important topics in computer science through student presentations. DO NOT register for this course if you do not want to present in class AND participate in the presentations of others. Prerequisites: Students MUST have at least four of the six core CSC courses completed prior to registering for the courses, and at least five of the six core CSC courses completed prior to the start of term. Attendance is required. DO NOT register for this course if you will not attend class.
|
CSC 299W-1
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-1
Chenliang Xu
|
Blank Description
|
CSC 391-01
Lane Hemaspaandra
|
No description
|
CSC 391H-01
Hangfeng He
|
No description
|
CSC 391W-01
Jiebo Luo
|
No description
|
CSC 392-1
|
Registration for Independent Study courses needs to be completed thru the instructions for online independent study registration.
|
CSC 395-01
Ehsan Hoque
|
Blank Description
|
CSC 395H-01
Aaron White
|
Blank Description
|
CSC 395W-01
Lenhart Schubert
|
No description
|
Spring 2025
Number | Title | Instructor | Time |
---|---|
Monday | |
CSC 161-6
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
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. Prerequisites: At least one course that covers neural networks, e.g., CSC 242, CSC 298/578, CSC 266/466, CSC 249/449, CSC 277/3477, or instructor permission. 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-7
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 172-7
Monika Polak
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). Lab and workshop required.
|
|
CSC 161-8
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 161-9
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-8
Adam Purtee
M 4:50PM - 6:05PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-9
Adam Purtee
M 4:50PM - 6:05PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-8
Monika Polak
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). Lab and workshop required.
|
|
CSC 172-9
Monika Polak
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). Lab and workshop required.
|
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 161-11
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-10
Adam Purtee
M 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-11
Adam Purtee
M 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-10
Monika Polak
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). Lab and workshop required.
|
|
CSC 282-4
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.
|
|
CSC 171-12
Adam Purtee
M 7:40PM - 8:55PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-11
Monika Polak
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). Lab and workshop required.
|
|
CSC 172-12
Monika Polak
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). Lab and workshop required.
|
|
Monday and Wednesday | |
CSC 170-2
Eustrat Zhupa
MW 9:00AM - 10:15AM
|
|
An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.
|
|
CSC 263-1
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) Note: Only open to CSC & DSCC majors during registration week. Restriction will be lifted Monday, November 18th.
|
|
CSC 283-1
Monika Polak
MW 9:00AM - 10:15AM
|
|
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. Students enrolled in this course must have a background in cryptography such as that obtained by taking CSC-281/CSC-481 (Introduction to Cryptography) or similar courses, or permission of the instructor.
|
|
CSC 171-4
Adam Purtee
MW 10:25AM - 11:40AM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
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. Prereqs: CSC 172 & CSC 242
|
|
CSC 255-1
Sree Pai
MW 10:25AM - 11:40AM
|
|
Programming is the automation of information processing. Program analysis and transformation is the automation of programming itself---how much a program can understand and improve other programs. Because of the diversity and complexity of computer hardware, programmers increasingly depend on automation in compilers and other tools to deliver efficient and reliable software. This course combines fundamental principles and (hands-on) practical applications. Specific topics include data flow and dependence theories; static and dynamic program transformation including parallelization; memory and cache management; type checking and program verification; and performance analysis and modeling. The knowledge and practice will help students to become experts in software performance and correctness. Students taking the graduate level will have additional course requirements and a more difficult project. Recommended prerequisites: CSC 252, CSC 254.
|
|
CSC 261-1
Eustrat Zhupa
MW 10:25AM - 11:40AM
|
|
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. Prerequisites: CSC 172; CSC 173 and CSC 252 recommended.
|
|
CSC 170-3
Eustrat Zhupa
MW 12:30PM - 1:45PM
|
|
An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.
|
|
CSC 171-3
Adam Purtee
MW 12:30PM - 1:45PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-5
Adam Purtee
MW 2:00PM - 3:15PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-4
Monika Polak
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). Lab and workshop required.
|
|
CSC 210-1
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 280-1
Monika Polak
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. Prerequisites include CSC 173 and MATH 150. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE
|
|
CSC 286-1
Lane Hemaspaandra
MW 2:00PM - 3:15PM
|
|
This course is based on doing hands-on problem-solving to uncover the power and limitations of computer algorithms, and in particular focuses on in-class, group, discovery-based learning. This is usually done via the class's members creating algorithms under situation-specific assumptions, as much of complexity theory is based on simple algorithms. If you secretly liked 280 or 282, but would enjoy moving forward in a much smaller setting where you work with a few teammates to solve challenges and discover/design algorithms, this course likely is for you. The course typically covers the following: The difference between computable and uncomputable problems and between feasible and infeasible problems. Regarding the latter, what properties of a problem make it computationally simple? What properties of a problem may preclude its having efficient algorithms? How computationally hard are problems? Complete sets and low information content; P=NP?; characterizing whether one-way functions exist; reductions relating problems' complexities; complexity classes and hierarchies. Prerequisite: CSC 280
|
|
CSC 161-4
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 172-6
Monika Polak
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). Lab and workshop required.
|
|
CSC 258-1
Andrew Read-McFarland
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. Prerequisites: CSC 252 and (CSC 254 or CSC 256) or instructor permission
|
|
CSC 299W-1
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-2
Adam Purtee
MW 4:50PM - 6:05PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 200-1
Fatemeh Nargesian
MW 4:50PM - 6: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. Prerequisite: All BS pre-major requirements and CSC 173
|
|
CSC 200H-1
Fatemeh Nargesian
MW 4:50PM - 6: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. Prerequisites: All premajor requirements and CSC 173
|
|
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, MATH162, MATH172, PSCI107, CSC173, CSC280, CSC 281, CSC 282.
|
|
CSC 161-3
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 172-3
Monika Polak
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). Lab and workshop required.
|
|
CSC 172-5
Monika Polak
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). Lab and workshop required.
|
|
CSC 278-1
John Criswell
MW 6:15PM - 7:30PM
|
|
This course will teach students the foundations of computer security. Students will learn what security is, the design principles of secure systems, how security is enforced, and how security is compromised. Topics include access controls, information flow, basic applications of cryptography, buffer overflow attacks, and malware. Prerequisites: CSC 252 or CSC 452 or ECE 200.
|
|
Tuesday | |
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-13
Adam Purtee
T 4:50PM - 6:05PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-14
Adam Purtee
T 4:50PM - 6:05PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 273W-1
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-15
Adam Purtee
T 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-16
Adam Purtee
T 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-13
Monika Polak
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). Lab and workshop required.
|
|
CSC 172-14
Monika Polak
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). Lab and workshop required.
|
|
CSC 282-2
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.
|
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-17
Adam Purtee
T 7:40PM - 8:55PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-18
Adam Purtee
T 7:40PM - 8:55PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-15
Monika Polak
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). Lab and workshop required.
|
|
CSC 172-16
Monika Polak
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). Lab and workshop required.
|
|
Tuesday and Thursday | |
CSC 242-1
Yukang Yan
TR 9:40AM - 10:55AM
|
|
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. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended.
|
|
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-1
Chenliang Xu
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-1
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. Students MUST register for the recitation when registering for this course.
|
|
CSC 297-01
George Ferguson
TR 9:40AM - 10:55AM
|
|
This course will explore important topics in computer science through student presentations. DO NOT register for this course if you do not want to present in class AND participate in the presentations of others. Prerequisites: Students MUST have at least four of the six core CSC courses completed prior to registering for the courses, and at least five of the six core CSC courses completed prior to the start of term. Attendance is required. DO NOT register for this course if you will not attend class.
|
|
CSC 170-1
Eustrat Zhupa
TR 11:05AM - 12:20PM
|
|
An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.
|
|
CSC 172-1
Monika Polak
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). Lab and workshop required. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.
|
|
CSC 186-1
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-1
Adam Purtee
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 211-01
Zhen Bai
TR 12:30PM - 1:45PM
|
|
The goal of this course is to provide an introductory overview of the concepts, principles, methods and special topics of Human-Computer Interaction (HCI). This course will help students to build a frame of reference of HCI approaches and apply them in conducting design practices for real-world problems. This course contains a combination of lectures, seminars and group projects. The lectures will cover origins of HCI and interaction design, user-centered design methods, usability evaluation and user experience. The seminars will be a combination of guest lecturers and student-led discussions to introduce special topics in HCI, which may include Augmented and Virtual Reality, Tangible User Interface, Human-Robot Interaction, learning technologies, and assistive technologies. The group project will take place throughout the course and provide an opportunity for students to apply and reflect on HCI methods and user-centered design processes through contextual inquiry, prototyping, evaluation, iteration and presentation. Prerequisite: CSC 172 Previous completion of CSC 214 is preferred.
|
|
CSC 251-1
Michael Huang
TR 12:30PM - 1:45PM
|
|
This course is cross-listed with ECE 201. Check the description there.
|
|
CSC 295-1
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. Prerequisites Any introductory computer programming course is strictly required : CSC161, CSC171, ECE114. Any course covering Linear Algebra is required. Previous familiarity with Quantum Mechanics (physics perspective) is NOT required.
|
|
CSC 161-2
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-1
Adam Purtee
TR 2:00PM - 3:15PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required. Required for all CSC & DSCC majors.
|
|
CSC 173-1
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 MTH 150. No audits allowed.
|
|
CSC 294-01
Jiaming Liang
TR 2:00PM - 3:15PM
|
|
This course serves as a modern introduction to the field of optimization. It covers important topics such as convexity, optimality conditions, duality, gradient methods, and Newton's method. The objective is to provide the foundations of theory and algorithms of nonlinear optimization, as well as to present a variety of applications from diverse areas. Prerequisites: The course is intended for advanced undergraduate students with mathematical maturity in multivariate calculus (MATH 164) and linear algebra (MATH 165). Prior knowledge of optimization (MATH 208) is helpful but not required. Students should have good MATLAB or Python programming skills.
|
|
CSC 254-1
Michael Scott
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 Computation and Formal Systems, and CSC 252 Computer Organization, or equivalent.
|
|
CSC 161-1
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. This course is for non-majors, and/or students with less math and science background. Lab and workshop required. This course may not be used for CSC major credit if completed after or at the same time as CSC171
|
|
CSC 172-2
Monika Polak
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). Lab and workshop required.
|
|
CSC 240-1
Jian Kang
TR 4:50PM - 6:05PM
|
|
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; MATH165. Open to CSC and DSCC majors only during registration week.
|
|
CSC 161-5
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 214-1
Arthur Roolfs
TR 6:15PM - 7:30PM
|
|
Coursework covers UI design and functional algorithms for Android mobile devices. It incorporates an introduction to the Kotlin computer language, object-oriented design with architectural patterns like MVVM, data persistence via ORM as well as an introduction to leveraging REST APIs. Additional topics include in-app navigation, animation, localization, and performance considerations. Prerequisites: CSC 172
|
|
Wednesday | |
CSC 171-6
Adam Purtee
W 10:25AM - 11:40AM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-19
Adam Purtee
W 3:25PM - 4:40PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 171-20
Adam Purtee
W 3:25PM - 4:40PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 254-12
Michael Scott
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.
|
|
CSC 254-7
Michael Scott
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.
|
|
CSC 161-15
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 172-17
Monika Polak
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). Lab and workshop required.
|
|
CSC 172-18
Monika Polak
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). Lab and workshop required.
|
|
CSC 254-8
Michael Scott
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.
|
|
CSC 254-9
Michael Scott
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.
|
|
CSC 280-2
Monika Polak
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, NP-completeness. Prerequisites are CSC 173 and MTH 150.
|
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 171-21
Adam Purtee
W 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-19
Monika Polak
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). Lab and workshop required.
|
|
CSC 254-10
Michael Scott
W 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.
|
|
CSC 280-3
Monika Polak
W 6:15PM - 7:30PM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. Prerequisites include CSC 173 and MTH 150.
|
|
CSC 280-7
Monika Polak
W 6:15PM - 7:30PM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. Prerequisites are CSC 173 and MTH 150.
|
|
CSC 282-3
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.
|
|
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 161-19
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 161-20
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 172-20
Monika Polak
W 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). Lab and workshop required.
|
|
CSC 172-21
Monika Polak
W 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). Lab and workshop required.
|
|
CSC 282-5
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.
|
|
Wednesday and Friday | |
CSC 252-1
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: MTH 150 and CSC 172
|
|
Thursday | |
CSC 273W-2
Joseph Loporcaro
R 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 254-3
Michael Scott
R 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.
|
|
CSC 280-9
Monika Polak
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, NP-completeness. Prerequisites are CSC 173 and MTH 150
|
|
CSC 172-22
Monika Polak
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). Lab and workshop required.
|
|
CSC 280-4
Monika Polak
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, NP-completeness. Prerequisites include CSC 173 and MTH 150
|
|
CSC 171-22
Adam Purtee
R 6:15PM - 7:30PM
|
|
Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Lab and Workshop Required Required for all CSC & DSCC majors.
|
|
CSC 172-23
Monika Polak
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). Lab and workshop required.
|
|
CSC 254-4
Michael Scott
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.
|
|
CSC 254-5
Michael Scott
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.
|
|
CSC 280-5
Monika Polak
R 6:15PM - 7:30PM
|
|
This course studies fundamental computer models and their computational limitations. Finite-state machines and pumping lemmas, the context-free languages, Turing machines, decidable and Turing-recognizable languages, undecidability, NP-completeness. Prerequisites include CSC 173 and MTH 150.
|
|
CSC 161-21
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 161-22
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. Recommended for non-majors, and/or students with less math and science background. Lab and workshop required.
|
|
CSC 280-8
Monika Polak
R 7:40PM - 8:55PM
|
|
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. Prerequisites are CSC 173 and MTH 150.
|