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

John Clements

dblp:40/5848 · DBLP profile ↗
← Back
16ranked-venue papers
6as first author
2since 2021 · last 2022
0000-0003-3030-8076ORCID · verified

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

Software engineering, systems software and programming languages · 8 · 4 first-authorHuman-computer interaction and ubiquitous computing · 7 · 2 first-author · 2 since 2021Artificial intelligence and machine learning · 1 · 1 first-authorSecurity and privacy · 1Databases, data management, data science and information retrieval · 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
Programming languages and type systems · 73% Compilers and program optimization · 15% Program verification · 12%
Interdisciplinary, comprehensive, and emerging computing
1 paper
Computing education · 100%
Network and information security
1 paper
Systems and software security · 100%

Topics — the 9 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Computing education
programming education
0.212013
An evaluation of interactive test-driven labs with WebIDE in CS0 · ICSE 2013
Programming languages and type systems › language semantics
formal semantics
0.112012
Run your research: on the effectiveness of lightweight mechanization · POPL 2012
Computing education › programming education
introductory programming
0.012013
An evaluation of interactive test-driven labs with WebIDE in CS0 · ICSE 2013
Systems and software security › language-based security
stack inspection
0.012004
A tail-recursive machine with stack inspection · ACM Trans. Program. Lang. Syst. 2004
Programming languages and type systems › language implementation
abstract machines
0.012004
A tail-recursive machine with stack inspection · ACM Trans. Program. Lang. Syst. 2004
Compilers and program optimization › compiler optimization › control flow optimization
tail call optimization
0.012004
A tail-recursive machine with stack inspection · ACM Trans. Program. Lang. Syst. 2004
Programming languages and type systems
language-based security
0.012001
Termination in Language-based Systems · NDSS 2001
Program verification
termination analysis
0.012001
Termination in Language-based Systems · NDSS 2001
Programming languages and type systems
language semantics
0.012004
A tail-recursive machine with stack inspection · ACM Trans. Program. Lang. Syst. 2004

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

