Spring Term Schedule
Spring 2024
Number  Title  Instructor  Time 

CSC 1611
Andrew ReadMcFarland
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 16110
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16111
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16112
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16113
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16114
Andrew ReadMcFarland
T 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16115
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16116
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16117
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16118
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16119
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1612
Andrew ReadMcFarland
TR 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16120
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16121
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16122
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1613
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1614
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1615
Andrew ReadMcFarland
TR 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1616
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1617
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1618
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1619
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


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.


CSC 1702
Eustrat Zhupa
MW 9:00AM  10:15AM


An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.


CSC 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
TR 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. Lab and Workshop Required. Required for all CSC & DSCC majors.


CSC 17110
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17111
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17112
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17113
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17114
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17115
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. Lab and Workshop Required Required for all CSC & DSCC majors.


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. Lab and Workshop Required Required for all CSC & DSCC majors.


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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17118
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17119
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1712
Adam Purtee
MW 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17120
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17121
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17122
Adam Purtee
R 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1713
Adam Purtee
MW 12:30PM  1:45PM


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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1714
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1715
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1716
Adam Purtee
W 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1718
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1719
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. Lab and Workshop Required Required for all CSC & DSCC majors.


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


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


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17211
Monika Polak
M 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17212
Monika Polak
M 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17213
Monika Polak
T 6:15PM  7:30PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17214
Monika Polak
T 6:15PM  7:30PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17215
Monika Polak
T 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17216
Monika Polak
T 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17217
Monika Polak
W 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17218
Monika Polak
W 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17220
Monika Polak
W 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17221
Monika Polak
W 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17223
Monika Polak
R 6:15PM  7:30PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1724
Monika Polak
MW 2:00PM  3:15PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1727
Monika Polak
M 3:25PM  4:40PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1728
Monika Polak
M 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1729
Monika Polak
M 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1731
George Ferguson
TR 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. AUDITS NOT ALLOWED.


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


This course is a handson lab based introduction to software engineering and computer programming using the development of computer/video games as the application area. Topics will include mesh modeling, level design, asset management, shading, texturing, lighting, event scripting, character rigging, and particle effects.


CSC 2001
Lane Hemaspaandra
MW 4:50PM  6:05PM


Intensive seminar on cooperative problemsolving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Students who participate or intend to participate in research, or who want to improve their problemsolving skills, are welladvised to take CSC 200/200H. CSC 200H is required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects. Prerequisite: All BS premajor requirements and CSC 173


CSC 200H1
Lane Hemaspaandra
MW 4:50PM  6:05PM


Intensive seminar on cooperative problemsolving. Overview of the subdisciplines and the research of the University of Rochester's computer science faculty. Students who participate or intend to participate in research, or who want to improve their problemsolving skills, are welladvised to take CSC 200/200H. CSC 200H is required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects. Prerequisites: All premajor requirements and CSC 173


CSC 2101
Andrew ReadMcFarland
TR 3:25PM  4:40PM


The World Wide Web was born around 1990, so it is not much older than most of you. In this course, we will follow the growth of the Web from its toddler years, to early childhood, to its turbulent preteen and teenage years, and finally as it begins to mature as a young adult. Along this journey, you will learn influential Web technologies such as HTTP, HTML, JavaScript, CSS, the LAMP stack, XML, JSON, Ajax, WebSockets, and modern MVC frameworks. Even though you will be doing a lot of programming in this course, its purpose is not to teach you to become an expert in any particular language or framework. Web technologies change at a blistering pace, so specifics quickly get outdated. However, once you take this course and understand the fundamentals, you will be able to easily pick up new technologies on the fly. Prerequisites: CSC 172. *No audits will be allowed for this course


CSC 2121
Yukang Yan
TR 12:30PM  1:45PM


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 UI design and functional algorithms for Android mobile devices. It incorporates an introduction to the Kotlin computer language, objectoriented design with architectural patterns like MVVM, data persistence via ORM as well as an introduction to leveraging REST APIs. Additional topics include inapp navigation, animation, localization, and performance considerations. Prerequisites: CSC 172


CSC 2161
Zhen Bai
TR 3:25PM  4:40PM


