This preview shows pages 1–3. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: Why Undergraduates Should Learn the Principles of Programming Languages * ACM SIGPLAN Education Board Stephen N. Freund (Williams College), Kim Bruce, Chair (Pomona College), Kathi Fisler (WPI), Dan Grossman (University of Washington), Matthew Hertz (Canisius College), Gary T. Leavens (University of Central Florida), Andrew Myers (Cornell University), Larry Snyder (University of Washington) May 12, 2010 Abstract Undergraduate students obtain important knowledge and skills by studying the pragmatics of programming in multiple languages and the principles underlying programming language design and implementation. These topics strengthen stu- dents grasp of the power of computation, help students choose the most appro- priate programming model and language for a given problem, and improve their design skills. Understanding programming languages thus helps students in ways vital to many career paths and interests. This white paper is based on contributed articles, discussions, and presentations from the 2008 SIGPLAN Programming Language Curriculum Workshop [3, 4]. Programming languages are the medium through which we describe computations. More specifically, we use the model provided by a programming language to discuss concepts, formulate algorithms, and reason about problem solutions. Programming languages define models tailored to thinking about and solving problems in intended application areas. For example, the C language provides a model close to a computers underlying hardware, a spreadsheet language (such as Excel with Visual Basic for Ap- plications) provides a model of cells and constraints for solving financial problems, and so on. The languages used in practice change continuously, as advances in our field and the broadening uses of technology change how we model and express computation. The rise of the Internet and the web, for example, fundamentally transformed the way many types of systems are designed, implemented, and deployed. The rapid adoption of multicore and distributed platforms is again transforming how we program. * This material is based upon work supported by the National Science Foundation under Grant No. CCF- 0825525. Stephen Freund was also supported, in part, by Grant No. CCF-0644130. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not neces- sarily reflect the views of the National Science Foundation. 1 At its core, the study of programming languages examines the principles and limi- tations of computing (or programming) models, the effective design and use of systems or languages based on these models, and methods to compare their relative strengths and weaknesses in particular contexts. Undergraduate students benefit from studying this material in substantial ways, regardless of their future career paths and interests. It strengthens a students understanding of computation itself, its power and its limita- tions . Moreover, the knowledge and skills acquired enable students to criticallytions ....
View Full Document
This note was uploaded on 01/19/2012 for the course CS 54295 taught by Professor Walfish during the Spring '10 term at University of Texas at Austin.
- Spring '10