Fall Term Schedule
Fall 2024
Number  Title  Instructor  Time 

CSC 1311
Thaddeus Pawlicki
TR 11:05AM  12:20PM


A hands on introduction to 3D computer graphics and animation techniques taught from a user point of view. Topics include 3D modeling, animation, and simulation.


CSC 1611
Monika Polak
TR 11:05AM  12:20PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16110
Monika Polak
R 2:00PM  3:15PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16111
Monika Polak
R 4:50PM  6:05PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16112
Monika Polak
R 7:40PM  8:55PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16113
Monika Polak
T 3:25PM  4:40PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16114
Monika Polak
T 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16115
Monika Polak
TR 12:30PM  1:45PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16116
Monika Polak
W 3:25PM  4:40PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16117
Monika Polak
W 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16118
Monika Polak
TR 4:50PM  6:05PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16119
Monika Polak
MW 3:25PM  4:40PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16120
Monika Polak
W 9:00AM  10:15AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16121
Monika Polak
M 9:00AM  10:15AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16122
Monika Polak
M 9:00AM  10:15AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16123
Monika Polak
W 2:00PM  3:15PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1613
Monika Polak
U 1:30PM  3:00PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1615
Monika Polak
M 10:25AM  11:40AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1616
Monika Polak
M 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1618
Monika Polak
MW 12:30PM  1:45PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1619
Monika Polak
MW 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1701
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. Students must register for a lab when registering for the lecture.


CSC 1702
Eustrat Zhupa
MW 10:25AM  11:40AM


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 1703
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 1711
Adam Purtee
MW 10:25AM  11:40AM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required. Open to CSC and DSCC majors only during registration week. NonMajors should plan to take CSC 171 during Spring and Summer semesters.


CSC 17110
Adam Purtee
M 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17111
Adam Purtee
M 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17113
Adam Purtee
MW 2:00PM  3:15PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17114
Adam Purtee
T 3:25PM  4:40PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17115
Adam Purtee
T 4:50PM  6:05PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17116
Adam Purtee
T 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17117
Adam Purtee
T 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17120
Adam Purtee
TR 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17121
Adam Purtee
TR 9:40AM  10:55AM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17122
Adam Purtee
TR 11:05AM  12:20PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17123
Adam Purtee
TR 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17124
Adam Purtee
W 3:25PM  4:40PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17125
Adam Purtee
W 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1714
Adam Purtee
M 3:25PM  4:40PM


Handson 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. Required for all CSC and DSCC majors. Lab and workshop required.


CSC 1715
Adam Purtee
M 3:25PM  4:40PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1716
Adam Purtee
M 4:50PM  6:05PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1717
Adam Purtee
M 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1719
Adam Purtee
T 2:00PM  3:15PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1721
Thaddeus Pawlicki
TR 9:40AM  10:55AM


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 17210
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17213
Thaddeus Pawlicki
MW 12:30PM  1:45PM


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 17214
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17215
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17216
Thaddeus Pawlicki
MW 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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17218
Thaddeus Pawlicki
R 2:00PM  3:15PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). 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 17219
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17220
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17222
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17224
Thaddeus Pawlicki
TR 12:30PM  1:45PM


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 17225
Thaddeus Pawlicki
TR 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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 17227
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1723
Thaddeus Pawlicki
T 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). 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 1724
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1725
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1726
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1728
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1729
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1731
George Ferguson
MW 2:00PM  3:15PM


An introduction to some of the most important formal models of computation, and their application to realworld computing problems. Prerequisites: CSC 172 and MTH 150. Basic Science Sequence: https://www.rochester.edu/college/ccas/handbook/sciencesequence.html Audits are not allowed.


CSC 2121
Yukang Yan
TR 11:05AM  12:20PM


The course will explore the design, implementation, and evaluation of userdriven prototypes to be used by real users. Students will study the theoretical methods for design and evaluation, including requirements gathering, survey design, ethnography, rapid prototyping, and evaluation techniques. The theoretical knowledge will be supplemented with handson group projects including a final project. The final project will involve interactions with realusers along with a working prototype which hopefully could be deployed and used by people beyond the scope of this course. Prerequisites: CSC 172 and CSC 242