Human activity is embodied through all our sensorimotor capacities, immersed in our immediate physical, social & cultural surroundings. Interaction technologies such as Augmented Reality (AR) & Virtual Reality (VR) have shown vast potential to enhance the way we think, feel & behave by superimposing/substituting digital contents onto/with our reality. This course is an introduction to AR,VR & related technologies, aiming to help students build a frame of reference of those technologies, apply them in design practices that address realworld problems, & actively reflect on social implications. Prerequisites: CSC 172 and CSC 214 required (or proven equivalent application development experience); CSC 131 recommended.


CSC 2401
Thaddeus Pawlicki
TR 4:50PM  6:05PM


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. CSC 440, a graduatelevel course, requires additional readings and a course project. Prerequisites will be strictly enforced: CSC171, CSC 172 and MATH 161. Recommended: CSC 242 or CSC262; MATH165.


CSC 2421
Daniel Gildea
TR 9:40AM  10:55AM


Introduces fundamental principles and techniques from Artificial Intelligence, including heuristic search, automated reasoning, handling uncertainty, and machine learning, to prepare students for advanced AI courses. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended. AUDITS NOT ALLOWED.


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: MATH 164. Strongly Recommended: MATH 165 and CSC 242 This course involves a lot of math and algorithms. You should know multivariable calculus, linear algebra, and some algorithms.


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


Introduction to computer vision, including camera models, basic image processing, pattern and object recognition, and elements of human vision. Specific topics include geometric issues, statistical models, Hough transforms, color theory, texture, and optic flow. CSC 449, a graduatelevel course, requires additional readings and assignments. Prerequisites: MATH 161 and CSC 242; MATH 165 strongly recommended


CSC 2521
Chen Ding
WF 3:25PM  4:40PM


Introduction to computer architecture and the layering of hardware/software systems. Topics include instruction set design; logical building blocks; computer arithmetic; processor organization; the memory hierarchy (registers, caches, main memory, and secondary storage); I/Obuses, devices, and interrupts; microcode and assembly language; virtual machines; the roles of the assembler, linker, compiler, and operating system; technological trends and the future of computing hardware. Several programming assignments required. Prerequisites: MTH 150 and CSC 172


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


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 25411
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 25413
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 2542
George Ferguson
U 1:30PM  3:00PM


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 2545
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 2546
George Ferguson
R 7:40PM  8:55PM


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 2547
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 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 2549
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 2551
Sreepathi Pai
MW 10:25AM  11:40AM


Programming is the automation of information processing. Program analysis and transformation is the automation of programming itselfhow much a program can understand and improve other programs. Because of the diversity and complexity of computer hardware, programmers increasingly depend on automation in compilers and other tools to deliver efficient and reliable software. This course combines fundamental principles and (handson) practical applications. Specific topics include data flow and dependence theories; static and dynamic program transformation including parallelization; memory and cache management; type checking and program verification; and performance analysis and modeling. The knowledge and practice will help students to become experts in software performance and correctness. Students taking the graduate level will have additional course requirements and a more difficult project. Recommended prerequisites: CSC 252, CSC 254.


CSC 2581
Andrew ReadMcFarland
MW 3:25PM  4:40PM


Principles of parallel and distributed systems, and the associated implementation and performance issues. Topics covered will include programming interfaces to parallel and distributed computing, interprocess communication, synchronization, and consistency models, fault tolerance and reliability, distributed process management, distributed file systems, multiprocessor architectures, parallel program optimization, and parallelizing compilers. Students taking this course at the 400 level will be required to complete additional readings and/or assignments. Prerequisites: CSC 252 and (CSC 254 or CSC 256) or instructor permission


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


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


CSC 2631
Fatemeh Nargesian
MW 9:00AM  10:15AM


This course explores the internals of data engines. Topics covered will include the relational model; relational database design principles based on dependencies and normal forms; query execution; transactions; recovery; query optimization; parallel query processing; NoSQL. Prerequisites:CSC 173 and CSC 252 (or CSC 261)


CSC 273W1
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 273W2
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 2781
John Criswell
MW 6:15PM  7:30PM


This course will teach students the foundations of computer security. Students will learn what security is, the design principles of secure systems, how security is enforced, and how security is compromised. Topics include access controls, information flow, basic applications of cryptography, buffer overflow attacks, and malware. Prerequisites: CSC 252 or CSC 452 or ECE 200.


CSC 2801
Monika Polak
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, NPcompleteness. Prerequisites include CSC 173 and MATH 150. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE


CSC 28011
Monika Polak
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 2802
Monika Polak
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, NPcompleteness. Prerequisites are CSC 173 and MTH 150.


