Veritatem facientes in caritate.
✞ JMJ ✞
Omnia in Christo. Pro Deo et Patria.

About

I am a Professor of Mathematics and Computer Science in the Department of Mathematics at Ave Maria University. Before joining Ave Maria University, I was a faculty member in the Department of Computer Science at the University of Dayton for eighteen years, where I taught a variety of undergraduate and graduate courses in computer science, including programming languages, operating systems, and human-computer interaction, and served as the undergraduate program director (2013-2017). I did my Ph.D. in Computer Science at Virginia Tech (2004).I publish primarily in the areas of interactive informational retrieval, human-computer interaction, and programming languages. In 2017, I was awarded an NSF IUSE grant, which resulted in part in a laboratory manual, co-authored with colleagues, for use in teaching operating systems. I am a senior member of the Association for Computing Machinery (ACM) and the IEEE Computer Society.Over the years, I have advised and mentored undergraduate students toward success in graduate school and industry.In 2023, I published a textbook on programming languages titled Programming Languages: Concepts and Implementation with Jones & Bartlett Learning. I am working on three book manuscripts with the tentative titles Linux Programming with Go, The Little Book of Contemporary Concurrency Models, and An Introduction to Computer Science: A Liberal Arts Perspective.In Fall 2022, I joined Ave Maria University to start and direct the computer science program.

Contact

Spring 2024 Office Hours
Wednesdays 11:00 AM - 1:00 PM,
Thursdays noon-1:00 PM,
and by appointment.
Office: Academic Building, Room 2048
E-mail: first [dot] last avemaria edu
Tel: +001 (239) 304-7920

Ave Maria University
5050 Ave Maria Blvd
Ave Maria, FL 34142

Teaching

Spring 2024
CSCI 251. Algorithms and Programming (T Th 8:20 - 10:00 AM)
CSCI 350. Automata Theory (T Th 10:10 - 11:50 AM)

Fall 2023
CSCI 151. Introduction to Computer Programming (T Th 1:50 - 3:30 PM)
CSCI 152. Discrete Structures and Functional Programming (T Th 3:40 - 5:20 PM)