CSC 2141
Arthur Roolfs
TR 6:15PM  7:30PM


Coursework covers user interface designs and functional algorithms for mobile devices (iOS fall, Android spring) and unique user interactions using multitouch technologies. Objectoriented design using modelviewcontroller paradigm, memory management. Other topics include: objectoriented database API, animation, multithreading and performance considerations. Prerequisites: CSC 172 Data Structures & Algorithms


CSC 21601
Zhen Bai
TR 9:40AM  10:55AM


Human activity is embodied through all our sensorimotor capacities, immersed in our immediate physical and social surroundings. Augmented Reality (AR) and Virtual Reality (VR) technologies have shown vast potential to extend our sensorimotor and social experiences in 3D space. This undergraduate/graduate course aims to help students to develop understanding of key AR/VR concepts, principles, technologies, design practices and development tools. The students will obtain handson experiences of creating AR/VR applications that address realworld problems in domains such as education, collaboration, and quality of life, and understand technological and ethical implications of AR/VR such as human behavior sensing and ethical challenges. CSC 172 and CSC 214 required (or proven equivalent application development experience); CSC 131 recommended.


CSC 22701
Maria Helguera
MW 10:25AM  11:40AM


This course will introduce the students to the basic concepts of digital image processing, and establish a good foundation for further study and research in this field. The theoretical components of this course will be presented at a level that seniors and first year graduate students who have taken introductory courses in vectors, matrices, probability, statistics, linear systems, and computer programming should be comfortable with. Topics cover in this course will include intensity transformation and spatial filtering, filtering in the frequency domain, image restoration, morphological image processing, image segmentation, image registration, and image compression. The course will also provide a brief introduction to python (ipython), the primary programming language that will be used for solving problems in class as well as takehome assignments. Prerequisites: ECE 242 and ECE 440 & ECE 446 are recommended or permission of instructor


CSC 2401
Cantay Caliskan
TR 3:25PM  4:40PM


Fundamental concepts and techniques of data mining, including data attributes, data visualization, data preprocessing, mining frequent patterns, association and correlation, classification methods, and cluster analysis. Advanced topics include outlier detection, stream mining, and social media data mining. Prerequisites will be strictly enforced: CSC171, CSC 172 and MATH 161. Recommended: CSC 242 or CSC262; MATH165. Open to CSC and DSCC majors during registration week.


CSC 24101
Ralf Haefner
TR 12:30PM  1:45PM


Computational neuroscience studies how the brain can be understood in terms of computations implemented by neural circuits, and in terms of using computational methods to analyze neural and behavioral data. This course for advanced undergraduates and graduate students starts with models of individuals neurons before moving on to networks of neurons and behavior. It provides both a classic signal processing, and a probabilistic perspective on how neurons support the brain’s computations. While primarily lecturebased, an important part of the course are exercises that typically consist on implementing (programming) a model discussed in the class and analyze its behavior. The course also provides the opportunity for a final project but this is not required. The material mostly considers the sensory system and perceptual decisionmaking. There are no formal prerequisites. However, programming experience and a minimal background in linear algebra (vectors and matrices) and analysis (basic ordinary differential equations) are essential. At the beginning, there will be a very brief introduction to the key biological concepts necessary for the course. In doubt, please email the instructor.


CSC 2421
Thaddeus Pawlicki
TR 3:25PM  4:40PM


Introduces fundamental principles and techniques from Artificial Intelligence, including heuristic search, automated reasoning, handling uncertainty, and machine learning, to prepare students for advanced AI courses. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended. Audits not allowed. Open to CSC and DSCC majors only during registration week.


CSC 24501
Chenliang Xu
TR 9:40AM  10:55AM


Much of the recent advances in machine learning and artificial intelligence have been dominated by neural network approaches broadly described as deep learning. This course provides an overview of the most important deep learning techniques covering both theoretical foundations and practical applications. The applications focus on problems in image understanding and language modeling utilizing stateoftheart deep learning libraries and tools, which are introduced in the course. Prerequisites: MATH 164, MATH 165, and CSC 172. Programming in Python.