CSC 2803
Monika Polak
W 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, NPcompleteness. Prerequisites include CSC 173 and MTH 150.


CSC 2804
Monika Polak
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, NPcompleteness. Prerequisites include CSC 173 and MTH 150


CSC 2805
Monika Polak
R 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, NPcompleteness. Prerequisites include CSC 173 and MTH 150.


CSC 2809
Monika Polak
R 3:25PM  4:40PM


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, NPcompleteness. Prerequisites are CSC 173 and MTH 150


CSC 2821
Eustrat Zhupa
TR 9:40AM  10:55AM


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 2822
Eustrat Zhupa
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.


CSC 2823
Eustrat Zhupa
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.


CSC 2824
Eustrat Zhupa
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.


CSC 2825
Eustrat Zhupa
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.


CSC 2831
Monika Polak
MW 9:00AM  10:15AM


In this course students will learn about the current state of Public Key Cryptography. In particular the NIST (National Institute of Standards and Technology) process to solicit, evaluate, and standardize one or more quantumresistant publickey cryptographic algorithms will be discussed. QuantumResistant Cryptography (QRC) refers to cryptographic systems that are secure against both quantum and classical computers. Such systems may be achieved through classical (i.e. nonquantum) means. The security of many commonly used cryptographic protocols (especially publickey cryptosystems) would be compromised if generalpurpose largescale, faulttolerant quantum computers became a reality. This course covers the consequences of Quantum Computing and why it poses a threat to currently used cryptographic systems, and then discusses potential PostQuantum cryptosystems designed to be resistant to such attacks. Students enrolled in this course must have a background in cryptography such as that obtained by taking CSC281/CSC481 (Introduction to Cryptography) or similar courses, or permission of the instructor.


CSC 2861
Lane Hemaspaandra
MW 2:00PM  3:15PM


The difference between computable and uncomputable problems and between feasible and infeasible problems. Regarding the latter, what properties of a problem make it computationally simple? What properties of a problem may preclude its having efficient algorithms? How computationally hard are problems? Complete sets and low information content; P=NP?; unambiguous computation and oneway functions; reductions relating the complexity of problems; complexity classes and hierarchies. Prerequisite: CSC 280


CSC 2891
Anson Kahng
MW 4:50PM  6:05PM


This class will provide an introduction to topics at the intersection of computer science and economics, including game theory, auctions, incentivecompatible mechanism design, matching algorithms, human computation (e.g., crowdsourcing and peer prediction), trust and reputation systems, and social choice (voting) theory. We hope to convey the fact that the relationship between computer science and economics is a twoway street: It is important to consider incentives and strategic action are important when designing computationintensive systems, and efficient and robust algorithms enable the deployment of impactful economic ideas. Prerequisites: Familiarity with probability theory, singlevariable calculus, linear algebra, and basics of theoretical computer science. No background in economic theory is assumed or required. Students should also be prepared to write code in Python. Please email the instructor with any questions.


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


This course is a introduction to areas in Quantum Computing from a programming, algorithmic and mathematical perspective. Familiarity with Quantum Mechanics is not required. Areas covered include: the Qbit representation of information, superposition, entanglement, interference, Hilbert Spaces, reversible computations, Quantum teleportation, DeutschJozsa Algorithm, Simon's Algorithm, Grover's Algorithm, Shor's Algorithm and the philosophical interpretations of Quantum Mechanics (Copenhagen, Many Worlds, etc.) The focus is on programming quantum computers. Prerequisites Any introductory computer programming course is strictly required : CSC161, CSC171, ECE114. Any course covering Linear Algebra is required. Previous familiarity with Quantum Mechanics (physics perspective) is NOT required.


CSC 2991
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.


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 will be asynchronous. CSC299 can be taken as a ULW or not.


CSC 3902
–
–


Blank Description


CSC 3904
–
–


Blank Description


CSC 3921
–
–


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

Spring 2024
Number  Title  Instructor  Time 

Monday  
CSC 1616
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1617
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1727
Monika Polak
M 3:25PM  4:40PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1618
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1619
Andrew ReadMcFarland
M 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1718
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1719
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1728
Monika Polak
M 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 1729
Monika Polak
M 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 16110
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16111
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 17110
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17111
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. Lab and Workshop Required Required for all CSC & DSCC majors.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2824
Eustrat Zhupa
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.


CSC 17112
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17211
Monika Polak
M 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17212
Monika Polak
M 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


