All assignments and activities associated with this course must be performed in accordance with the University of Rochester's Academic Honesty Policy. More information is available at: http://www.rochester.edu/college/honesty.
(from CDCS) An implementation-oriented survey of software systems that specify, model and synthesize software/hardware systems. The complexity of modern computer architectures places a heavy manual burden on the programmer to write correct, efficient and fast programs. This course investigates programming language, compiler and automated reasoning techniques that transfer this burden to synthesis systems which aim to reduce the burden on programmers by generating code from high-level specifications.
This course requires students to read papers and demonstrate their understanding by building systems from those papers.
Students who take this course will learn:
Students will be expected to demonstrate mastery of these goals by building three projects, one of which is a writing project.
CSC254, CSC255 are strongly recommended; CSC253 may be useful.
Background in logic, AI (knowledge representation) are very useful as well.
This is a seminar course. It uses contract grading. You receive a B in this class if you meet the contract. A higher grade requires high-quality work on the three projects, utilizing feedback from the instructor.
The contract is as follows:
Late submissions without informing the instructor will violate the contract.
Inform the instructor in advance if circumstances beyond your control will make you miss a deadline.
Here are links to similar courses elsewhere that you may find inspiring. This course focuses on the pragmatics.