controlled experiment · 0.2automated evaluator · 0.2proof assistant · 0.1tail call optimization · 0.1abstract machine · 0.1type system · 0.0
YearPublicationVenuePosition
2022 Towards a Notional Machine for Runtime Stacks and Scope: When Stacks Don't Stack Up
abstract
Background and Context.
John Clements, Shriram Krishnamurthi
ICER (1)1
2021 Before You Write Code ... Putting Data and Ethics at the Center of Introductory Computing
abstract
Computing is a large and growing presence in society in 2020, and like many others, we see a strong demand from non-computing majors for "CS For All" courses. Unlike many others, we do not feel that putting traditional programming first is the best way to do this. Instead, we are rethinking the way we introduce computing to allow a broad audience to engage with this discipline.
Zach Rentz, John Clements, Zoë J. Wood, Aaron W. Keen
SIGCSE2
2018 Mixed Approaches to CS0: Exploring Topic and Pedagogy Variance after Six Years of CS0
abstract
Since 2010, the Cal Poly Computer Science Department has required computing majors to select from a variety of CS0 courses to start their academic year. The broad objective of the course is to attract and retain undergraduates that have no prior experience in CS by using authentic problems that demonstrate the relevance and highlight the role of computers in solving "real world" problems. The course is offered in a variety of thematic "flavors" that leverage a student's pre-existing interests (e.g. in music or art), but all share the common goals of introducing students to the basics of programming, teamwork, and college-level study. While there is overlap in overall goals, the courses vary drastically in topic matter (e.g. robotics, gaming, music, computational art, mobile apps, security) and in pedagogical approach (e.g. principles of design, project-based student driven learning, and traditional topic-based programming modules). The introduction of this CS0 course has increased students' commitment to their major and success in follow-on classes. We present these successes and show that student GPAs in a follow-on object oriented programming course do not vary significantly for the differing subtopics and teaching pedagogies employed in the various flavors. Our report includes examining two student subgroups (those experienced with programming and those new to programming). Our evaluations suggest that the existence and goal of the course matter more than the specific content, with all subtopics and pedagogical approaches performing well.
Zoë J. Wood, John Clements, Zachary N. J. Peterson, David S. Janzen, Hugh Smith, Michael Haungs, Julie Workman, John Bellardo, Bruce DeBruhl
SIGCSE2
2016 Dynamics of large scale networks following a merger
abstract
We studied the dynamic network of relationships among avatars in the massively multiplayer online game Planetside 2. In the spring of 2014, two separate servers of this game were merged, and as a result, two previously distinct networks were combined into one. We observed the evolution of this network in the seven month period following the merger. We found that some structures of original networks persist in the combined network for a long time after the merger. As the original avatars are gradually removed, these structures slowly dissolve, but they remain observable for a surprisingly long time. We present a number of visualizations illustrating the post-merger dynamics and discuss time evolution of selected quantities characterizing the topology of the network.
John Clements, Babak Farzad, Henryk Fuks
ASONAM1
2013 An evaluation of interactive test-driven labs with WebIDE in CS0
abstract
WebIDE is a framework that enables instructors to develop and deliver online lab content with interactive feedback. The ability to create lock-step labs enables the instructor to guide students through learning experiences, demonstrating mastery as they proceed. Feedback is provided through automated evaluators that vary from simple regular expression evaluation to syntactic parsers to applications that compile and run programs and unit tests. This paper describes WebIDE and its use in a CS0 course that taught introductory Java and Android programming using a test-driven learning approach. We report results from a controlled experiment that compared the use of dynamic WebIDE labs with more traditional static programming labs. Despite weaker performance on pre-study assessments, students who used WebIDE performed two to twelve percent better on all assessments than the students who used traditional labs. In addition, WebIDE students were consistently more positive about their experience in CS0.
David S. Janzen, John Clements, Michael Hilton 0001
ICSE2
2012 Run your research: on the effectiveness of lightweight mechanization
abstract
Formal models serve in many roles in the programming language community. In its primary role, a model communicates the idea of a language design; the architecture of a language tool; or the essence of a program analysis. No matter which role it plays, however, a faulty model doesn't serve its purpose.
Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, Robert Bruce Findler
POPL2
2012 Improving first-year success and retention through interest-based CS0 courses
abstract
Many computer science programs suffer from low student retention rates. At Cal Poly San Luis Obispo, academic performance and retention rates among first-year computer science students are among the lowest on campus.
Michael Haungs, John Clements, David S. Janzen
SIGCSE3
2011 Supporting introductory test-driven labs with WebIDE
abstract
WebIDE is a new web-based development environment for entry-level programmers with two primary goals: minimize tool barriers to writing computer programs and introduce software engineering best practices early in a student's educational career. Currently, WebIDE focuses on Test-Driven Learning (TDL) by using small iterative examples and introducing lock-step labs, which prevent the student from moving forward until they finish the current step. However, WebIDE does not require that labs follow TDL. Instructors can write their own labs for WebIDE using any software engineering or pedagogical approach. Likewise, instructors can build custom evaluators - written in any language - to support their approach and provide detailed error messages to students. We report on a pilot study in a CS0 course where students were split into two groups, one that used WebIDE and one that didn't. The WebIDE group showed a significant improvement in performance when writing a simple Android application. Additionally, among students with some programming experience, the WebIDE group was more proficient in writing unit tests.
Thomas Dvornik, David S. Janzen, John Clements, Olga Dekhtyar
CSEE&T3
2010 "Little language" project modules
abstract
Abstract Many computer science departments are debating the role of programming languages in the curriculum. These discussions often question the relevance and appeal of programming-languages content for today's students. In our experience, domain-specific, “little languages” projects provide a compelling illustration of the importance of programming-language concepts. This paper describes projects that prototype mainstream applications such as PowerPoint, TurboTax, and animation scripting. We have used these exercises as modules in non-programming languages courses, including courses for first year students. Such modules both encourage students to study linguistic topics in more depth and provide linguistic perspective to students who might not otherwise be exposed to the area.
John Clements, Kathi Fisler
J. Funct. Program.1
2009 Implications of integrating test-driven development into CS1/CS2 curricula
abstract
Many academic and industry professionals have called for more testing in computer science curricula. Test-driven development (TDD) has been proposed as a solution to improve testing in academia. This paper demonstrates how TDD can be integrated into existing course materials without reducing topic coverage. Two controlled experiments were conducted in a CS1/CS2 course in Winter 2008. Following a test-driven learning approach, unit testing was introduced at the beginning of the course and reinforced through example. Results indicate that while student work loads may increase with the incorporation of TDD, students are able to successfully develop unit tests while learning to program.
Chetan Desai, David S. Janzen, John Clements
SIGCSE3
2005 Continuations from generalized stack inspection
abstract
Implementing first-class continuations can pose a challenge if the target machine makes no provisions for accessing and re-installing the run-time stack. In this paper, we present a novel translation that overcomes this problem. In the first half of the paper, we introduce a theoretical model that shows how to eliminate the capture and the use of first-class continuations in the presence of a generalized stack inspection mechanism. The second half of the paper explains how to translate this model into practice in two different contexts. First, we reformulate the servlet interaction language in the PLT Web server, which heavily relies on first-class continuations. Using our technique, servlet programs can be run directly under the control of non-cooperative web servers such as Apache. Second, we show how to use our new technique to copy and reconstitute the stack on MSIL.Net using exception handlers. This establishes that Scheme's first-class continuations can exist on non-cooperative virtual machines.
Greg Pettyjohn, John Clements, Joe Marshall, Shriram Krishnamurthi, Matthias Felleisen
ICFP2
2004 A tail-recursive machine with stack inspection
abstract
Security folklore holds that a security mechanism based on stack inspection is incompatible with a global tail call optimization policy; that an implementation of such a language must allocate memory for a source-code tail call, and a program that uses only tail calls (and no other memory-allocating construct) may nevertheless exhaust the available memory. In this article, we prove this widely held belief wrong. We exhibit an abstract machine for a language with security stack inspection whose space consumption function is equivalent to that of the canonical tail call optimizing abstract machine. Our machine is surprisingly simple and suggests that tail calls are as easy to implement in a security setting as they are in a conventional one.
John Clements, Matthias Felleisen
ACM Trans. Program. Lang. Syst.1
2003 A Tail-Recursive Semantics for Stack Inspections
John Clements, Matthias Felleisen
ESOP1
2002 DrScheme: a programming environment for Scheme
abstract
DrScheme is a programming environment for Scheme. It fully integrates a graphics-enriched editor, a parser for multiple variants of Scheme, a functional read-eval-print loop, and an algebraic printer. The environment is especially useful for students, because it has a tower of syntactically restricted variants of Scheme that are designed to catch typical student mistakes and explain them in terms the students understand. The environment is also useful for professional programmers, due to its sophisticated programming tools, such as the static debugger, and its advanced language features, such as units and mixins. Beyond the ordinary programming environment tools, DrScheme provides an algebraic stepper, a context-sensitive syntax checker, and a static debugger. The stepper reduces Scheme programs to values, according to the reduction semantics of Scheme. It is useful for explaining the semantics of linguistic facilities and for studying the behavior of small programs. The syntax checker annotates programs with font and color changes based on the syntactic structure of the program. On demand, it draws arrows that point from bound to binding occurrences of identifiers. It also supports α-renaming. Finally, the static debugger provides a type inference system that explains specific inferences in terms of a value-flow graph, selectively overlaid on the program text.
Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, Matthias Felleisen
J. Funct. Program.2
2001 Modeling an Algebraic Stepper
John Clements, Matthew Flatt, Matthias Felleisen
ESOP1
2001 Termination in Language-based Systems
Algis Rudys, John Clements, Dan S. Wallach
NDSS2