Undergraduate Program
Term Schedule
Spring 2021
Number  Title  Instructor  Time 

CSC 10011
–
–


Graduate research assistantship in Computer Science.


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


CSC 16110
Richard Sarkis
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 16111
Richard Sarkis
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 16112
Richard Sarkis
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
Richard Sarkis
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
Richard Sarkis
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 16115
Richard Sarkis
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 16116
Richard Sarkis
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 16117
Richard Sarkis
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 16118
Richard Sarkis
TR 12:30PM  1:45PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 16119
Richard Sarkis
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 1612
Richard Sarkis
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 16120
Richard Sarkis
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 16121
Richard Sarkis
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
Richard Sarkis
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 16123
Richard Sarkis
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 1613
Richard Sarkis
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 1614
Richard Sarkis
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 1615
Richard Sarkis
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 1616
Richard Sarkis
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 1617
Richard Sarkis
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 1618
Richard Sarkis
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 1619
Richard Sarkis
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 1701
Robert Kostin
TR 3:25PM  4:40PM


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. Required for all CSC majors. STUDENTS MUST REGISTER FOR A WORKSHOP AND LAB WHEN REGISTERING FOR THE MAIN COURSE.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 17112
Adam Purtee
M 2:00PM  3:15PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 17113
Adam Purtee
MW 10:25AM  11:40AM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC 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. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 17121
Adam Purtee
TR 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. Required for all CSC majors.


CSC 17122
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. Required for all CSC majors.


CSC 17123
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. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 17128
Adam Purtee
MW 6:15PM  7:30PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


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


CSC 17210
Thaddeus Pawlicki
M 4:50PM  6:05PM


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


CSC 17211
Thaddeus Pawlicki
W 4:50PM  6:05PM


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


CSC 17212
Thaddeus Pawlicki
MW 3:25PM  4:40PM


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


CSC 17213
Thaddeus Pawlicki
TR 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
Thaddeus Pawlicki
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 17215
Thaddeus Pawlicki
MW 2:00PM  3:15PM


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


CSC 17216
Thaddeus Pawlicki
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 17217
Thaddeus Pawlicki
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 17218
Thaddeus Pawlicki
M 7:40PM  8:55PM


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


CSC 17219
Thaddeus Pawlicki
M 6:15PM  7:30PM


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


CSC 1722
Thaddeus Pawlicki
U 7:30PM  9: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 17220
Thaddeus Pawlicki
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
Thaddeus Pawlicki
T 6:15PM  7:30PM


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


CSC 17222
Thaddeus Pawlicki
M 4:50PM  6:05PM


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


CSC 17223
Thaddeus Pawlicki
R 4:50PM  6:05PM


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


CSC 17227
Thaddeus Pawlicki
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
Thaddeus Pawlicki
M 3:25PM  4:40PM


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


CSC 1724
Thaddeus Pawlicki
W 4:50PM  6:05PM


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


CSC 1725
Thaddeus Pawlicki
M 7:40PM  8:55PM


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


CSC 1726
Thaddeus Pawlicki
T 7:40PM  8:55PM


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


CSC 1727
Thaddeus Pawlicki
T 6:15PM  7:30PM


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


CSC 1728
Thaddeus Pawlicki
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 1729
Thaddeus Pawlicki
W 6:15PM  7:30PM


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


CSC 1731
George Ferguson
MW 11:50AM  1:05PM


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 are not allowed.


CSC 1911
Lenhart Schubert
TR 11:05AM  12:20PM


Can machines show selfawareness? Could robots and other machines have subjective sensory and emotional experiences? Could they have a moral sense? These questions are becoming increasingly relevant in our age of increasingly intelligent machines. We will explore these issues through readings from the AI literature as well as from philosophy and cognitive science. Homework will include written answers to questions, essays, 2 Lisp exercises and  for 291 students only  a team programming project intended to demonstrate the possibility of some degree of selfawareness in a computer. The course is optionally available for writing credit.


CSC 2001
Chen Ding
MW 2:00PM  3:15PM


Intensive seminar on cooperative problem solving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Instruction and practice on research methodology and procedures. Students taking CSC 200H may have additional reading, assignments or projects. 200H is required for the Honors B.S. in Computer Science. Students who participate or intend to participate in research are well advised to take CSC 200/200H. The topic may vary from year to year, and the spring 2021 offering has an additional focus on program correctness. It is not just "the programmer's responsibility to produce a correct program but also to demonstrate its correctness in a convincing manner." (Dijkstra) The material includes type systems, program safety, deductive logic, and machinechecked proofs. It includes theory, i.e. the CurryHoward correspondence, and practice, i.e. programming in Rust and Coq.


