Saverio Perugini

Ph.D., Virginia Tech, 2004

Professor of Computer Science, University of Dayton
Veritatem facientes in caritate.   ✞ JMJ ✞   Omnia in Christo.    Pro Deo et Patria

My programming languages textbook
Programming Languages: Concepts and Implementation,
published by Jones & Bartlett Learning,
is now available here.



I hear and I forget, I see and I remember, I do and I understand. — Confucius

What we have to learn to do we learn by doing .... — Aristotle, Ethics

Learning should be an adventure, a quest, a romance. — Gretchen E. Smalley

I love teaching! My philosophy toward teaching computing is simple: learning by doing. Building software solutions to practical computing problems is an integral component of the courses I instruct. My teaching objective is to help students formulate problems, develop strong analytical reasoning and algorithmic thinking skills, and implement elegant and creative software systems. I am inspired by professors who not only impart knowledge through their expertise, but also convey their passion and curiosity for a subject. I engage students in a Socratic-type dialog to cultivate a vibrant and dynamic experience in class.

Below are links to all of the course materials, such as lecture notes, exercises, and tutorials, which I have developed or used in my offerings of these courses at UD. Listed below is also a link to the webpage of each course I have taught at UD which contains syllabi, homework assignments, and projects I developed for these courses.

Course Lecture Notes

Operating Systems (CPS 356)
Database Management Systems (CPS 430/542)
Advanced Topics in Database Systems (CPS 432/562)
UNIX/Linux and C Programming (CPS 444/544) (outdated notes)
Advanced UNIX/Linux Programming (CPS 445)
Emerging Programming Languages (CPS 452)

Quick Reference Sheets

Vim Quick Reference Sheet
Linux Quick Reference Sheet
Advanced Linux Quick Reference Sheet
C Quick Reference Sheet
Go Quick Reference Sheet
Lua Quick Reference Sheet
Statistics Quick Reference Guide
Metalogic Quick Reference Guide

Helpful Pages

Programming Languages Hub
Getting Started with UNIX/Lunix (personalized for UD CPS, CIS, & CPE/ECE students)
Advice for Research Students
Graphical Operating Systems Simulator
Emerging Languages GitHub Pages
Emerging Languages GitHub repository
Operating Systems Community of Practice
Operating Systems Community of Practice GitHub repository
Class YouTube Videos
Class Warpwire Videos

Courses from Prior Semesters

(links to webpages of each of my prior course offerings)

BEST 2009/10 (summer program in science, engineering, and business for high school students from Singapore, China, and the greater Dayton area)
CPS 111: Introduction to Personal Computers (Summer I 16 15 14 13 12 11 10 09 08, Spring 19 18 16 15 13 11 10 09, Winter 08, Fall 18 17 10 09 08 07)
CPS 150: Algorithms and Programming I (Winter 05, Fall 04)
CPS 250: Introduction to Computer Organization (Fall 13 12)
CPS 343/543: Comparative Languages (Spring 14 13 11 10 09, Winter 08 07 05)
CPS 352/543: Concepts and Implementation of Programming Languages (Spring 15)
CPS 356: Operating Systems (Spring 20, Fall 19, Spring 19, Fall 18, Spring 18, Fall 17, Spring 17, Fall 16, Spring 16, Fall 15, Spring 15, Fall 14, Spring 14, Fall 13, Spring 13, Fall 12, Spring 11, Fall 10, Spring 10, Fall 09, Spring 09)
CPS 430/542: Database Management Systems (Fall 07 06 05)
CPS 432/562: Database Management Systems II (Winter 06)
CPS 444/544: UNIX/Linux Programming (Spring 20, Fall 19, Spring 19, Fall 18, Spring 18, Fall 17, Spring 17, Fall 16 15 14 13 12 10 09 08 06 05)
CPS 445: Systems Programming II (Winter 07 06)
CPS 452/592: Emerging Programming Languages (Fall 19, Spring 17, 16)
CPS 482/582: Automata Theory (Spring 20)