CSC 2461
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: This course involves a lot of math and algorithms. You should know multivariable calculus, linear algebra, and some algorithms. No formal prerequisites but MATH 165, MATH 164, and CSC 242 strongly recommended.


CSC 25201
Yanan Guo
MW 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/O buses, 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 Discrete Mathematics and CSC 172 Data Structures and Algorithms


CSC 25301
Chen Ding
MW 3:25PM  4:40PM


Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multiperson construction of software where each person's contribution is nontrivial and clearly defined and documented. The material to study includes design principles, safe and modular programming in modern programming languages including Rust, software teams and development processes, design patterns, and productivity tools. The assignments include collaborative programming and software design and development in teams. Students in CSC 453 and TCS 453 have additional reading and requirements. Prerequisites: CSC 172 Data Structures and Algorithms, or equivalent for CSC 253. CSC 172 and CSC 252 or equivalent for CSC 453 and TCS 453.


CSC 2541
George Ferguson
MW 10:25AM  11:40AM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, 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 25410
George Ferguson
W 6:15PM  7:30PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 25412
George Ferguson
W 3:25PM  4:40PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 2543
George Ferguson
R 3:25PM  4:40PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 2544
George Ferguson
R 6:15PM  7:30PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 2548
George Ferguson
W 4:50PM  6:05PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 2561
John Criswell
TR 2:00PM  3:15PM


Principles of operating system design, explored within the practical context of traditional, embedded, distributed, and realtime operating systems. Topics include device management, process management, scheduling, synchronization principles, memory management and virtual memory, file management and remote files, protection and security, fault tolerance, networks, and distributed computing. CSC 456, a graduatelevel course, requires additional readings and assignments. Prerequisites: CSC 252 or ECE 200.


CSC 2571
Andrew ReadMcFarland
MW 4:50PM  6:05PM


Introduction to computer networks and computer communication: Architecture and Protocols:. Design of protocols for error recovery, reliable delivery, routing and congestion control. Storeandforward networks, satellite networks, local area networks and locally distributed systems. Case studies of networks, protocols and protocol families. Emphasis on software design issues in computer communication. Prerequisites: CSC 252 Computer Organization


CSC 2591
Yuhao Zhu
WF 11:50AM  1:05PM


We will first study the fundamental building blocks of visual computing, including human visual system, camera imaging, computer graphics, image/video compression, and display technologies. We will then explore application domains that build on top of these fundamental building blocks such as Augmented/Virtual Reality, computational photography, autonomous machines, and digital cultural heritage. The course will necessarily span many scientific and engineering domains such as visual neuroscience, cognition, optics, signal processing, and computer systems.


CSC 2611
Eustrat Zhupa
MW 12:30PM  1:45PM


This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semesterlong group project. Prerequisites: CSC 172; CSC 173 and CSC 252 recommended. Open to CSC and DSCC majors only during registration week.


CSC 2641
Zhiyao Duan
TR 12:30PM  1:45PM


Computer audition is the study of how to design a computational system that can analyze and process auditory scenes. Example problems in this field include source separation (splitting audio mixtures into individual source tracks), pitch estimation (estimating the pitches played by each instrument), timbre modeling (finding features to distinguish different kinds of instruments), and source localization (finding where the sound comes from). This course will cover both fundamentals and stateoftheart research in this field, which applies various kinds of signal processing and machine learning techniques. Multiple programming assignments will help students practice what they learn, and a final research project will lead students through the entire research process. Prerequisites: ECE 246/446 or ECE 272/472 or other equivalent signal processing courses, and Python/Matlab programming. Knowledge of machine learning techniques such as Markov models, support vector machines and neural networks is also helpful, but not required.


CSC 273W1
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 273W2
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 27701
Christopher Kanan
TR 3:25PM  4:40PM