PERSPECTIVEI am inspired by professors who not only impart knowledge through their expertise, but also convey their passion and curiosity for a subject. My teaching objective is to help students formulate problems, develop strong analytical-reasoning and computation-thinking skills, and implement elegant and creative software systems.
Here are links to some of my courses and course materials.
Here are some quotes that have inspired me and helped form my view of the purpose of education and my role as a professor.QUOTESWhat we have to learn to do we learn by doing — Aristotle, EthicsI hear and I forget, I see and I remember, I do and I understand. — ConfuciusLearning should be an adventure, a quest, a romance. — Gretchen E. SmalleyOne specific characteristic of the education profession assumes its most profound significance in the Catholic educator: the communication of truth. For the Catholic educator, whatever is true is a participation in Him who is the Truth; the communication of truth, therefore, as a professional activity, is thus fundamentally transformed into a unique participation in the prophetic mission of Christ, carried on through one’s teaching.
— Sacred Congregation for Catholic Education (1982)
Standing somewhat apart from these arguments are, of course, religious educators, such as those in Catholic schools, who strive to maintain another traditional view—that learning is done for the greater glory of God and, more particularly, to prepare the young to embrace intelligently and gracefully the moral directives of the Church.
— Neil Postman, Technopoly (1992, p. 178)
There are two equally dangerous extremes—to shut reason out and to let nothing else in. — Pascal, Pensées (1670)The aim of education is to make the pupil like and dislike what he ought.
— Aristotle, Nicomachean Ethics
[T]he real motive of education [is] the search for a good life.
— Alan Bloom, The Closing of the American Mind (1987, p. 34)
In Higher Education?, Andrew Hacker and Claudia Dreifus remark that the purpose of college is to make you a more interesting person—nice formulation, as long as we stipulate that the person to whom it is more important to be interesting is yourself, if only since that is the one with whom you have to spend the of your life. But being interesting is very different from credentialed self-actualization, as David Brooks would call it. Being a quadruple major does not make you interesting. Editing the college newspaper while singing in an a capella group, starting a nonprofit, and learning how to cook exotic grains—this does not make you interesting. Interesting is not accomplished. Interesting is not “impressive.” What makes you interesting is reading, thinking, slowing down, having long conversations, and creating a rich inner life for yourself.
— William Deresiewicz, Excellent Sheep (2014, pp. 86-87, my emphasis)
It may be true that you have to be able to read in order to fill out forms at the DMV, but that’s not why we teach children to read. We teach them to read for the higher purpose of allowing them access to beautiful and meaningful ideas.
— Paul Lockhart, A Mathematician’s Lament (2009, p. 48)
Young men, for example, will learn how to make lay-up shots when they play basketball. To be able to make them is part of the definition of what good players are. But they do not play basketball for that purpose. There is usually a broader, deeper, and more meaningful reason for wanting to play—to assert their manhood, to please their fathers, to be acceptable to their peers, even for the sheer aesthetic pleasure of the game itself.
— Neil Postman, Technopoly (1992, pp. 176-177)
The things that are most worth doing are worth doing for their own sake [(e.g., reading/writing poetry, watching a sunset, listening to classical music, gazing into the night sky, and studying computer science)]. Anyone who tells you that the sole purpose of education is the acquisition of negotiable skills is attempting to reduce you to a productive employee at work, a gullible consumer in the market, and a docile subject of the state. What’s at stake, when we ask what college is for, is nothing less than our ability to remain fully human.
— William Deresiewicz, Excellent Sheep (2014, p. 79)
What builds character and virtue is carving out time for contemplation: reading, thinking, slowing down, taking walks, engaging in philosophical discussions, and mental prayer. Doing so will help you develop a strong interior life and ground you in a moral and intellectual foundation that will give meaning, color, and texture to your life.

COURSE MATERIALS
Lecture Notes
Selected Prior Courses (Full List)
(at University of Dayton)
Concepts and Implementation of Programming Languages (CPS 352/543)
Emerging Programming Languages (CPS 452)
Automata Theory (CPS 482/582)
Operating Systems (CPS 356)
UNIX/Linux Programming (CPS 444/544)
Database Management Systems (CPS 430/542)
Other Resources
Emerging Programming Languages GitHub Pages (and repository)
Operating Systems Community of Practice (and repository)

Research

I am interested in the research space at the intersection of programming languages and software engineering, with a focus on exploring the application of language concepts (continuations, reflection, partial evaluation, concurrency, and others) to engineering interactive computing systems. My research goal is to develop simple and elegant models that leverage ideas from programming languages to improve the conception, design, implementation, and security of interactive computing systems.

Publications
Selected List
Full List
The papers I have published are also indexed by the following services.

Research Projects
Modeling and Managing Mixed-initiative Dialogs
Developing a Contemporary Operating Systems Course (NSF-funded Project)

Spring 2024 TEACHING
CSCI 251. Algorithms and Programming (T Th 8:20 - 10:00 AM)
CSCI 350. Automata Theory (T Th 10:10 - 11:50 AM)

