Saverio Perugini

Ph.D., Virginia Tech, 2004

Professor of Mathematics and Computer Science, Ave Maria University
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.

(Mirrored page at https://saverio-teaching.carrd.co.)

Teaching

Perspective

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

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

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

One 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)

(faith and reason) 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

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, Mathematician’s Lament (2009, p. 48)

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) (older notes)
UNIX/Linux and C Programming (CPS 444/544) (older notes)
Advanced UNIX/Linux Programming (CPS 445)
Database Management Systems (CPS 430/542)
Advanced Topics in Database Systems (CPS 432/562)
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/Linux (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 341. Discrete Structures (Spring 22)
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 22, Fall 21, 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 410. User Interface Design and Development (Spring 22, Fall 21)
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 21, Fall 19, Spring 17, 16)
CPS 482/582. Automata Theory (Spring 20)