Concepts In Programming Languages John C. Mitchell

0 views
Skip to first unread message

Elwanda Menhennett

unread,
Aug 5, 2024, 4:21:27 AM8/5/24
to bundmalimeaf
JohnClifford Mitchell is professor of computer science and (by courtesy) electrical engineering at Stanford University. He has published in the area of programming language theory and computer security.[1][2][3][4][5][6]

John C. Mitchell was the Vice Provost for Teaching and Learning at Stanford University, the Mary and Gordon Crary Family Professor in Computer Science and Electrical Engineering at Stanford University, co-director of the Stanford Computer Security Lab, and Professor (by courtesy) of Education.[7][8] He is a member of the steering committee for Stanford University's Cyber Initiative. Mitchell has been Vice Provost at Stanford University since 2012, first as the inaugural Vice Provost for Online Learning and now in a broader role for Teaching and Learning. Under Mitchell's direction, the Office of the Vice Provost for Teaching and Learning (VPTL) is advancing teaching and learning through faculty-driven initiatives and research, transforming education in Stanford's classrooms and beyond.[promotion?]


Mitchell's first research project in online learning started in 2009 when he and six undergraduate students built Stanford CourseWare, an innovative platform that expanded to support interactive video and discussion. CourseWare served as the foundation for initial flipped classroom experiments at Stanford and helped inspire the first massive open online courses (MOOCs) from Stanford that captured worldwide attention in 2011.[promotion?]


To help build faculty experience and a catalogue of online material, Vice Provost Mitchell launched a faculty seed grant program in Summer 2012.[9] This program has helped faculty across campus transform their Stanford campus courses and release public courses to the world, generating informed discussion and debate among faculty in the process.[10][11][12][13]


In addition to supporting delivery of digital course content, the VPTL engineering team is working to expand the features of Lagunita, Stanford's instance of the open-source release of the edX platform. Mitchell and his team, in partnership with edX, announced the release of Open edX[14] in June 2013: an open-source hosting platform, providing a customizable alternative for all colleges and universities and supporting open educational research and innovation.[15][16]


Stanford's online courses are generating a wealth of course participant data.[promotion?] In collaboration with Stanford centers of scholarship such as the Lytics Lab,[17] which is jointly supervised by Mitchell, and Mitchell Stevens and Candace Thille of the Graduate School of Education, VPTL is playing a key role in evaluating educational outcomes and improving online learning based on data-driven research and iterative design.[promotion?]


Mitchell holds a B.S. from Stanford University and a M.S. and Ph.D. from the Massachusetts Institute of Technology (MIT). He has served on the editorial board of ten academic journals, acted as consultant and advisor to numerous companies[promotion?], and spent sabbaticals at the Newton Institute for Mathematical Science and Coverity, Inc. Mitchell is the author of two books, over 170 research papers, and is among the most-cited scholars in computer science.[18]


Mitchell's early computer science research focused on programming analysis and design, where he played a pivotal role in developing type theory as a foundation for programming languages, a view that is now dominant in the field. For the past 15 years, his research has focused on computer security, developing analysis methods and improving network protocol security, authorization and access control, web security, and privacy.


Mitchell has been at the forefront of Web and network security research and education for more than a decade and has helped train thousands of students in programming languages and hundreds of expert-level professionals in the area of cyber-security.[promotion?] His efforts have resulted in the development of concepts used in the popular Java programming language, improved the security of widely used wireless networking protocols, contributed to the security architecture of the Chrome browser and other components of the modern web.


In August 2012, Mitchell was appointed by Stanford President John L. Hennessy as the Vice Provost for Online Learning, a newly created position responsible for overseeing Stanford's online learning initiatives.


I took a look at the Turbak/Gifford book, but it's too long-winded; I thought Winskel would be fine, but I have no access to it (it's not in our University library, and I'm short on money), and I'm not even sure if it's not dated. Slonneger seems OK, but the practical part makes it somewhat too long, and I'm not very comfortable with his style.