Selected Publications ( Full List )

  • Perugini, S., Yao, Z., Phung, P.H., Rettig, A., Bryant, A.R., Baldwin, R.O., Wright, D.J., & Gallagher, J.C. (2022). An active learning laboratory manual for teaching a contemporary undergraduate operating system course. Journal of Open Source Education, 5(58), 162. [DOI/PDF]

  • Williams, B.M. & Perugini, S. (2020). Staging human-computer dialogs: An application of the Futamura Projections. Journal of Computing Sciences in Colleges, 36(4), 83-92. USA: Consortium for Computing Sciences in Colleges. [DOI | preprint PDF | postprint PDF]

  • Perugini, S. & Williams, B.M. (2020). C + Go: An alternate approach toward Linux programming course. In Heckman, S., Monge, A., & Cutter, P. (Eds.), Proceedings of the 50st ACM Technical Symposium on Computer Science Education (SIGCSE), 933–939. New York, NY: ACM Press. [DOI | preprint PDF]

  • Perugini, S. (2019). Emerging languages: An alternative approach to teaching programming languages. Journal of Functional Programming, 29, E13. Cambridge, UK: Cambridge University Press. [DOI | WWW | PDF | preprint PDF]

  • Buck, J.W., Perugini, S., & Nguyen, T.V. (2018). Natural language, mixed-initiative personal assistant agents. In Kim, D.S., Lee, K., & Ushiama, T. (Eds.), Proceedings of the 12th International ACM Conference on Ubiquitous Information Management and Communication (IMCOM), 82:1-82:8. New York, NY: ACM Press. [DOI | PDF]

  • Perugini, S. & Buck, J.W. (2016). A language-based model for specifying and staging mixed-initiative dialogs. In Campos, J.C. & Schmidt, A. (Eds.), Proceedings of the 8th International ACM SIGCHI Symposium on Engineering Interactive Computing Systems (EICS), 204-216. New York, NY: ACM Press. [DOI | PDF].

  • Perugini, S. (2016). Mining mixed-initiative dialogs. In Su, S.-F. (Ed.), Proceedings of the IEEE International Conference on Systems, Man, and Cybernetics (SMC), 2287-2294. Los Alamitos, CA: IEEE Computer Society Press. [DOI | PDF].

  • Perugini, S. (2010). Personalization by website transformation: Theory and practice. Information Processing and Management, 46(3), 284-294 [DOI | PDF]

  • Perugini, S. & Ramakrishnan, N. (2010). Program transformations for information personalization. Computer Languages, Systems and Structures, 36(3), 223-249 [DOI | PDF]

  • Perugini, S. (2010). Supporting multiple access paths to objects in information hierarchies: Faceted classification, faceted search, and symbolic links. Information Processing and Management, 46(1), 22-43 [DOI | PDF]

  • Perugini, S. (2008). Symbolic links in the Open Directory Project. Information Processing and Management, 44(2), 910-930 [DOI | PDF]

  • Perugini, S., Anderson, T.J., & Moroney, W.F. (2007). A study of out-of-turn interaction in menu-based, IVR, voicemail systems. In Gilmore, D. (Ed.), Proceedings of the 25th International ACM Conference on Human Factors in Computing Systems, 961-970. New York, NY: ACM Press. [DOI | PDF]

  • Perugini, S. & Ramakrishnan, N. (2006). Interacting with web hierarchies. IEEE IT Professional, 8(4), 19-28 [DOI | PDF]

  • Perugini, S. & Ramakrishnan, N. (2005). A generative programming approach to interactive information retrieval: Insights and experiences. In Glück, R. & Lowry, M. (Eds.), Proceedings of the 4th International ACM Conference on Generative Programming and Component Engineering, LNCS 3676, 205-220. Berlin: Springer. [DOI | PDF]

  • Narayan, M., Williams, C., Perugini, S., & Ramakrishnan, N. (2004). Staging transformations for multimodal web interaction management. In Najork, M. & Wills, C. (Eds.), Proceedings of the 13th International ACM World Wide Web Conference, 212-223. New York, NY: ACM Press. [DOI | PDF]

  • Perugini, S., Gonçalves, M.A., & Fox, E.A. (2004). Recommender systems research: A connection-centric survey. Journal of Intelligent Information Systems, 23(2), 107-143. [DOI | PDF]

Lecture Notes

Past Courses

(at University of Dayton)
(links to webpages of each of my prior course offerings)

Helpful Pages

Quick Reference Sheets