CSC 200H1
Chen Ding
MW 2:00PM  3:15PM


Intensive seminar on cooperative problem solving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Instruction and practice on research methodology and procedures. Students taking CSC 200H may have additional reading, assignments or projects. 200H is required for the Honors B.S. in Computer Science. Students who participate or intend to participate in research are well advised to take CSC 200/200H. The topic may vary from year to year, and the spring 2021 offering has an additional focus on program correctness. It is not just "the programmer's responsibility to produce a correct program but also to demonstrate its correctness in a convincing manner." (Dijkstra) The material includes type systems, program safety, deductive logic, and machinechecked proofs. It includes theory, i.e. the CurryHoward correspondence, and practice, i.e. programming in Rust and Coq. CSC 200H students propose and complete a final project in cooperative problem solving in an area of computer science research. They are required to attend computer science department colloquiums when their schedule permits.


CSC 2121
Ehsan Hoque
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 user interface designs and functional algorithms for mobile devices (iOS summer/fall, Android spring) and unique user interactions using multitouch technologies. Objectoriented design including modelviewcontroller paradigm, memory management. Other topics include: objectoriented database API, animation, webservices and performance considerations. Prerequisites: CSC 172


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 MTH 161. Recommended: CSC 242 or CSC262; MTH165.


CSC 2411
Ralf Haefner
F 2:00PM  3:15PM


This is a rotating topics course that includes the study of both the computations performed by the brain and of computational models of neuronal responses. Primary focus will be on the visual system. This course is taught at an introductory level in odd numbered years and an advanced level in even numbered years. Programming experience is required.


CSC 2413
Ralf Haefner
MW 2:00PM  3:15PM


Blank Description


CSC 2421
George Ferguson
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. This course is available to majors only during the registration period. 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 decisionmaking. Perceptron algorithm, logistic regression, and support vector machines. Numerical parameter optimization, including gradientdescent and quasiNewton methods. Expectation Maximization. Hidden Markov models and reinforcement learning. Principal Components Analysis. Learning theory including VCdimension and PAC learning guarantees. Prerequisites: MATH 164 & MATH 165, CSC 242 (and therefore CSC 172) strongly recommended.


CSC 2471
James Allen
MW 12:30PM  1:45PM


This course addresses issues of representing computing meaning from natural language, especially issues of understanding language in context using commonsense knowledge of the world. Topics will include a survey of English phrase structure and parsing, semantic representation (e.g., events, semantic roles, time, causality and speech acts), and theories and techniques for understanding language in context, including intention recognition, text understanding using knowledge of scripts and plans, and models of spoken dialogue systems (e.g., conversational agents such as Siri). CSC447, the graduate level version of the course, requires a substantial individual project. Prerequisite: CSC 242


CSC 2491
Jiebo Luo
TR 12:30PM  1:45PM


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
Yuhao Zhu
TR 12:30PM  1:45PM


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 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. Prerequisites: CSC 254; CSC 252 recommended


CSC 2581
Sandhya Dwarkadas
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 3:25PM  4:40PM


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


CSC 2631
Fatemeh Nargesian
TR 2:00PM  3:15PM


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 2651
Yusuf Bilgic
TR 4:50PM  6:05PM


This course is a continuation of DSCC/CSC 262, covering intermediate statistical methodology and related computational methods, with an emphasis on the R statistical computing environment. PREREQUSITE: DSCC 262/CSC 262 (preferred). STT 212 or STT 213 also permitted.


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


CSC 2801
Lane Hemaspaandra
MW 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 include CSC 173 and MATH 150. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE


CSC 28010
Lane Hemaspaandra
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 28011
Lane Hemaspaandra
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 2803
Lane Hemaspaandra
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
Lane Hemaspaandra
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
Lane Hemaspaandra
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 2806
Lane Hemaspaandra
R 7:40PM  8:55PM


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 2807
Lane Hemaspaandra
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 are CSC 173 and MTH 150.


CSC 2808
Lane Hemaspaandra
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 are CSC 173 and MTH 150.


CSC 2809
Lane Hemaspaandra
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 2811
Muthuramakrishnan Venkitasubramaniam
TR 2:00PM  3:15PM


The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques.(MTH 150 or MTH 162), AND (CSC 171 or prior programming experience)