Monday and Wednesday  
CSC 1702
Eustrat Zhupa
MW 9:00AM  10:15AM


An introduction to the World Wide Web and related technologies. Topics include HTML5 and CSS3, Progressive Enhancement, and Web page design. Emphasis is placed on fundamentals, industry standards and best practices. Additional topics include: web site construction techniques, mobile design issues, and Search Engine Optimization (SEO). Programming with JavaScript will be introduced.


CSC 2631
Fatemeh Nargesian
MW 9:00AM  10:15AM


This course explores the internals of data engines. Topics covered will include the relational model; relational database design principles based on dependencies and normal forms; query execution; transactions; recovery; query optimization; parallel query processing; NoSQL. Prerequisites:CSC 173 and CSC 252 (or CSC 261)


CSC 2831
Monika Polak
MW 9:00AM  10:15AM


In this course students will learn about the current state of Public Key Cryptography. In particular the NIST (National Institute of Standards and Technology) process to solicit, evaluate, and standardize one or more quantumresistant publickey cryptographic algorithms will be discussed. QuantumResistant Cryptography (QRC) refers to cryptographic systems that are secure against both quantum and classical computers. Such systems may be achieved through classical (i.e. nonquantum) means. The security of many commonly used cryptographic protocols (especially publickey cryptosystems) would be compromised if generalpurpose largescale, faulttolerant quantum computers became a reality. This course covers the consequences of Quantum Computing and why it poses a threat to currently used cryptographic systems, and then discusses potential PostQuantum cryptosystems designed to be resistant to such attacks. Students enrolled in this course must have a background in cryptography such as that obtained by taking CSC281/CSC481 (Introduction to Cryptography) or similar courses, or permission of the instructor.


CSC 1714
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 2551
Sreepathi Pai
MW 10:25AM  11:40AM


Programming is the automation of information processing. Program analysis and transformation is the automation of programming itselfhow much a program can understand and improve other programs. Because of the diversity and complexity of computer hardware, programmers increasingly depend on automation in compilers and other tools to deliver efficient and reliable software. This course combines fundamental principles and (handson) practical applications. Specific topics include data flow and dependence theories; static and dynamic program transformation including parallelization; memory and cache management; type checking and program verification; and performance analysis and modeling. The knowledge and practice will help students to become experts in software performance and correctness. Students taking the graduate level will have additional course requirements and a more difficult project. Recommended prerequisites: CSC 252, CSC 254.


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


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


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 1713
Adam Purtee
MW 12:30PM  1:45PM


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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1715
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 1724
Monika Polak
MW 2:00PM  3:15PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


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 2801
Monika Polak
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, NPcompleteness. Prerequisites include CSC 173 and MATH 150. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE


CSC 2861
Lane Hemaspaandra
MW 2:00PM  3:15PM


The difference between computable and uncomputable problems and between feasible and infeasible problems. Regarding the latter, what properties of a problem make it computationally simple? What properties of a problem may preclude its having efficient algorithms? How computationally hard are problems? Complete sets and low information content; P=NP?; unambiguous computation and oneway functions; reductions relating the complexity of problems; complexity classes and hierarchies. Prerequisite: CSC 280


CSC 1614
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2581
Andrew ReadMcFarland
MW 3:25PM  4:40PM


Principles of parallel and distributed systems, and the associated implementation and performance issues. Topics covered will include programming interfaces to parallel and distributed computing, interprocess communication, synchronization, and consistency models, fault tolerance and reliability, distributed process management, distributed file systems, multiprocessor architectures, parallel program optimization, and parallelizing compilers. Students taking this course at the 400 level will be required to complete additional readings and/or assignments. Prerequisites: CSC 252 and (CSC 254 or CSC 256) or instructor permission


CSC 2991
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.


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 will be asynchronous. CSC299 can be taken as a ULW or not.


CSC 1712
Adam Purtee
MW 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 2001
Lane Hemaspaandra
MW 4:50PM  6:05PM


Intensive seminar on cooperative problemsolving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Students who participate or intend to participate in research, or who want to improve their problemsolving skills, are welladvised to take CSC 200/200H. CSC 200H is required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects. Prerequisite: All BS premajor requirements and CSC 173


CSC 200H1
Lane Hemaspaandra
MW 4:50PM  6:05PM


