Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Preface

$whoami and why am I writing this book?

My journey into software security (somewhat accidentally) began in 2015 when I was a 1st-year master student at RIT. Spring 2015 I had taken a course with professor Mehdi Mirakhorli, and he was looking for a research assistant to help him with a project on software security that was funded by DHS. That project was not only my first exposure to software security but also the catalyst for my career in this field.

Fast-forward to Fall 2021, I started being an assistant professor at the University of Notre Dame where, in the following semester, I would be teaching Secure Software Engineering, a course I’ve designed from scratch. After the first offering of the course, I realized that there was a need for a comprehensive, up-to-date, and practical textbooks on secure software engineering that covered both foundational concepts and modern secure coding practices. Moreover, I started to receive share requests from colleagues in academia who were teaching similar courses. At that point I decided to write this book to fulfill this need and provide a resource that could benefit both students (and, perhaps, if I am not being too ambitious in here, also practitioners new to this field). This book is the result of that decision.

Having said that, I want to be clear that I am not an expert in every aspect of software security. I am a researcher and educator who is passionate about this field and eager to learn more. Thus, I welcome feedback, suggestions, and contributions from the community to make this book better.

Last but not least, have fun reading this book and learning about software security!

Contributing

This book is, and will always be, a work in progress. Software security knowledge is constantly evolving, and so will this book. I want this book to be a community resource that anyone can contribute to. Thus, if you have suggestions, corrections, or want to contribute new content, please open an issue or pull request.