CSC 2812
Muthuramakrishnan Venkitasubramaniam
W 6:15PM  7:30PM


The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques.


CSC 2821
Eustrat Zhupa
TR 3:25PM  4:40PM


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.


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 2861
Lane Hemaspaandra
MW 2:00PM  3:15PM


The difference between computable and uncomputable problems andbetween 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 2911
Lenhart Schubert
TR 11:05AM  12:20PM


Can machines show selfawareness? Could robots and other machines have subjective sensory and emotional experiences? Could they have a moral sense? These questions are becoming increasingly relevant in our age of increasingly intelligent machines. We will explore these issues through readings from the AI literature as well as from philosophy and cognitive science. Homework will include written answers to questions, essays, 2 Lisp exercises and  for 291 students only  a team programming project intended to demonstrate the possibility of some degree of selfawareness in a computer. The course is optionally available for writing credit. Prerequisites: CSC 173 and one or more of 240, 242, 280 , or 282.


CSC 2951
Thaddeus Pawlicki
MW 11:50AM  1:05PM


This course covers special topics that are of current interest in the area of Quantum Computing. Topics vary by term.


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 386V1
Chenliang Xu
–


Blank Description


CSC 3901
Chen Ding
–


Blank Description


CSC 39010
Richard Sarkis
–


Blank Description


CSC 3903
Adam Purtee
–


Blank Description


CSC 3905
Eustrat Zhupa
–


Blank Description


CSC 3906
George Ferguson
–


Blank Description


CSC 3907
George Ferguson
–


Blank Description


CSC 3908
Thaddeus Pawlicki
–


Blank Description


CSC 3909
Yuhao Zhu
–


Blank Description


CSC 390A1
Eustrat Zhupa
–


Blank Description


CSC 390A2
Eustrat Zhupa
–


Blank Description


CSC 3911
–
–


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


CSC 391H1
–
–


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


CSC 391W1
–
–


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


CSC 3921
–
–


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


CSC 3931
Jiebo Luo
–


Blank Description


CSC 3941
–
–


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


CSC 3942
–
–


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


CSC 3951
–
–


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


CSC 395H1
–
–


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


CSC 395W1
–
–


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

Spring 2021
Number  Title  Instructor  Time 

Monday  
CSC 16120
Richard Sarkis
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 17112
Adam Purtee
M 2:00PM  3:15PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 16123
Richard Sarkis
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 1723
Thaddeus Pawlicki
M 3:25PM  4:40PM


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


CSC 16117
Richard Sarkis
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 17210
Thaddeus Pawlicki
M 4:50PM  6:05PM


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


CSC 1614
Richard Sarkis
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 17116
Adam Purtee
M 4:50PM  6:05PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 17222
Thaddeus Pawlicki
M 4:50PM  6:05PM


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


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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 17219
Thaddeus Pawlicki
M 6:15PM  7:30PM


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


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 1617
Richard Sarkis
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 1616
Richard Sarkis
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 17218
Thaddeus Pawlicki
M 7:40PM  8:55PM


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


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 1725
Thaddeus Pawlicki
M 7:40PM  8:55PM


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


Monday and Wednesday  
CSC 17113
Adam Purtee
MW 10:25AM  11:40AM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC 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. Prerequisites: CSC 254; CSC 252 recommended


CSC 1731
George Ferguson
MW 11:50AM  1:05PM


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 are not allowed.


CSC 2951
Thaddeus Pawlicki
MW 11:50AM  1:05PM


This course covers special topics that are of current interest in the area of Quantum Computing. Topics vary by term.


CSC 17122
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. Required for all CSC majors.


CSC 2471
James Allen
MW 12:30PM  1:45PM


This course addresses issues of representing computing meaning from natural language, especially issues of understanding language in context using commonsense knowledge of the world. Topics will include a survey of English phrase structure and parsing, semantic representation (e.g., events, semantic roles, time, causality and speech acts), and theories and techniques for understanding language in context, including intention recognition, text understanding using knowledge of scripts and plans, and models of spoken dialogue systems (e.g., conversational agents such as Siri). CSC447, the graduate level version of the course, requires a substantial individual project. Prerequisite: CSC 242


CSC 200H1
Chen Ding
MW 2:00PM  3:15PM


