Asee peer logo

Guiding Principles and Pedagogical Tools for an Introductory Software Development Course

Download Paper |


2017 ASEE Annual Conference & Exposition


Columbus, Ohio

Publication Date

June 24, 2017

Start Date

June 24, 2017

End Date

June 28, 2017

Conference Session

Software Engineering Division Technical Session 1

Tagged Division

Software Engineering Division

Page Count




Permanent URL

Download Count


Request a correction

Paper Authors


Mark Hoffman Quinnipiac University

visit author page

Mark Hoffman is a professor of computer science at Quinnipiac University. He joined the University in 2001 following a career in industry and has taught a wide variety of courses including data structures, computer architecture and organization, software development, and the senior capstone project. His research interests include communication and critical thinking skills in computer science education, and the impact of technology on work/home boundary management. He received his Ph.D. from Polytechnic University in Brooklyn, NY.

visit author page


Stefan C. Christov Quinnipiac University

visit author page

Stefan Christov holds Ph.D. and M.S. degrees in Computer Science from the University of Massachusetts Amherst and a B.S. degree in Computer Science from the State University of New York, College at Brockport. He has experience in teaching undergraduate introductory computer science and engineering courses as well as upper-level software engineering courses, including software quality assurance, software project management, and software engineering in health care. His current research interests include improving the quality of human-intensive processes (HIPs), such as medical processes, with a focus on detecting human errors before harm is done and preventing such errors. He has used software engineering techniques to formally represent and analyze models of complex HIPs and industrial engineering techniques to elicit and validate models of such processes. He is also interested in human-computer interaction techniques for presenting information to assist process performers during an ongoing process. His work has resulted in publications in international journals and conferences.

visit author page

Download Paper |


The value of project-based courses in computing, especially software engineering (SE) curricula is widely recognized. Projects reinforce learning by allowing students to apply theoretical concepts to build working systems, to participate in professional practice, and to work on teams creating opportunities to learn non-technical skills, such as communication, leadership, and negotiation skills. Non-trivial projects allow students to solve problems associated with large and complex systems and to build artifacts that may be used as evidence of mastery by potential employers. The 2013 ACM and IEEE Curriculum Guidelines for Undergraduate Degree Programs in Computer Science states that ``students can best learn to apply much of the material defined in the Software Engineering [Knowledge Area] by participating in a project."

The pedagogical literature on project-based computing courses, however, focuses on descriptions of specific instances of a course, of projects used, or of the software development processes employed. This paper describes principles that have emerged from teaching a project-based introductory software development course over the past 12 years and presents specific pedagogical tools designed to support these principles. The principles include the need for students to experience a wide view of software development, to learn about and through workplace practice, to develop strong communication skills, and to learn by doing with frequent feedback and reflection. The pedagogical tools designed to support these principles include a semester-long software maintenance project, workplace scenarios, a real-world software development process, a communication skills rubric, high-level guidelines (instead of low-level prescriptive templates), and reading response questions. To illustrate these tools, we describe several assignments and assessments from a recent iteration of the course.

To evaluate the effectiveness of the pedagogical tools used to implement the guiding principles, we employed several data collection methods during the last offering of the introductory software development course. We designed a survey that asks students to self-assess their achievement of each course learning outcome and we also analyzed the standardized student course evaluations that are filled out by students at the end of each course offered in our institution. We analyzed a course project reflection assignment that students completed at the end of the semester and also analyzed trends in student grades.

The results suggest that students had a positive experience with the course and overall believe that they achieved the course learning outcomes. Some areas for improvement were also identified, including revising the method by which version control tools are integrated in the course and revising the ethics module within the existing course framework.

Hoffman, M., & Christov, S. C. (2017, June), Guiding Principles and Pedagogical Tools for an Introductory Software Development Course Paper presented at 2017 ASEE Annual Conference & Exposition, Columbus, Ohio. 10.18260/1-2--28427

ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2017 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015