Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Mariam Kamkar

dblp:k/MariamKamkar · DBLP profile ↗
← Back
16ranked-venue papers
5as first author
1since 2021 · last 2021
0000-0002-5698-0357ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 9 · 4 first-authorHuman-computer interaction and ubiquitous computing · 4 · 1 since 2021Security and privacy · 2Systems, architecture and hardware · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Software testing · 65% Program analysis · 22% Debugging and program repair · 13%
Network and information security
1 paper
Systems and software security · 100%
Theoretical computer science
1 paper
Mathematical optimization · 100%

Topics — the 13 heaviest of 14, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Systems and software security › memory safety › memory corruption defense
buffer overflow protection
0.012003
A Comparison of Publicly Available Tools for Dynamic Buffer Overflow Prevention · NDSS 2003
Systems and software security
memory safety
0.012003
A Comparison of Publicly Available Tools for Dynamic Buffer Overflow Prevention · NDSS 2003
Software testing › test generation
constraint-based test generation
0.012001
Analysis of the constraint solver in UNA based test data generation · ESEC / SIGSOFT FSE 2001
Software testing
test input generation
0.012001
Analysis of the constraint solver in UNA based test data generation · ESEC / SIGSOFT FSE 2001
Mathematical optimization
linear programming
0.012001
Analysis of the constraint solver in UNA based test data generation · ESEC / SIGSOFT FSE 2001
Mathematical optimization › linear programming
simplex method
0.012001
Analysis of the constraint solver in UNA based test data generation · ESEC / SIGSOFT FSE 2001
Program analysis
dynamic analysis
0.012003
A Comparison of Publicly Available Tools for Dynamic Buffer Overflow Prevention · NDSS 2003
Debugging and program repair › automated debugging
algorithmic debugging
0.011991
Generalized Algorithmic Debugging and Testing · PLDI 1991
Software testing › specification-based testing
category-partition testing
0.011991
Generalized Algorithmic Debugging and Testing · PLDI 1991
Debugging and program repair
fault localization
0.011991
Generalized Algorithmic Debugging and Testing · PLDI 1991
Software testing › black-box testing
functional testing
0.011991
Generalized Algorithmic Debugging and Testing · PLDI 1991
Program analysis › static analysis
program slicing
0.011991
Generalized Algorithmic Debugging and Testing · PLDI 1991
Program analysis
static analysis
0.011991
Generalized Algorithmic Debugging and Testing · PLDI 1991

Methods — techniques the papers use, named apart from their topics