Intensive seminar on cooperative problemsolving. Overview of the subdisciplines and the research of the University of Rochester's computer science faculty. Students who participate or intend to participate in research, or who want to improve their problemsolving skills, are welladvised to take CSC 200/200H. CSC 200H is required for the Honors B.S. in Computer Science. Students taking CSC 200H may have additional reading, assignments, or projects. Prerequisites: All premajor requirements and CSC 173


CSC 2891
Anson Kahng
MW 4:50PM  6:05PM


This class will provide an introduction to topics at the intersection of computer science and economics, including game theory, auctions, incentivecompatible mechanism design, matching algorithms, human computation (e.g., crowdsourcing and peer prediction), trust and reputation systems, and social choice (voting) theory. We hope to convey the fact that the relationship between computer science and economics is a twoway street: It is important to consider incentives and strategic action are important when designing computationintensive systems, and efficient and robust algorithms enable the deployment of impactful economic ideas. Prerequisites: Familiarity with probability theory, singlevariable calculus, linear algebra, and basics of theoretical computer science. No background in economic theory is assumed or required. Students should also be prepared to write code in Python. Please email the instructor with any questions.


CSC 1613
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2781
John Criswell
MW 6:15PM  7:30PM


This course will teach students the foundations of computer security. Students will learn what security is, the design principles of secure systems, how security is enforced, and how security is compromised. Topics include access controls, information flow, basic applications of cryptography, buffer overflow attacks, and malware. Prerequisites: CSC 252 or CSC 452 or ECE 200.


Tuesday  
CSC 16112
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 17113
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17114
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 273W1
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 16113
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 17115
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. Lab and Workshop Required Required for all CSC & DSCC majors.


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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17213
Monika Polak
T 6:15PM  7:30PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17214
Monika Polak
T 6:15PM  7:30PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2822
Eustrat Zhupa
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.


CSC 16114
Andrew ReadMcFarland
T 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. Recommended for nonmajors, and/or students with less math and science background. 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17118
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17215
Monika Polak
T 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17216
Monika Polak
T 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


Tuesday and Thursday  
CSC 2421
Daniel Gildea
TR 9:40AM  10:55AM


Introduces fundamental principles and techniques from Artificial Intelligence, including heuristic search, automated reasoning, handling uncertainty, and machine learning, to prepare students for advanced AI courses. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended. AUDITS NOT ALLOWED.


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


Introduction to computer vision, including camera models, basic image processing, pattern and object recognition, and elements of human vision. Specific topics include geometric issues, statistical models, Hough transforms, color theory, texture, and optic flow. CSC 449, a graduatelevel course, requires additional readings and assignments. Prerequisites: MATH 161 and CSC 242; MATH 165 strongly recommended


CSC 2821
Eustrat Zhupa
TR 9:40AM  10:55AM


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 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.


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


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


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


This course is a handson lab based introduction to software engineering and computer programming using the development of computer/video games as the application area. Topics will include mesh modeling, level design, asset management, shading, texturing, lighting, event scripting, character rigging, and particle effects.


CSC 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: MATH 164. Strongly Recommended: MATH 165 and CSC 242 This course involves a lot of math and algorithms. You should know multivariable calculus, linear algebra, and some algorithms.


CSC 2121
Yukang Yan
TR 12:30PM  1:45PM


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 2951
Thaddeus Pawlicki
TR 12:30PM  1:45PM


This course is a introduction to areas in Quantum Computing from a programming, algorithmic and mathematical perspective. Familiarity with Quantum Mechanics is not required. Areas covered include: the Qbit representation of information, superposition, entanglement, interference, Hilbert Spaces, reversible computations, Quantum teleportation, DeutschJozsa Algorithm, Simon's Algorithm, Grover's Algorithm, Shor's Algorithm and the philosophical interpretations of Quantum Mechanics (Copenhagen, Many Worlds, etc.) The focus is on programming quantum computers. Prerequisites Any introductory computer programming course is strictly required : CSC161, CSC171, ECE114. Any course covering Linear Algebra is required. Previous familiarity with Quantum Mechanics (physics perspective) is NOT required.


CSC 1612
Andrew ReadMcFarland
TR 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 1711
Adam Purtee
TR 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. Lab and Workshop Required. Required for all CSC & DSCC majors.


CSC 1731
George Ferguson
TR 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. AUDITS NOT ALLOWED.


CSC 2101
Andrew ReadMcFarland
TR 3:25PM  4:40PM


