SWE 265P: Reverse Engineering and Modeling
Co-Lecturer, Teaching Assistant
Catalogue Description
Introduces theories, concepts, representations, techniques, and case studies in understanding large-scale, complex software systems. Topics include static and dynamic modeling notations, manual and (semi-)automated reverse engineering techniques, APIs, patterns, and styles. A significant, hands-on project is included.
Related Content 📔
Here are some educational posts from my blog that relate to topics that we cover in the course (some of them I even wrote specifically for the course!) I'd recommend that students read them, particularly if the topic is one you are struggling to understand.
Posts tagged "Reverse Engineering and Modeling"
How to Find an Easy First Issue in an Open-Source GitHub Project
Confused about how to find an easy first issue to contribute to? I wrote a guide that won't leave newcomers in the dust for this crucial first step.
May 21, 2022Stealing Code—What All Software Engineering Students Should Know
And why staying in the introductory course frame of mind is actually stunting your growth as a programmer.
Jan 25, 2021Publications tagged "Reverse Engineering and Modeling"
Reading to Write Code: An Experience Report of a Reverse Engineering and Modeling Course
Brooke Ryan, Adriana Meza Soria, Kaj Dreef and André van der Hoek
A substantial portion of any software engineer’s job is reading code. Despite the criticality of this skill in a budding software engineer...
International Conference on Software Engineering: Software Engineering Education and Training, 2022 Brooke Ryan, Adriana Meza Soria, Kaj Dreef and André van der Hoek. 2022. Reading to Write Code: An Experience Report of a Reverse Engineering and Modeling Course. In 44nd International Conference on Software Engineering: Software Engineering Education and Training (ICSESEET ’22), May 21–29, 2022, Pittsburgh, PA, USA. ACM, New York, NY, USA, 12 pages. https://doi.org/10.1145/3510456.3514164
@inproceedings{ReadingWriteCodeExperienceReportRyan2022,
title = {Reading to {{Write Code}}: {{An Experience Report}} of a {{Reverse Engineering}} and {{Modeling Course}}},
author = {Ryan, Brooke and Soria, Adriana Meza and Dreef, Kaj and van der Hoek, André},
booktitle = {44th International Conference on Software Engineering (ICSE ’22)},
doi = {https://doi.org/10.1145/3510456.3514164},
date = {2022},
pages = {12},
abstract = {A substantial portion of any software engineer’s job is reading code. Despite the criticality of this skill in a budding software engineer, reading code—and more specifically, techniques on how to read code when integrating oneself into a large existing software project—is often neglected in the typical software engineering education. As part of a new professional Master of Software Engineering at the University of California, Irvine, we designed and delivered a “reading to write code” course from the ground up. Titled Reverse Engineering and Modeling, the course introduces students to techniques they can use to become familiar with a large code base, so they are able to make meaningful contributions. In this paper, we briefly introduce the Master program and its underlying philosophy, articulate the course’s learning outcomes, present the design of the course, and provide a detailed reflection on our experiences in terms of what went well, what did not go well, what we do not know yet, and what our next steps are in preparing for the forthcoming incarnation of the course in Spring 2022. In so doing, we hope to provide a baseline together with lessons learned for others who may be interested in instituting a similar course at their institution.},
}