dynamic analysis · 0.1unified numerical approach · 0.1simplex method · 0.1cutting-plane algorithm · 0.1branch-and-bound · 0.1program slicing · 0.0category partition method · 0.0
YearPublicationVenuePosition
2021 Pilot Study of a Visualization Tool for Object Graphs and Concurrency via Shared Memory
abstract
Concurrency and synchronization are two topics that are becoming increasingly important as multicore systems and distributed systems are becoming the norm. However, prior research shows that students struggle with these topics, perhaps partially since they require a good understanding of language semantics and abstract reasoning. To aid students' learning, we developed Progvis to visualize these concepts and let students experiment with them. We also conducted a pilot study of whether the tool helps students to solve synchronization problems, and the results are promising.
Filip Strömbäck, Linda Mannila, Mariam Kamkar
SIGCSE3
2020 Exploring Students' Understanding of Concurrency - A Phenomenographic Study
abstract
This paper continues previous efforts in understanding the problems students face when learning concurrency. In this paper, we explore students' understanding of the subject using phenomenography in order to gain insights that can aid in explaining the underlying causes for common student mistakes in concurrency, which has been studied in depth previously. Students' experience of concurrency and critical sections were analyzed using a phenomenographic study based on interviews with students attending one of two courses on concurrency and operating systems. We present 6 categories describing students' experience of concurrency, and 4 categories describing students' experience of critical sections in this paper. Furthermore, these categories are related to previous results, both to explore how misconceptions in the categores relate to student mistakes and to estimate how common it is for each category to be discerned.
Filip Strömbäck, Linda Mannila, Mariam Kamkar
SIGCSE3
2019 A Student's View of Concurrency - A Study of Common Mistakes in Introductory Courses on Concurrency
abstract
This paper investigates common misconceptions held by students regarding concurrency in order to better understand how concurrency education can be improved in the future. As a part of the exam in two courses on concurrency and operating systems, students were asked to identify and eliminate any concurrency issues in a piece of code as a part of their final exam. Different types of mistakes were identified and the 216 answers were sorted into categories accordingly. The results presented in this paper show that while most students were able to identify the cause of an issue given its symptoms, only approximately half manage to successfully eliminate the concurrency issues. Many of the incorrect solutions fail to associate shared data with a synchronization primitive, e.g. using one lock to protect multiple instances of a data structure, or multiple locks to protect the same instance in different situations. This suggests that students may not only have trouble dealing with concepts related to concurrency, but also more fundamental concepts related to the underlying computational model. Finally, this paper proposes possible explanations for the students' mistakes in terms of improper mental models, and suggests types of problems that highlight the issues with these mental models to improve students' understanding of the subject.
Filip Strömbäck, Linda Mannila, Mikael Asplund, Mariam Kamkar
ICER4
2011 RIPE: runtime intrusion prevention evaluator
abstract
Despite the plethora of research done in code injection countermeasures, buffer overflows still plague modern software. In 2003, Wilander and Kamkar published a comparative evaluation on runtime buffer overflow prevention technologies using a testbed of 20 attack forms and demonstrated that the best prevention tool missed 50% of the attack forms. Since then, many new prevention tools have been presented using that testbed to show that they performed better, not missing any of the attack forms. At the same time though, there have been major developments in the ways of buffer overflow exploitation.
John Wilander, Nick Nikiforakis, Yves Younan, Mariam Kamkar, Wouter Joosen
ACSAC4
2003 A Comparison of Publicly Available Tools for Dynamic Buffer Overflow Prevention
John Wilander, Mariam Kamkar
NDSS2
2001 Syntax-Directed Construction of Value Dependence Graphs
abstract
Most software analysis and assessment techniques operate on graph representations of the target software. One of the most common representations is the Program Dependence Graph in one of its many variations. The Value Dependence Graph is an alternative that is more suitable for many types of analyses, including static slicing and many code transformations, such as instruction scheduling and invariant analysis. The authors present a new algorithm that builds Value Dependence Graphs from the parse tree of a program. By generating the Value Dependence Graph from the parse tree, our algorithm is significantly simpler and clearer than previously published algorithms.
David Byers, Mariam Kamkar, Ture Pålsson
ICSM2
2001 Analysis of the constraint solver in UNA based test data generation
abstract
In a series of articles Gupta et al. develop a framework for automatic test data generation for computer programs. In general, their approach consists of a branch predicate collector, which derives a system of linear inequalities representing the branch predicates for a given path in the program. This system is solved using a solving technique of theirs called the Unified Numerical Approach (UNA) [5, 7]. In this paper we show that in contrast to traditional optimization methods the UNA is not bounded by the size of the solved system. Instead it depends on how input is composed. That is, even for very simple systems consisting of one variable we can easily get more than a thousand iterations. We will also give a formal proof that UNA does not always find a mixed integer solution when there is one. Finally, we suggest using some traditional optimization method instead, like the simplex method in combination with branch-and-bound and/or a cutting-plane algorithm as a constraint solver.
Jon Edvardsson, Mariam Kamkar
ESEC / SIGSOFT FSE2
1998 Computer science as an integrated part of engineering education
abstract
The Information Technology curriculum at Linköping University has as goal to form engineers with an integrated view of engineering. The teaching philosophy in this curriculum is Problem-Based Learning. The education in each term is organised in a number of themes where topics from different disciplines are integrated. We describe a particular term in the Information Technology curriculum as an example of the approach and the integration of computer science teaching with the teaching of other disciplines. An important advantage of the approach is that the students discover interactions between different disciplines and view the different topics as naturally connected. Also, the students seem to have a better understanding of the topics and are better motivated. Further, they obtain improved communication and co-operation skills. Another advantage is that the approach is appreciated by our female students, which has led to a higher percentage of female students in this curriculum compared to our other computer science curricula.
Patrick Lambrix, Mariam Kamkar
ITiCSE2
1998 Application of program slicing in algorithmic debugging
Mariam Kamkar
Inf. Softw. Technol.1
1995 Dynamic slicing of distributed programs
abstract
As software applications grow larger and become more complex, program maintenance activities such as adding new functionality, debugging, and testing consume an increasing amount of available resources for software development. This is especially true for distributed systems communicating via message passing. In order to cope with this increased complexity, programmers need effective computer supported methods for decomposition and dependence analysis of programs. Program slicing is one method for such decomposition and dependence analysis. A program slice with respect to a specified variable at some program point consists of those parts of the program which potentially affect the value of that variable at the particular program point. A static slice is valid for all possible executions of a program while a dynamic slice considers only a particular execution of a program. In this paper we present a technique for dynamic slicing of distributed programs which computes accurate slices. We introduce the notion of distributed dynamic dependence graph (DDDG) which represents control, data and communication dependences in a distributed program. This graph is built at run time and used to compute dynamic slices of the program. A distributed dynamic slicer for ANSI-C programming language has been implemented on a parallel MIMD computer of type Parsytec GC/Powerplus with 128 PowerPC processors.
Mariam Kamkar, Patrik Krajina
ICSM1
1995 An overview and comparative classification of program slicing techniques
Mariam Kamkar
J. Syst. Softw.1
1995 Usability criteria for automated debugging systems
Nahid Shahmehri, Mariam Kamkar, Peter Fritzson
J. Syst. Softw.2
1993 Interprocedural Dynamic Slicing Applied to Interprocedural Data How Testing
abstract
During the past ten years several variants of an analysis technique called program slicing have been developed. Program slicing has applications in maintenance tasks such as debugging, testing, program integration, program verification, etc. and can be characterized as a type of dependence analysis. A program slice can loosely be defined as the subset of a program needed to compute a certain variable value at a certain program position. A novel method for interprocedural dynamic slicing which is more precise than interprocedural static slicing methods and is useful for dependence analysis at the procedural abstraction level was given by M. Kamkar et al. (1992, 1993). It is demonstrated here how interprocedural dynamic slicing can be used to increase the reliability and precision of interprocedural data flow testing. The work on data flow testing reported by E. Duesterwald et al. (1992), which is a novel method for data flow testing through output influences, is generalized.>
Mariam Kamkar, Peter Fritzson, Nahid Shahmehri
ICSM1
1993 Three approaches to interprocedural dynamic slicing
Mariam Kamkar, Peter Fritzson, Nahid Shahmehri
Microprocess. Microprogramming1
1991 Generalized Algorithmic Debugging and Testing
abstract
This paper presents a method for semi-automatic bug localization, generalized algorithmic debugging, which has been integrated with the category partition method for functional testing. In this way the efficiency of the algorithmic debugging method for bug localization can be improved by using test specifications and test results. The long-range goal of this work is a semi-automatic debugging and testing system which can be used during large-scale program development of nontrivial programs. The method is generally applicable to procedural languages and is not dependent on any ad hoc assumptions regarding the subject program. The original form of algorithmic debugging, introduced by Shapiro, was however limited to small Prolog programs without side-effects, but has later been generalized to concurrent logic programming languages. Another drawback of the original method is the large number of interactions with the user during bug localization. To our knowledge, this is the first method which uses category partition testing to improve the bug localization properties of algorithmic debugging. The method can avoid irrelevant questions to the programmer by categorizing input parameters and then match these against test cases in the test database. Additionally, we use program slicing, a data flow analysis technique, to
Peter Fritzson, Tibor Gyimóthy, Mariam Kamkar, Nahid Shahmehri
PLDI3
1990 Semi-automatic bug localization in software maintenance
abstract
An algorithmic program debugger for imperative languages is presented, with Pascal as an example case. This debugger extends the power of existing debuggers by providing an interactive debugging facility where errors can be localized semiautomatically. The debugger is activated on demand when the user discovers a symptom of an error as the result of some computation. This symptom presumably denotes a difference between the intended program behavior and the actual behavior. The proposed approach consists of three phases: program transformation, tracing, and debugging. The first phase transforms the source program into an internal representation which is appropriate, according to the Shapiro model, for algorithmic debugging. This phase produces an intermediate program which is free from side effects and loops. The program tracing phase generates trace information which builds an execution tree for the erroneous program. The debugging phase performs bug localization through a number of user interactions. This phase consists of pure algorithmic program debugging and program slicing.>
Nahid Shahmehri, Mariam Kamkar, Peter Fritzson
ICSM2