Publications

Reflection Through Two Lenses: Experiences of Teaching and Taking Undergraduate Software Engineering and Testing Courses (In Proc. of 4th International Workshop on Software Engineering Education for the Next Generation, co-located with 44th Intl. Conference on Software Engineering (ICSE-SEENG'22), Pittsburg, PA, USA) [PDF] In this experience paper, we collectively discuss our learning through realizations and reflections from both the instructor's and students' perspectives from teaching and taking two separate courses in parallel, namely software engineering and software testing. Both the courses had a mix of Millennial and Gen Z, junior-to-senior-level computer science students.
Tools and Techniques Adapted for Teaching Software Engineering Topics Remotely during the COVID-19 Pandemic (In Proc. of 34th International Conference on Software Engineering Education and Training, co-located with Hawaii International Conference on Systems Science (CSEET'22, HICSS-55), Hawaii, USA 2022) [PDF-preprint] This paper interviews 16 Software Engineering Education & Training (SEET) educators and then surveys 300+ SEET educators and students world-wide to find out what tools and techniques they used for their remote, online software engineering courses during the COVID-19 pandemic, what lessons they learned and their improvement suggestions.
How Well Does Undergraduate Education Prepare Software Engineers? Perspectives of Practitioners in Bangladesh. (In Proc. of 32nd IEEE International Conference on Software Engineering Education and Training (CSEET'2020), Munich, Germany 2020.) [PDF] [Slides] [Talk]This paper investigates how well the Bangladeshi software and IT-related undergraduate education prepares the students for the software industry. It interviewed 20 software development practitioners, followed by a survey of 200+ more such practitioners in Bangladesh and presents the findings and some improvement suggestions.
Continuous Authentication Using Creative Writing. (In Proc. of IEEE International Symposium on Networks, Computers and Communications (ISNCC-2020), Montreal, Canada.)This paper studies the effectiveness of continuous user authentication using creative and factual writing. User keystroke dynamic can vary based on what type of writing they are using to authenticate and also on what surface their laptop or keyboard is on while they are typing.
An Empirical Study of Teaching Qualities of Popular Computer Science and Software Engineering Instructors Using RateMyProfessor.com Data. (In Proc. of 42nd Intl. Conference on Software Engineering - Software Engineering Education And Training Track. ICSE-SEET'20, Seoul, South Korea.) [PDF] [Web] [Talk]This paper mines students' evaluations from RateMyProfessor.com for the instructors from the top 20 US and Canadian universities to compare popular computer science and software engineering instructors and characterize their teaching qualities.
An Empirical Study on Students’ Feedback, Psychology and Evaluations of Teaching, Technology and Curricula for English Language Learning in the Top North American Universities. (Accepted abstract at the Hawai'i International Conference on English Language and Literature Studies, HICELLS '20, Hilo, Hawai'i, USA) [PDF] [Slides] [Talk]This work analyzes more than 17,000 students' feedback to get insights on their psychology and evaluation of teaching, technology usage and syllabus for more than 800 English instructors from the top 20 US and Canadian universities.
Service performance tests on the Mobile Edge Computing platform: challenges and opportunities (INFORMS Conference on Service Sciences, June 2019) [PDF] [Slides] This paper discusses how clients conduct performance analysis testing before switching to the Cloud computing vendors, discusses the differences between the Cloud computing and Mobile Edge Computing (MEC) paradigms and then tries to envision the challenges and opportunities that may unfold for the performance tests on the future MEC service platforms.
RUGRAT: Evaluating program analysis and testing tools and compilers with large generated random benchmark applications (Software -- Practice & Experience, 2014)This article extends our earlier WODA 2012 paper on RUGRAT. This article explores the computational resources RUGRAT requires, uses RUGRAT to benchmark Java source-to-bytecode compilers, and compares RUGRAT benchmarking results to a baseline of benchmarking with handwritten programs.
Evaluating program analysis and testing tools with the RUGRAT random benchmark application generator (In Proc. 10th International Workshop on Dynamic Analysis (WODA'12), July 2012) [PDF] [Slides] [Web]RUGRAT aims at generating random benchmark applications for evaluating program analysis and testing tools. The RUGRAT prototype can automatically generate large Java applications that consist of a user-specified mix of Java language features such as iteration, recursion, and the use of deep subtype hierarchies.
CarFast: Achieving higher statement coverage faster (20th International Symposium on the Foundations of Software Engineering (FSE-12), 2012) [PDF] [Slides][Web]We propose an approach that utilizes static analysis, dynamic-symbolic execution and constraint based test case selection to achieve higher statement coverage faster. We compare and present empirical results on performance and other findings with competitive approaches: Random, Adaptive Random and Dynamic Adaptive Random Testing (DART) and present empirical results.
DSDSR: A tool that uses dynamic symbolic execution for data structure repair (8th International Workshop on Dynamic Analysis (WODA-10), 2010)This paper discusses the implementation of our dynamic symbolic data structure repair tool, DSDSR. We provide initial empirical results of applying DSDSR on different formulations of the same correctness condition and compare DSDSR with a state-of-the-art tool, Juzi.
Dynamic symbolic data structure repair (Proc. 32nd ACM/IEEE International Conference on Software Engineering (ICSE), Emerging Results Track, 2010)We motivate how dynamic symbolic techniques enable generic repair to support a wider range of correctness conditions and present DSDSR, a novel repair algorithm based on dynamic symbolic execution. We implement the algorithm for Java and report initial empirical results to demonstrate the promise of our approach for generic repair.