Deep learning systems are now being widely productionized at large corporations and many AIcentric startups have been created. Productionizing AI systems requires more than just algorithmic considerations. We need to organize the data for training these systems, measure the bias present in these systems after training them, monitor them over time, and more. This course covers these topics, including, but are not limited to, deploying AI systems, MLOps, model versioning, dataset curation, data management, AI ethics/fairness, detecting and mitigation of bias, detecting outofdistribution inputs, domain shift, datacentric AI, realtime machine learning, continual machine learning, monitoring AI systems after deployment, model/data parallelism, managing AI projects/teams, training and inference on edgedevices, and launching AI startups. Prerequisites: At least one course that covers neural networks, e.g., CSC 242, CSC 298/578, CSC 266/466), (CSC 249/449), 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 at least a highlevel understanding of back propagation, multilayer perceptrons, transformers, convolutional neural networks, and neural network finetuning.


CSC 2791
Daniel Stefankovic
MW 9:00AM  10:15AM


The course will cover concepts, data structures, and algorithmic problems in computational geometry. The concepts will include convexity, triangulations, and pointline arrangements. The algorithmic problems will include convex hulls, low dimensional linear programming, sweep paradigm, and Voronoi diagrams. The data structures will include kdtrees, segment trees, and range trees. Prerequisites: CSC 172


CSC 28001
Kaave Hosseini
MW 2:00PM  3:15PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics


CSC 28002
Kaave Hosseini
M 4:50PM  6:05PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 28003
Kaave Hosseini
W 4:50PM  6:05PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 28005
Kaave Hosseini
R 4:50PM  6:05PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 28007
Kaave Hosseini
T 6:15PM  7:30PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 28008
Kaave Hosseini
R 3:25PM  4:15PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 2811
Andrew ReadMcFarland
MW 9:00AM  10:15AM


The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques. The main skills that will be assumed from these courses are: the ability to understand and write formal mathematical definitions and proofs and 2) comfort with reasoning about algorithms, such as proving their correctness and analyzing their running times. It is also important that you are familiar with basic probability. CSC 280 (or equivalent), MATH150 (or mathematical maturity), or permission of instructor.


CSC 28201
Daniel Stefankovic
TR 11:05AM  12:20PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 28202
Daniel Stefankovic
T 6:15PM  7:30PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 28203
Daniel Stefankovic
W 6:15PM  7:30PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 28204
Daniel Stefankovic
M 6:15PM  7:30PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 28205
Daniel Stefankovic
W 7:40PM  8:55PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 2841
Kaave Hosseini
MW 4:50PM  6:05PM


Advanced study of design and analysis of algorithms. Topics typically include: combinatorial optimization, computational geometry, numbertheoretic algorithms, probabilistic analysis and randomized algorithms, string algorithms, streaming algorithms. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.


CSC 2901
Sreepathi Pai
MW 9:00AM  10:15AM


This course will survey techniques for creating and deploying highperformance and efficient largescale machine learning (ML) systems. Topics chosen from the current research literature will span ML applications, ML programming models, code generation and optimization, automatic parallelization, performance modeling, systemslevel challenges, and specialized AI hardware. Prerequisites: Required  CSC 252; Recommended  CSC 254, CSC 255, CSC 258


CSC 299W1
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 antisocial behavior; major disruptions in the job market; and the largescale concentration of risk into systems capable of catastrophic failure. In this discussion and writingoriented 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. This course fulfills a CS ULW requirement.


CSC 386V1
Chenliang Xu
–


Blank Description


CSC 3901
–
–


Blank Description


CSC 39013
Richard Sarkis
–


Blank Description


CSC 39014
–
–


Blank Description


CSC 39015
–
–


Blank Description


CSC 39017
Eustrat Zhupa
–


Blank Description


CSC 3911
–
–


Registration for Independent Study courses needs to be completed thru the instructions for online independent study registration.


CSC 3921
–
–


Registration for Independent Study courses needs to be completed thru the instructions for online independent study registration.

Fall 2024
Number  Title  Instructor  Time 

Monday  
CSC 16121
Monika Polak
M 9:00AM  10:15AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16122
Monika Polak
M 9:00AM  10:15AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1615
Monika Polak
M 10:25AM  11:40AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1714
Adam Purtee
M 3:25PM  4:40PM


Handson 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. Required for all CSC and DSCC majors. Lab and workshop required.