It all depends how deep you want to go, and how much you already know. For a beginner Winksel's book is really nice, but yes, it's not introducing you to the state of the art in semantics as it was written about 20 years ago. Nevertheless it's still a good first introduction to the subject. It might also be worthwhile pointing out that T. Nipkow has formalised a substantial chunk of Winskel's book in Isabelle/HOL, see here. So if you want to learn using interactive proof assistants together with understanding the semantics of programming languages, you have a lot of coherent material to draw on.


Gunter, Semantics of Programming Languages, a more advanced book focussing on denotational semantics, an approach to semantics, which hasn't lived up to expectations. Focusses on purely functional lanugages and ignores concurrency. This is the book that I taught myself semantics from as an undergraduate, and in retrospect I wish I had used Winksel's book instead. Gunter is not an easy read for a beginner.


Books like Pierce's TAPL are very nice, but focus narrowly on one aspect of programming languages, namely types, as important as that is. I would not recommend it as a first introduction to the general area of programming languages, but it is mandatory to read for anyone who wants to learn about types.


Truth be told, I think there's currently no up-to-date introductory book on language semantics that reflects the substantial progress the last decade has seen, with its decisive shift away from denotational methods and sequential computation to concurrency (process calculi and game semantics), axiomatics semantics and the use of interactive proof assistants in verification.


which can be seen as 'Winskel in Isabelle/HOL'. It's an introduction to thesemantics of programming languages (primarily operational andaxiomatic) but unlike previous pen-and-paper-based approaches, thisbook expresses all its mathematics in Isabelle/HOL. In other words,it's at the same time a book about theorem proving.


I would divide the books on programming language semantics into two classes: those that focus on modelling programming language concepts and those that focus on the foundational aspects of semantics. There is no reason a book can't do both. But, usually, there is only so much you can put into a book, and the authors also have their own predispositions about what is important.


Winskel's book, already mentioned, does a bit of both the aspects. And, it is a good beginner's book. An equally good, perhaps even better, book is the one I started with: Gordon's Denotational description of programming languages. This was my first book on semantics, which I read soon after I finished my undergraduate work. I have to say it gave me a firm grounding in semantics and I never had to wonder how denotational semantics differs from operational semantics or axiomatic semantics etc. This book will remain my all-time favourite on denotational semantics.


Tennent's Semantics of programming languages, which is a more-or-less uptodate book on the semantics of imperative programming languages. It is easy to read. However, it tends to be abstract in later parts of the book and you might have to struggle to see why things are being done in a particular way.


Reynolds's Theories of programming languages. Anybody specializing in semantics should definitely read this book. It is after all by Reynolds. (David Schmidt once remarked to me, "even if Reynolds is reading out the morning newspaper to you, you want to listen carefully, because you might learn something important"!) It has good coverage of both the modelling aspects and foundational aspects.


The best books on foundational aspects are Gunter's (which I regard as a graduate text book), and Mitchell's (which is good reference book to have on your bookshelf because it is quite comprehensive).


I really enjoyed reading Winskel when I was taking the undergrad course on semantics. I can't tell if it's dated, though, since I don't do research in this field. A plus of Winskel is that you can find it translated in other languages than English.


For a further reading, more at a graduate level, I'd suggest John Mitchell's books Foundations for Programming Languages and Concepts in Programming Languages. If you read only the first chapters, I guess they also meet your requirement of conciseness.


First, there are some people who have already read the book and provided reviews on it. For instance, for the Winskel book The Formal Semantics of Programming Languages (see [1] and [2]) I found reviews on Amazon.


This book confuses between syntax and semantics since the beginning, like separating the literals from its values. No special notations were used to differentiate them. This is a crucial issue that the author should address in a topic like this. Also, some other notations he used is quite confusing, like showing the premises and conclusions.


The author seemed to assume that you have ALL the necessary prerequisites as he explained the background materials in a first few chapters (i.e. set theory, operational semantics, inductions, inductive definitions) very briefly. The style the author used in introduction is to put two or three paragraphs of texts and put some formulas then give exercises. Which is, for me, quite frustrating...

3a8082e126
Reply all
Reply to author
Forward
0 new messages