Peter-Michael Osera
University of Pennsylvania
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Peter-Michael Osera.
technical symposium on computer science education | 2002
Nick Parlante; Julie Zelenski; Peter-Michael Osera; Marty Stepp; Mark Sherriff; Luther A. Tychonievich; Ryan M. Layer; Suzanne J. Matthews; Allison Obourn; David Raymond; Josh Hug; Stuart Reges
Creating assignments is a difficult and time consuming part of teaching Computer Science. Nifty Assignments is a forum, operating at a very practical level, to promote the sharing of assignment ideas and assignment materials.Each presenter will introduce their assignment, give a quick demo, and describe its niche in the curriculum and its strengths and weaknesses. The presentations (and the descriptions below) merely introduce each assignment. For more detail, each assignment has its own web page with more detailed information and assignment materials such as handouts and data files to aid the adoption of the assignment. Information on participating in Nifty Assignments as well as all the assignment pages are available from our central page… http://cse.stanford.edu/nifty/
programming language design and implementation | 2015
Peter-Michael Osera; Steve Zdancewic
This paper presents an algorithm for synthesizing recursive functions that process algebraic datatypes. It is founded on proof-theoretic techniques that exploit both type information and input–output examples to prune the search space. The algorithm uses refinement trees, a data structure that succinctly represents constraints on the shape of generated code. We evaluate the algorithm by using a prototype implementation to synthesize more than 40 benchmarks and several non-trivial larger examples. Our results demonstrate that the approach meets or outperforms the state-of-the-art for this domain, in terms of synthesis time or attainable size of the generated programs.
technical symposium on computer science education | 2017
Jianting Chen; Medha Gopalaswamy; Prabir Pradhan; Sooji Son; Peter-Michael Osera
There is a natural correspondence between mathematical proofs and computer programs. For instance, a recursive function and its correctness relate directly to inductive proofs in mathematics. However, many undergraduate students feel a disconnect between mathematics and computer science. There are several proof assistant tools which have been used by the educational community to introduce such concepts to students, but since these tools are not primarily created for educational purposes, students often do not benefit from them to the expected extent. We have created an educational tool that draws from the benefits of existing provers and assistants and includes a novel proof language that mimics handwritten proofs. By creating a proof assistant with an intuitive user interface and a rich mechanism for providing constructive feedback, we hope to bridge the gap that many introductory computer science students find between mathematical proofs and program correctness.
technical symposium on computer science education | 2016
Mark C. Lewis; Douglas S. Blank; Kim B. Bruce; Peter-Michael Osera
Most courses of study in computer science begin with students learning to think algorithmically, and to express the solutions to problems using a programming language. The choice of which programming language is usually considered secondary to the choice of concepts, but the reality is that the vehicle we choose for teaching concepts shapes the way that students understand those concepts, and enables or inhibits the learning of certain concepts. Most departments use one of a small number of mainstream languages that are well-established in industry and are backed by teaching and learning resources. A minority of departments choose to work with non-mainstream languages, finding that the advantages of those languages outweigh the disadvantages. What issues should we consider when choosing a programming language for our introductory courses? A. Use in the “real world”. A department may be pressured to use a language that is prevalent in local industry, local feeder schools, or standardized tests. For example, local companies might like students to be prepared for internships by being taught in whatever language they use for production. Unfortunately, “real world” languages often come with complex features, that, while useful on large industrial projects, make them unsuitable for students, particularly beginning students, and have a tendency to become
technical symposium on computer science education | 2014
Peter-Michael Osera; Brent A. Yorgey
Induction is a notoriously difficult topic for beginning computer science students to understand. Even if they can produce an inductive proof of some mathematical fact, many students never see the relevance of inductive reasoning outside of the classroom for anything beyond the natural numbers. This is unfortunate because inductive reasoning is closely intertwined with algorithm design and one of the cornerstones of reasoning about (recursive) programs. With the adoption of functional programming into the CS curricula core, it is a good time to revisit how we teach induction and try to make more explicit this fundamental connection between inductive reasoning and recursive programming. In this BoF session, we will discuss curriculum, strategies, and fun examples for teaching induction with an eye towards giving induction tangible and practical relevance for the computer science undergraduate.
2017 IEEE Blocks and Beyond Workshop (B&B) | 2017
Peter-Michael Osera; David Wonnacott
While formal mathematical reasoning is the cornerstone of computer science, undergraduates often fail to appreciate the value of mathematical proof in their studies. To alleviate this problem, we propose a novel pedagogy uniting logical reasoning with proofs of program correctness along with a proof assistant, ORC2A, that helps students author proofs in this domain. One of the defining features of ORC2A is that it has a blocks-based surface language of proof to reduce friction when adopting the tool in the classroom. We report on the current progress on ORC2A, in particular, its blocks-based interface, current design consideration, and our plans for evaluating the system.
technical symposium on computer science education | 2016
Charles Garrod; Jeffrey M. Forbes; Colleen M. Lewis; Peter-Michael Osera
Institutions small and large often use student teaching assistants (TAs) to provide office hours, tutor students, and grade student work, and the quality of a courses TAs can greatly affect the quality of the course. In this BOF we will discuss the training we provide to prepare TAs for their course duties and the mentoring we provide to foster their role as future educators. Improving the effectiveness of TA training and mentoring can have an immediate impact on the quality of teaching, potentially improve retention and diversity in computer science, and have a long-term impact on all aspects of our field as our current students and TAs progress through their industry and academic careers. Our goal is to provide a forum for you to disseminate your TA mentoring practices and for you to hear the mentoring practices of others, with the goal to develop a collection of best practices for TA training and mentoring for computer science. This BOF is appropriate for professors or instructors of any computer science course or summer program that uses undergraduate or graduate student teaching assistants.
Proceedings of the 1st International Workshop on Type-Driven Development | 2016
Peter-Michael Osera
Type-directed programming is a powerful programming paradigm where rich types dictate the structure of the program, making design largely automatic. While mechanical, this paradigm still requires manual reasoning that is both tedious and error-prone. We propose using type-directed program synthesis techniques to build an interactive programming assistant for type-directed programming. This tool bridges the gaps between simple auto-completion engines and program synthesis, complementing the strengths of each.
symposium on principles of programming languages | 2016
Jonathan Frankle; Peter-Michael Osera; David Walker; Steve Zdancewic
programming languages meets program verification | 2012
Peter-Michael Osera; Vilhelm Sjöberg; Steve Zdancewic