CSC 1715
Adam Purtee
M 3:25PM  4:40PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1725
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1716
Adam Purtee
M 4:50PM  6:05PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1726
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 28002
Kaave Hosseini
M 4:50PM  6:05PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 1616
Monika Polak
M 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1717
Adam Purtee
M 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1728
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 28204
Daniel Stefankovic
M 6:15PM  7:30PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 17110
Adam Purtee
M 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17111
Adam Purtee
M 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17210
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


Monday and Wednesday  
CSC 2791
Daniel Stefankovic
MW 9:00AM  10:15AM


The course will cover concepts, data structures, and algorithmic problems in computational geometry. The concepts will include convexity, triangulations, and pointline arrangements. The algorithmic problems will include convex hulls, low dimensional linear programming, sweep paradigm, and Voronoi diagrams. The data structures will include kdtrees, segment trees, and range trees. Prerequisites: CSC 172


CSC 2811
Andrew ReadMcFarland
MW 9:00AM  10:15AM


The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques. The main skills that will be assumed from these courses are: the ability to understand and write formal mathematical definitions and proofs and 2) comfort with reasoning about algorithms, such as proving their correctness and analyzing their running times. It is also important that you are familiar with basic probability. CSC 280 (or equivalent), MATH150 (or mathematical maturity), or permission of instructor.


CSC 2901
Sreepathi Pai
MW 9:00AM  10:15AM


This course will survey techniques for creating and deploying highperformance and efficient largescale machine learning (ML) systems. Topics chosen from the current research literature will span ML applications, ML programming models, code generation and optimization, automatic parallelization, performance modeling, systemslevel challenges, and specialized AI hardware. Prerequisites: Required  CSC 252; Recommended  CSC 254, CSC 255, CSC 258


CSC 1702
Eustrat Zhupa
MW 10:25AM  11:40AM


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 1711
Adam Purtee
MW 10:25AM  11:40AM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required. Open to CSC and DSCC majors only during registration week. NonMajors should plan to take CSC 171 during Spring and Summer semesters.


CSC 22701
Maria Helguera
MW 10:25AM  11:40AM


This course will introduce the students to the basic concepts of digital image processing, and establish a good foundation for further study and research in this field. The theoretical components of this course will be presented at a level that seniors and first year graduate students who have taken introductory courses in vectors, matrices, probability, statistics, linear systems, and computer programming should be comfortable with. Topics cover in this course will include intensity transformation and spatial filtering, filtering in the frequency domain, image restoration, morphological image processing, image segmentation, image registration, and image compression. The course will also provide a brief introduction to python (ipython), the primary programming language that will be used for solving problems in class as well as takehome assignments. Prerequisites: ECE 242 and ECE 440 & ECE 446 are recommended or permission of instructor


CSC 2541
George Ferguson
MW 10:25AM  11:40AM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, 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 1618
Monika Polak
MW 12:30PM  1:45PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1703
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 17213
Thaddeus Pawlicki
MW 12:30PM  1:45PM


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 2611
Eustrat Zhupa
MW 12:30PM  1:45PM


This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, and query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. It also looks at the new trends in databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system as part of a semesterlong group project. Prerequisites: CSC 172; CSC 173 and CSC 252 recommended. Open to CSC and DSCC majors only during registration week.


CSC 17113
Adam Purtee
MW 2:00PM  3:15PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17214
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1731
George Ferguson
MW 2:00PM  3:15PM


An introduction to some of the most important formal models of computation, and their application to realworld computing problems. Prerequisites: CSC 172 and MTH 150. Basic Science Sequence: https://www.rochester.edu/college/ccas/handbook/sciencesequence.html Audits are not allowed.


CSC 28001
Kaave Hosseini
MW 2:00PM  3:15PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability. Prerequisites: CSC 173 Computation and Formal Systems, and MATH 150 Discrete Mathematics


CSC 16119
Monika Polak
MW 3:25PM  4:40PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17215
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 25201
Yanan Guo
MW 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/O buses, 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 Discrete Mathematics and CSC 172 Data Structures and Algorithms


