Matthew Fluet
Associate Professor
Department of Computer Science
Golisano College of Computing and Information Sciences
585-475-2854
Office Hours
2241 (GOL-3555): Mo 2:30pm -- 3:30pm; Tu 3:00pm -- 4:00pm; We 3:30pm -- 4:30pm; Th 3:00pm -- 4:00pm
Office Location
Office Mailing Address
102 Lomb Memorial Drive, Computer Science Department, Rochester, NY 14623-5608
Matthew Fluet
Associate Professor
Department of Computer Science
Golisano College of Computing and Information Sciences
Education
BS in Mathematics, Harvey Mudd College; Ph.D. in Computer Science, Cornell University
Bio
Matthew Fluet is an associate professor in the Department of Computer Science at RIT. Before joining RIT, he was a research assistant professor at the Toyota Technological Institute at Chicago (TTI-C). He received his PhD in Computer Science from Cornell University and his BS in Mathematics from Harvey Mudd College.
585-475-2854
Areas of Expertise
Functional programming
Compiler construction
Program analysis
Type systems
Parallelism and concurrency
Select Scholarship
Journal Paper
Westrick, Sam, et al. "Automatic Parallelism Management." Proceedings of the ACM on Programming Languages 8. POPL (2024): 1118 - 1149. Web.
Westrick, Sam, et al. "Disentanglement in Nested-Parallel Programs." Proceedings of the ACM on Programming Languages 4. POPL (2019): Article 47. Web.
Bergstron, Lars, et al. "Lazy Tree Splitting." The Journal of Functional Programming 22. 4-5 (2012): 382-483. Print.
Fluet, Matthew, et al. "Implicitly-threaded Parallelism in Manticore." The Journal of Functional Programming 20. 5-6 (2011): 537-576. Print.
Published Conference Proceedings
Contractor, Maheen Riaz and Maheen Riaz Contractor. "Type- and Control-Flow Directed Defunctionalization." Proceedings of the 32nd Symposium on Implementation and Application of Functional Languages (IFL ’20), September 2–4, 2020, Canterbury, United Kingdom. Ed. Olaf Chitil. New York, NY, USA: ACM, 2021. Web.
Guatto, Adrien, et al. "Hierarchical Memory Management for Mutable State." Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP'18; February 24-26, 2018; Wien, Austria). Ed. Thomas Gross. New York, New York: ACM, 2018. Web.
Le, Matthew, Ryan Yates, and Matthew Fluet. "Revisiting Software Transactional Memory in Haskell." Proceedings of the Haskell’16: Proceedings of the 9th International Symposium on Haskell; September 22-23, 2016, Nara, Japan. Ed. Geoffrey Mainland. New York, NY: ACM, 2016. Web.
Le, Matthew and Fluet, Matthew. "Partial Aborts for Transactions via First-Class Continuations." Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming (ICFP’15); August 31 — September 2, 2015, Vancouver, BC, Canada. Ed. Kathleen Fisher and John Reppy. New York, NY: ACM, 2015. Print.
Acar, Umut A., et al. "Coupling Memory and Computation for Locality Management." Proceedings of the First Summit on Advances in Programming Languages (SNAPL'15); May 3 - 6, 2015, Asilomar, CA. Ed. Thomas Ball, et al. Dagstuhl, Germany: Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 2015. Web.
Adsit, Connor and Fluet, Matthew. "An Efficient Type- and Control-Flow Analysis for System F." Proceedings of the 26th International Symposium on Implementation and Application of Functional Languages (IFL'14); October 1 - 3, 2014, Boston, MA. Ed. Sam Tobin-Hochstadt. New York, NY: ACM, 2015. Web.
Le, Matthew and Fluet, Matthew. "Combining Shared State with Speculative Parallelism in a Functional Language." Proceedings of the 26th International Symposium on Implementation and Application of Functional Languages (IFL'14); October 1 - 3, 2014, Boston, MA. Ed. Sam Tobin-Hochstadt. New York, NY: ACM, 2015. Web.
Bergstrom, Lars, et al. "Practical and Effective Higher-Order Optimizations." Proceedings of the Ninteenth ACM SIGPLAN International Conference on Functional Programming (ICFP'14); September 1-3, 2014; Gothenburg, Sweden. Ed. Manuel Chakravarty. New York, NY: ACM Press, 2014. Print.
Bergstron, Lars, et al. "Data-Only Flattening for Nested Data Parallelism." Proceedings of the 18th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (Shenzhen, China; February 23-27, 2013). Ed. Saman Amarasinghe and Richard Vuduc. New York, NY: ACM, 2013. Print.
Amsden, Edward and Matthew Fluet. "Fairness for Transactional Events." Proceedings of the 23rd Symposium on Implementation and Application of Functional Languages (Lawrence, KS, USA; October 3-5, 2011). Ed. Andy Gill and Jurriaan Hage. New York, NY: Springer, 2012. Print.
Fluet, Matthew. "A Type-and Control-Flow Analysis for System F." Proceedings of the 24th Symposium on Implementation and Application of Functional Languages (Oxford, UK; August 30-September 1, 2012). Ed. Ralf Hinze. New York, NY: Springer, 2013. Print.
Auhagen, Sven, et al. "Garbage Collection for Multicore NUMA Machines." Proceedings of the 2011 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness (MSPC '11; San Jose, CA; June 2011). Ed. Madanlal Musuvathi and Xipeng Shen. New York, NY: ACM Press, 2011. Print.
External Scholarly Fellowships/National Review Committee
8/1/2014 - 7/31/2017
National Science Foundation (CISE Research Infrastructure (CRI)
Amount: $224,329
National Science Foundation (CISE Research Infrastructure (CRI)
Amount: $224,329
6/1/2014 - 5/31/2018
National Science Foundation (Software and Hardware Foundations (SHF)
Amount: $236,744
National Science Foundation (Software and Hardware Foundations (SHF)
Amount: $236,744
9/1/2011 - 8/31/2014
National Science Foundation
Amount: $412,261
National Science Foundation
Amount: $412,261
7/1/2008 - 6/30/2012
National Science Foundation
Amount: $91,867
National Science Foundation
Amount: $91,867
Invited Keynote/Presentation
Fluet, Matthew. "The Manticore Project." The 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing. ACM. Boston, MA. 24 Sep. 2013. Conference Presentation.
Book Chapter
Fluet, Matthew, et al. "Programming in Manticore, a Heterogenous Parallel Functional Language." Revised Selected Lectures of the Third Central European Functional Programming Summer School (CEFP'09). Ed. Zoltan Horvath, Rinus Plasmeijer, and Viktoria Zsok. Germany: Springer-Verlag, 2010. 94-145. Print.
Currently Teaching
CSCI-344
Programming Language Concepts
3 Credits
This course is a study of the syntax and semantics of a diverse set of high-level programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.
CSCI-541
Programming Skills
3 Credits
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language.
CSCI-641
Advanced Programming Skills
3 Credits
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. A term project involving independent investigation is also required. Note: students who complete CSCI-541 may not take CSCI-641 for credit.
CSCI-742
Compiler Construction
3 Credits
This course discusses design and implementation of language processors and translators. Topics include lexical, syntactic, and semantic descriptions, algorithms for analysis tools, and programming techniques, as well as interpreters and code generation for typical computer architectures. Teams of students will be required to design and implement a programming language with nested block structure and data aggregates.
CSCI-788
Computer Science MS Project
3 Credits
Project capstone of the master's degree program. Students select from a set of possible projects and confirm that they have a project adviser. Students enroll in a required colloquium component that meets weekly, during which they present information, related to their projects. Projects culminate with delivery of a final report and participation in a poster session open to the public.
CSCI-790
Computer Science MS Thesis
6 Credits
Thesis capstone of the master's degree program. Student must submit an acceptable thesis proposal in order to enroll. It is expected that the work would lead to a paper of the caliber of those generally acceptable to a national conference.
CSCI-799
Computer Science Graduate Independent Study
1 - 3 Credits
Students work with a supervising faculty member on topics of mutual interest. A student works with a potential faculty sponsor to draft a proposal that describes what a student plans to do, what deliverables are expected, how the student's work will be evaluated, and how much credit will be assigned for successful completion of the work. The faculty sponsor proposes the grade, but before the grade is officially recorded, the student must submit a final report that summarizes what was actually accomplished.