Intensive seminar on cooperative problem solving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Instruction and practice on research methodology and procedures. Students taking CSC 200H may have additional reading, assignments or projects. 200H is required for the Honors B.S. in Computer Science. Students who participate or intend to participate in research are well advised to take CSC 200/200H. The topic may vary from year to year, and the spring 2021 offering has an additional focus on program correctness. It is not just "the programmer's responsibility to produce a correct program but also to demonstrate its correctness in a convincing manner." (Dijkstra) The material includes type systems, program safety, deductive logic, and machinechecked proofs. It includes theory, i.e. the CurryHoward correspondence, and practice, i.e. programming in Rust and Coq. CSC 200H students propose and complete a final project in cooperative problem solving in an area of computer science research. They are required to attend computer science department colloquiums when their schedule permits.


CSC 2413
Ralf Haefner
MW 2:00PM  3:15PM


Blank Description


CSC 2001
Chen Ding
MW 2:00PM  3:15PM


Intensive seminar on cooperative problem solving. Overview of the subdisciplines and the research of the University of Rochester’s computer science faculty. Instruction and practice on research methodology and procedures. Students taking CSC 200H may have additional reading, assignments or projects. 200H is required for the Honors B.S. in Computer Science. Students who participate or intend to participate in research are well advised to take CSC 200/200H. The topic may vary from year to year, and the spring 2021 offering has an additional focus on program correctness. It is not just "the programmer's responsibility to produce a correct program but also to demonstrate its correctness in a convincing manner." (Dijkstra) The material includes type systems, program safety, deductive logic, and machinechecked proofs. It includes theory, i.e. the CurryHoward correspondence, and practice, i.e. programming in Rust and Coq.


CSC 17215
Thaddeus Pawlicki
MW 2:00PM  3:15PM


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


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


The difference between computable and uncomputable problems andbetween 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 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 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 16115
Richard Sarkis
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 2801
Lane Hemaspaandra
MW 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 include CSC 173 and MATH 150. YOU MUST REGISTER FOR A RECITATION WHEN REGISTERING FOR THE MAIN COURSE


CSC 2611
Eustrat Zhupa
MW 3:25PM  4:40PM


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


CSC 17212
Thaddeus Pawlicki
MW 3:25PM  4:40PM


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


CSC 2581
Sandhya Dwarkadas
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 17123
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. Required for all CSC majors.


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


CSC 1618
Richard Sarkis
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 17216
Thaddeus Pawlicki
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 17214
Thaddeus Pawlicki
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 17128
Adam Purtee
MW 6:15PM  7:30PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


Tuesday  
CSC 16112
Richard Sarkis
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 17110
Adam Purtee
T 4:50PM  6:05PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC 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
Richard Sarkis
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. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 17221
Thaddeus Pawlicki
T 6:15PM  7:30PM


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


CSC 1727
Thaddeus Pawlicki
T 6:15PM  7:30PM


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


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 1613
Richard Sarkis
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 1717
Adam Purtee
T 7:40PM  8:55PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 1726
Thaddeus Pawlicki
T 7:40PM  8:55PM


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


Tuesday and Thursday  
CSC 2421
George Ferguson
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. This course is available to majors only during the registration period. Prerequisites: CSC 172 and MTH 150; CSC 173 STRONGLY Recommended. audits not allowed.


CSC 2911
Lenhart Schubert
TR 11:05AM  12:20PM


Can machines show selfawareness? Could robots and other machines have subjective sensory and emotional experiences? Could they have a moral sense? These questions are becoming increasingly relevant in our age of increasingly intelligent machines. We will explore these issues through readings from the AI literature as well as from philosophy and cognitive science. Homework will include written answers to questions, essays, 2 Lisp exercises and  for 291 students only  a team programming project intended to demonstrate the possibility of some degree of selfawareness in a computer. The course is optionally available for writing credit. Prerequisites: CSC 173 and one or more of 240, 242, 280 , or 282.


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


Mathematical foundations of classification, regression, and decisionmaking. Perceptron algorithm, logistic regression, and support vector machines. Numerical parameter optimization, including gradientdescent and quasiNewton methods. Expectation Maximization. Hidden Markov models and reinforcement learning. Principal Components Analysis. Learning theory including VCdimension and PAC learning guarantees. Prerequisites: MATH 164 & MATH 165, CSC 242 (and therefore CSC 172) strongly recommended.


CSC 1911
Lenhart Schubert
TR 11:05AM  12:20PM