CSC 25301
Chen Ding
MW 3:25PM  4:40PM


Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multiperson construction of software where each person's contribution is nontrivial and clearly defined and documented. The material to study includes design principles, safe and modular programming in modern programming languages including Rust, software teams and development processes, design patterns, and productivity tools. The assignments include collaborative programming and software design and development in teams. Students in CSC 453 and TCS 453 have additional reading and requirements. Prerequisites: CSC 172 Data Structures and Algorithms, or equivalent for CSC 253. CSC 172 and CSC 252 or equivalent for CSC 453 and TCS 453.


CSC 299W1
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 antisocial behavior; major disruptions in the job market; and the largescale concentration of risk into systems capable of catastrophic failure. In this discussion and writingoriented 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. This course fulfills a CS ULW requirement.


CSC 17216
Thaddeus Pawlicki
MW 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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 2571
Andrew ReadMcFarland
MW 4:50PM  6:05PM


Introduction to computer networks and computer communication: Architecture and Protocols:. Design of protocols for error recovery, reliable delivery, routing and congestion control. Storeandforward networks, satellite networks, local area networks and locally distributed systems. Case studies of networks, protocols and protocol families. Emphasis on software design issues in computer communication. Prerequisites: CSC 252 Computer Organization


CSC 2841
Kaave Hosseini
MW 4:50PM  6:05PM


Advanced study of design and analysis of algorithms. Topics typically include: combinatorial optimization, computational geometry, numbertheoretic algorithms, probabilistic analysis and randomized algorithms, string algorithms, streaming algorithms. Students taking this course at the 400 level may be required to complete additional tests, readings or assignments.


CSC 1619
Monika Polak
MW 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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


Tuesday  
CSC 1719
Adam Purtee
T 2:00PM  3:15PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 16113
Monika Polak
T 3:25PM  4:40PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17114
Adam Purtee
T 3:25PM  4:40PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17115
Adam Purtee
T 4:50PM  6:05PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1723
Thaddeus Pawlicki
T 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). 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 273W2
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 16114
Monika Polak
T 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17116
Adam Purtee
T 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17220
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 28007
Kaave Hosseini
T 6:15PM  7:30PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 28202
Daniel Stefankovic
T 6:15PM  7:30PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 17117
Adam Purtee
T 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 17222
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


Tuesday and Thursday  
CSC 17121
Adam Purtee
TR 9:40AM  10:55AM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1721
Thaddeus Pawlicki
TR 9:40AM  10:55AM


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 21601
Zhen Bai
TR 9:40AM  10:55AM


Human activity is embodied through all our sensorimotor capacities, immersed in our immediate physical and social surroundings. Augmented Reality (AR) and Virtual Reality (VR) technologies have shown vast potential to extend our sensorimotor and social experiences in 3D space. This undergraduate/graduate course aims to help students to develop understanding of key AR/VR concepts, principles, technologies, design practices and development tools. The students will obtain handson experiences of creating AR/VR applications that address realworld problems in domains such as education, collaboration, and quality of life, and understand technological and ethical implications of AR/VR such as human behavior sensing and ethical challenges. CSC 172 and CSC 214 required (or proven equivalent application development experience); CSC 131 recommended.


CSC 24501
Chenliang Xu
TR 9:40AM  10:55AM


Much of the recent advances in machine learning and artificial intelligence have been dominated by neural network approaches broadly described as deep learning. This course provides an overview of the most important deep learning techniques covering both theoretical foundations and practical applications. The applications focus on problems in image understanding and language modeling utilizing stateoftheart deep learning libraries and tools, which are introduced in the course. Prerequisites: MATH 164, MATH 165, and CSC 172. Programming in Python.


CSC 1311
Thaddeus Pawlicki
TR 11:05AM  12:20PM


A hands on introduction to 3D computer graphics and animation techniques taught from a user point of view. Topics include 3D modeling, animation, and simulation.


CSC 1611
Monika Polak
TR 11:05AM  12:20PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 1701
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. Students must register for a lab when registering for the lecture.


CSC 17122
Adam Purtee
TR 11:05AM  12:20PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 2121
Yukang Yan
TR 11:05AM  12:20PM