The World Wide Web was born around 1990, so it is not much older than most of you. In this course, we will follow the growth of the Web from its toddler years, to early childhood, to its turbulent preteen and teenage years, and finally as it begins to mature as a young adult. Along this journey, you will learn influential Web technologies such as HTTP, HTML, JavaScript, CSS, the LAMP stack, XML, JSON, Ajax, WebSockets, and modern MVC frameworks. Even though you will be doing a lot of programming in this course, its purpose is not to teach you to become an expert in any particular language or framework. Web technologies change at a blistering pace, so specifics quickly get outdated. However, once you take this course and understand the fundamentals, you will be able to easily pick up new technologies on the fly. Prerequisites: CSC 172. *No audits will be allowed for this course


CSC 2161
Zhen Bai
TR 3:25PM  4:40PM


Human activity is embodied through all our sensorimotor capacities, immersed in our immediate physical, social & cultural surroundings. Interaction technologies such as Augmented Reality (AR) & Virtual Reality (VR) have shown vast potential to enhance the way we think, feel & behave by superimposing/substituting digital contents onto/with our reality. This course is an introduction to AR,VR & related technologies, aiming to help students build a frame of reference of those technologies, apply them in design practices that address realworld problems, & actively reflect on social implications. Prerequisites: CSC 172 and CSC 214 required (or proven equivalent application development experience); CSC 131 recommended.


CSC 1611
Andrew ReadMcFarland
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 1722
Monika Polak
TR 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2401
Thaddeus Pawlicki
TR 4:50PM  6:05PM


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. CSC 440, a graduatelevel course, requires additional readings and a course project. Prerequisites will be strictly enforced: CSC171, CSC 172 and MATH 161. Recommended: CSC 242 or CSC262; MATH165.


CSC 1615
Andrew ReadMcFarland
TR 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


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


Coursework covers UI design and functional algorithms for Android mobile devices. It incorporates an introduction to the Kotlin computer language, objectoriented design with architectural patterns like MVVM, data persistence via ORM as well as an introduction to leveraging REST APIs. Additional topics include inapp navigation, animation, localization, and performance considerations. Prerequisites: CSC 172


Wednesday  
CSC 1716
Adam Purtee
W 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17119
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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17120
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. Lab and Workshop Required Required for all CSC & DSCC majors.


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 2547
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 16115
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16116
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 17217
Monika Polak
W 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17218
Monika Polak
W 4:50PM  6:05PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 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 2549
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 28011
Monika Polak
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 2802
Monika Polak
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, NPcompleteness. Prerequisites are CSC 173 and MTH 150.


CSC 16117
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 17121
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. Lab and Workshop Required Required for all CSC & DSCC majors.


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 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 25411
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 2803
Monika Polak
W 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, NPcompleteness. Prerequisites include CSC 173 and MTH 150.


CSC 2823
Eustrat Zhupa
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.


CSC 16118
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16119
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16120
Andrew ReadMcFarland
W 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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 17220
Monika Polak
W 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 17221
Monika Polak
W 7:40PM  8:55PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2825
Eustrat Zhupa
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.


Wednesday and Friday  
CSC 2521
Chen Ding
WF 3:25PM  4:40PM


Introduction to computer architecture and the layering of hardware/software systems. Topics include instruction set design; logical building blocks; computer arithmetic; processor organization; the memory hierarchy (registers, caches, main memory, and secondary storage); I/Obuses, devices, and interrupts; microcode and assembly language; virtual machines; the roles of the assembler, linker, compiler, and operating system; technological trends and the future of computing hardware. Several programming assignments required. Prerequisites: MTH 150 and CSC 172


Thursday  
CSC 273W2
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 25413
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 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 2809
Monika Polak
R 3:25PM  4:40PM


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, NPcompleteness. Prerequisites are CSC 173 and MTH 150


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


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 2804
Monika Polak
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, NPcompleteness. Prerequisites include CSC 173 and MTH 150


CSC 17122
Adam Purtee
R 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. Lab and Workshop Required Required for all CSC & DSCC majors.


CSC 17223
Monika Polak
R 6:15PM  7:30PM


Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab and workshop required.


CSC 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 2545
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 2805
Monika Polak
R 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, NPcompleteness. Prerequisites include CSC 173 and MTH 150.


CSC 16121
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16122
Andrew ReadMcFarland
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. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 2546
George Ferguson
R 7:40PM  8:55PM


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.