Can machines show selfawareness? Could robots and other machines have subjective sensory and emotional experiences? Could they have a moral sense? These questions are becoming increasingly relevant in our age of increasingly intelligent machines. We will explore these issues through readings from the AI literature as well as from philosophy and cognitive science. Homework will include written answers to questions, essays, 2 Lisp exercises and  for 291 students only  a team programming project intended to demonstrate the possibility of some degree of selfawareness in a computer. The course is optionally available for writing credit.


CSC 2521
Yuhao Zhu
TR 12:30PM  1:45PM


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 16118
Richard Sarkis
TR 12:30PM  1:45PM


Handson introduction to programming using the Python programming language. Covers basic programming constructs including statements, expressions, variables, conditionals, iteration, and functions, as well as objectoriented programming and graphics. Recommended for nonmajors, and/or students with less math and science background. Lab and workshop required.


CSC 2491
Jiebo Luo
TR 12:30PM  1:45PM


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 17121
Adam Purtee
TR 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. Required for all CSC majors.


CSC 2121
Ehsan Hoque
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 2631
Fatemeh Nargesian
TR 2:00PM  3:15PM


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 2811
Muthuramakrishnan Venkitasubramaniam
TR 2:00PM  3:15PM


The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques.(MTH 150 or MTH 162), AND (CSC 171 or prior programming experience)


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. Required for all CSC majors. STUDENTS MUST REGISTER FOR A WORKSHOP AND LAB WHEN REGISTERING FOR THE MAIN COURSE.


CSC 1619
Richard Sarkis
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 1701
Robert Kostin
TR 3:25PM  4:40PM


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
Thaddeus Pawlicki
TR 3:25PM  4:40PM


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


CSC 2821
Eustrat Zhupa
TR 3:25PM  4:40PM


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.


CSC 1611
Richard Sarkis
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. Recommended for nonmajors, and/or students with less math and science background. 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 MTH 161. Recommended: CSC 242 or CSC262; MTH165.


CSC 2651
Yusuf Bilgic
TR 4:50PM  6:05PM


This course is a continuation of DSCC/CSC 262, covering intermediate statistical methodology and related computational methods, with an emphasis on the R statistical computing environment. PREREQUSITE: DSCC 262/CSC 262 (preferred). STT 212 or STT 213 also permitted.


CSC 17217
Thaddeus Pawlicki
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 16119
Richard Sarkis
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 17213
Thaddeus Pawlicki
TR 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 2141
Arthur Roolfs
TR 6:15PM  7:30PM


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


Wednesday  
CSC 17127
Adam Purtee
W 3:25PM  4:40PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


CSC 16110
Richard Sarkis
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 28011
Lane Hemaspaandra
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 1724
Thaddeus Pawlicki
W 4:50PM  6:05PM


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


CSC 17211
Thaddeus Pawlicki
W 4:50PM  6:05PM


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


CSC 28010
Lane Hemaspaandra
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 16114
Richard Sarkis
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 17114
Adam Purtee
W 6:15PM  7:30PM


Handson introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.


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 2812
Muthuramakrishnan Venkitasubramaniam
W 6:15PM  7:30PM


The modern study of cryptography investigates techniques for facilitating interactions between distrustful entities. In this course we introduce some of the fundamental concepts of this study. Emphasis will be placed on the foundations of cryptography and in particular on precise definitions and proof techniques.


CSC 2807
Lane Hemaspaandra
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 are CSC 173 and MTH 150.


CSC 2803
Lane Hemaspaandra
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 1612
Richard Sarkis
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 1729
Thaddeus Pawlicki
W 6:15PM  7:30PM


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


CSC 17220
Thaddeus Pawlicki
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.


CSC 16116
Richard Sarkis
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 16111
Richard Sarkis
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 1728
Thaddeus Pawlicki
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 1615
Richard Sarkis
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.


Wednesday and Friday  
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 2809
Lane Hemaspaandra
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 17223
Thaddeus Pawlicki
R 4:50PM  6:05PM


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


CSC 2804
Lane Hemaspaandra
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 2808
Lane Hemaspaandra
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 are CSC 173 and MTH 150.


CSC 17227
Thaddeus Pawlicki
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 2805
Lane Hemaspaandra
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
Richard Sarkis
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
Richard Sarkis
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 2806
Lane Hemaspaandra
R 7:40PM  8:55PM


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.


Friday  
CSC 2411
Ralf Haefner
F 2:00PM  3:15PM


This is a rotating topics course that includes the study of both the computations performed by the brain and of computational models of neuronal responses. Primary focus will be on the visual system. This course is taught at an introductory level in odd numbered years and an advanced level in even numbered years. Programming experience is required.