The course will explore the design, implementation, and evaluation of userdriven prototypes to be used by real users. Students will study the theoretical methods for design and evaluation, including requirements gathering, survey design, ethnography, rapid prototyping, and evaluation techniques. The theoretical knowledge will be supplemented with handson group projects including a final project. The final project will involve interactions with realusers along with a working prototype which hopefully could be deployed and used by people beyond the scope of this course. Prerequisites: CSC 172 and CSC 242


CSC 2461
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: This course involves a lot of math and algorithms. You should know multivariable calculus, linear algebra, and some algorithms. No formal prerequisites but MATH 165, MATH 164, and CSC 242 strongly recommended.


CSC 28201
Daniel Stefankovic
TR 11:05AM  12:20PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 16115
Monika Polak
TR 12:30PM  1:45PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17224
Thaddeus Pawlicki
TR 12:30PM  1:45PM


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 24101
Ralf Haefner
TR 12:30PM  1:45PM


Computational neuroscience studies how the brain can be understood in terms of computations implemented by neural circuits, and in terms of using computational methods to analyze neural and behavioral data. This course for advanced undergraduates and graduate students starts with models of individuals neurons before moving on to networks of neurons and behavior. It provides both a classic signal processing, and a probabilistic perspective on how neurons support the brain’s computations. While primarily lecturebased, an important part of the course are exercises that typically consist on implementing (programming) a model discussed in the class and analyze its behavior. The course also provides the opportunity for a final project but this is not required. The material mostly considers the sensory system and perceptual decisionmaking. There are no formal prerequisites. However, programming experience and a minimal background in linear algebra (vectors and matrices) and analysis (basic ordinary differential equations) are essential. At the beginning, there will be a very brief introduction to the key biological concepts necessary for the course. In doubt, please email the instructor.


CSC 2641
Zhiyao Duan
TR 12:30PM  1:45PM


Computer audition is the study of how to design a computational system that can analyze and process auditory scenes. Example problems in this field include source separation (splitting audio mixtures into individual source tracks), pitch estimation (estimating the pitches played by each instrument), timbre modeling (finding features to distinguish different kinds of instruments), and source localization (finding where the sound comes from). This course will cover both fundamentals and stateoftheart research in this field, which applies various kinds of signal processing and machine learning techniques. Multiple programming assignments will help students practice what they learn, and a final research project will lead students through the entire research process. Prerequisites: ECE 246/446 or ECE 272/472 or other equivalent signal processing courses, and Python/Matlab programming. Knowledge of machine learning techniques such as Markov models, support vector machines and neural networks is also helpful, but not required.


CSC 17225
Thaddeus Pawlicki
TR 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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 2561
John Criswell
TR 2:00PM  3:15PM


Principles of operating system design, explored within the practical context of traditional, embedded, distributed, and realtime operating systems. Topics include device management, process management, scheduling, synchronization principles, memory management and virtual memory, file management and remote files, protection and security, fault tolerance, networks, and distributed computing. CSC 456, a graduatelevel course, requires additional readings and assignments. Prerequisites: CSC 252 or ECE 200.


CSC 2401
Cantay Caliskan
TR 3:25PM  4:40PM


Fundamental concepts and techniques of data mining, including data attributes, data visualization, data preprocessing, mining frequent patterns, association and correlation, classification methods, and cluster analysis. Advanced topics include outlier detection, stream mining, and social media data mining. Prerequisites will be strictly enforced: CSC171, CSC 172 and MATH 161. Recommended: CSC 242 or CSC262; MATH165. Open to CSC and DSCC majors during registration week.


CSC 2421
Thaddeus Pawlicki
TR 3:25PM  4:40PM


Introduces fundamental principles and techniques from Artificial Intelligence, including heuristic search, automated reasoning, handling uncertainty, and machine learning, to prepare students for advanced AI courses. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended. Audits not allowed. Open to CSC and DSCC majors only during registration week.


CSC 27701
Christopher Kanan
TR 3:25PM  4:40PM


Deep learning systems are now being widely productionized at large corporations and many AIcentric startups have been created. Productionizing AI systems requires more than just algorithmic considerations. We need to organize the data for training these systems, measure the bias present in these systems after training them, monitor them over time, and more. This course covers these topics, including, but are not limited to, deploying AI systems, MLOps, model versioning, dataset curation, data management, AI ethics/fairness, detecting and mitigation of bias, detecting outofdistribution inputs, domain shift, datacentric AI, realtime machine learning, continual machine learning, monitoring AI systems after deployment, model/data parallelism, managing AI projects/teams, training and inference on edgedevices, and launching AI startups. Prerequisites: At least one course that covers neural networks, e.g., CSC 242, CSC 298/578, CSC 266/466), (CSC 249/449), 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 at least a highlevel understanding of back propagation, multilayer perceptrons, transformers, convolutional neural networks, and neural network finetuning.


CSC 16118
Monika Polak
TR 4:50PM  6:05PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17123
Adam Purtee
TR 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 2141
Arthur Roolfs
TR 6:15PM  7:30PM


Coursework covers user interface designs and functional algorithms for mobile devices (iOS fall, Android spring) and unique user interactions using multitouch technologies. Objectoriented design using modelviewcontroller paradigm, memory management. Other topics include: objectoriented database API, animation, multithreading and performance considerations. Prerequisites: CSC 172 Data Structures & Algorithms


CSC 17120
Adam Purtee
TR 7:40PM  8:55PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


Wednesday  
CSC 16120
Monika Polak
W 9:00AM  10:15AM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16123
Monika Polak
W 2:00PM  3:15PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 16116
Monika Polak
W 3:25PM  4:40PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17124
Adam Purtee
W 3:25PM  4:40PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 25412
George Ferguson
W 3:25PM  4:40PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 17227
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 2548
George Ferguson
W 4:50PM  6:05PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 28003
Kaave Hosseini
W 4:50PM  6:05PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 16117
Monika Polak
W 6:15PM  7:30PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17125
Adam Purtee
W 6:15PM  7:30PM


Handson 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. Required for all CS & DSCC majors. Lab and workshop required.


CSC 1724
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 25410
George Ferguson
W 6:15PM  7:30PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 28203
Daniel Stefankovic
W 6:15PM  7:30PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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 28205
Daniel Stefankovic
W 7:40PM  8:55PM


How does one design programs and ascertain their efficiency? Greedy algorithms, dynamic programming, divideandconquer techniques, string processing, graph algorithms, mathematical algorithms. Introduction to NPcompleteness 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.


Wednesday and Friday  
CSC 2591
Yuhao Zhu
WF 11:50AM  1:05PM


We will first study the fundamental building blocks of visual computing, including human visual system, camera imaging, computer graphics, image/video compression, and display technologies. We will then explore application domains that build on top of these fundamental building blocks such as Augmented/Virtual Reality, computational photography, autonomous machines, and digital cultural heritage. The course will necessarily span many scientific and engineering domains such as visual neuroscience, cognition, optics, signal processing, and computer systems.


Thursday  
CSC 16110
Monika Polak
R 2:00PM  3:15PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17218
Thaddeus Pawlicki
R 2:00PM  3:15PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). 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 273W1
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 2543
George Ferguson
R 3:25PM  4:40PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 28008
Kaave Hosseini
R 3:25PM  4:15PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 16111
Monika Polak
R 4:50PM  6:05PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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 17219
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 1729
Thaddeus Pawlicki
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. Prerequisites: CSC 171 or equivalent, MATH 150. May be taken concurrently with MATH 150 if CSC 171 prerequisite is satisfied.


CSC 28005
Kaave Hosseini
R 4:50PM  6:05PM


This course studies fundamental computer models and their computational limitations. Finitestate machines and pumping lemmas, the contextfree languages, Turing machines, decidable and Turingrecognizable languages, undecidability.


CSC 2544
George Ferguson
R 6:15PM  7:30PM


Design and implementation of programming languages, with an emphasis on imperative languages and on implementation tradeoffs. Indepth 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, objectoriented, functional, logicbased, concurrent). Course projects include assignments in several different languages, with an emphasis on compilation issues.


CSC 16112
Monika Polak
R 7:40PM  8:55PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. This course is for nonmajors 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
