The Art of R Programming


Book Description

R is the world's most popular language for developing statistical software: Archaeologists use it to track the spread of ancient civilizations, drug companies use it to discover which medications are safe and effective, and actuaries use it to assess financial risks and keep economies running smoothly. The Art of R Programming takes you on a guided tour of software development with R, from basic types and data structures to advanced topics like closures, recursion, and anonymous functions. No statistical knowledge is required, and your programming skills can range from hobbyist to pro. Along the way, you'll learn about functional and object-oriented programming, running mathematical simulations, and rearranging complex data into simpler, more useful formats. You'll also learn to: –Create artful graphs to visualize complex data sets and functions –Write more efficient code using parallel R and vectorization –Interface R with C/C++ and Python for increased speed or functionality –Find new R packages for text analysis, image manipulation, and more –Squash annoying bugs with advanced debugging techniques Whether you're designing aircraft, forecasting the weather, or you just need to tame your data, The Art of R Programming is your guide to harnessing the power of statistical computing.




Scientific Programming and Computer Architecture


Book Description

A variety of programming models relevant to scientists explained, with an emphasis on how programming constructs map to parts of the computer. What makes computer programs fast or slow? To answer this question, we have to get behind the abstractions of programming languages and look at how a computer really works. This book examines and explains a variety of scientific programming models (programming models relevant to scientists) with an emphasis on how programming constructs map to different parts of the computer's architecture. Two themes emerge: program speed and program modularity. Throughout this book, the premise is to "get under the hood," and the discussion is tied to specific programs. The book digs into linkers, compilers, operating systems, and computer architecture to understand how the different parts of the computer interact with programs. It begins with a review of C/C++ and explanations of how libraries, linkers, and Makefiles work. Programming models covered include Pthreads, OpenMP, MPI, TCP/IP, and CUDA.The emphasis on how computers work leads the reader into computer architecture and occasionally into the operating system kernel. The operating system studied is Linux, the preferred platform for scientific computing. Linux is also open source, which allows users to peer into its inner workings. A brief appendix provides a useful table of machines used to time programs. The book's website (https://github.com/divakarvi/bk-spca) has all the programs described in the book as well as a link to the html text.




The Art of Computer Programming


Book Description

Donald Knuth is Professor Emeritus of the Art of Computer Programming at Stanford University, and is well-known worldwide as the creator of the Tex typesetting language. Here he presents the third volume of his guide to computer programming.




Abstracting Away the Machine


Book Description

At the dawn of the computer age, an elite development team at IBM built the most influential computer programming language in history: FORTRAN. Abstracting Away the Machine tells the epic story of how they did it--and what happened next. Over the past six decades, programming languages like ALGOL, BASIC, C/C++, COBOL, Java, LISP, LOGO, Pascal, PL/I, Python, Visual Basic, and many others opened up the field of computer science, and of computer programming in general, to the masses. But all of these high-level languages (HLLs)--computer languages that automate, hide, or otherwise abstract away the underlying operations of the machine--owe a huge debt of gratitude to FORTRAN (FORmula TRANslation), the first HLL to achieve widespread adoption. Many programming practices that we take for granted now came about as a result of FORTRAN. Created over a three-year period at IBM by a development team led by a brilliant but wayward mathematician named John W. Backus, FORTRAN was implemented initially on the IBM 704 mainframe computer in the mid-1950s, with dialects of the language quickly spreading thereafter to other platforms. FORTRAN's powerful compiler, which translated human-readable code into code a computer could understand, produced incredibly clean and optimized standalone executable programs, all of which could be run independently of the compiler, setting the standard for decades to come--and overcoming the doubts of many skeptics along the way, who thought the FORTRAN project would never succeed. In the 1960s the language was standardized, with machine-dependent commands excised, and many platform-independent implementations followed. With the language now portable, able to run on any computer (at least in theory), FORTRAN, almost by accident, secured a stranglehold in the fields of science and engineering. The language also came to dominate in the supercomputing industry. But FORTRAN, a blue-collar workhorse more concerned with results than with style, was a victim of its own success--the language sowed the seeds of its own demise. New high-level languages sprouted up, stealing the good bits from FORTRAN while simultaneously defining themselves in opposition to it. FORTRAN had become the foil. As these new languages pierced the cutting edge of the programming landscape, they redefined computing paradigms (e.g., with structured programming, object-oriented programming, and the like), and FORTRAN--though eventually (and repeatedly) modernized and formally renamed Fortran--struggled to keep up through multiple standardization efforts, finally ceding significant ground to its successors as it slowly withdrew from the spotlight. To add insult to injury, even John Backus eventually turned against his creation. This is not a book on how to program in FORTRAN, nor is it a technical manual. Rather, the focus in Abstracting Away the Machine, which chronicles the complete history and development of the FORTRAN programming language, is set squarely on telling three interlocking stories: (1) How an elite group of computing trailblazers built FORTRAN, (2) Why the conditions at the time were ripe for them to succeed, and (3) What happened after they did. Tracing the long arc of FORTRAN's development and maturation is integral to understanding not only the history of programming but also the state of computer science today. The birth of FORTRAN planted a seed that led to the full flowering of high-level languages, since FORTRAN overcame initial skepticism by demonstrating to the world that a well-made HLL really could abstract away the machine.




Coders at Work


Book Description

Peter Seibel interviews 15 of the most interesting computer programmers alive today in Coders at Work, offering a companion volume to Apress’s highly acclaimed best-seller Founders at Work by Jessica Livingston. As the words “at work” suggest, Peter Seibel focuses on how his interviewees tackle the day-to-day work of programming, while revealing much more, like how they became great programmers, how they recognize programming talent in others, and what kinds of problems they find most interesting. Hundreds of people have suggested names of programmers to interview on the Coders at Work web site: www.codersatwork.com. The complete list was 284 names. Having digested everyone’s feedback, we selected 15 folks who’ve been kind enough to agree to be interviewed: Frances Allen: Pioneer in optimizing compilers, first woman to win the Turing Award (2006) and first female IBM fellow Joe Armstrong: Inventor of Erlang Joshua Bloch: Author of the Java collections framework, now at Google Bernie Cosell: One of the main software guys behind the original ARPANET IMPs and a master debugger Douglas Crockford: JSON founder, JavaScript architect at Yahoo! L. Peter Deutsch: Author of Ghostscript, implementer of Smalltalk-80 at Xerox PARC and Lisp 1.5 on PDP-1 Brendan Eich: Inventor of JavaScript, CTO of the Mozilla Corporation Brad Fitzpatrick: Writer of LiveJournal, OpenID, memcached, and Perlbal Dan Ingalls: Smalltalk implementor and designer Simon Peyton Jones: Coinventor of Haskell and lead designer of Glasgow Haskell Compiler Donald Knuth: Author of The Art of Computer Programming and creator of TeX Peter Norvig: Director of Research at Google and author of the standard text on AI Guy Steele: Coinventor of Scheme and part of the Common Lisp Gang of Five, currently working on Fortress Ken Thompson: Inventor of UNIX Jamie Zawinski: Author of XEmacs and early Netscape/Mozilla hacker




A First Course in Scientific Computing


Book Description

This book offers a new approach to introductory scientific computing. It aims to make students comfortable using computers to do science, to provide them with the computational tools and knowledge they need throughout their college careers and into their professional careers, and to show how all the pieces can work together. Rubin Landau introduces the requisite mathematics and computer science in the course of realistic problems, from energy use to the building of skyscrapers to projectile motion with drag. He is attentive to how each discipline uses its own language to describe the same concepts and how computations are concrete instances of the abstract. Landau covers the basics of computation, numerical analysis, and programming from a computational science perspective. The first part of the printed book uses the problem-solving environment Maple as its context, with the same material covered on the accompanying CD as both Maple and Mathematica programs; the second part uses the compiled language Java, with equivalent materials in Fortran90 on the CD; and the final part presents an introduction to LaTeX replete with sample files. Providing the essentials of computing, with practical examples, A First Course in Scientific Computing adheres to the principle that science and engineering students learn computation best while sitting in front of a computer, book in hand, in trial-and-error mode. Not only is it an invaluable learning text and an essential reference for students of mathematics, engineering, physics, and other sciences, but it is also a consummate model for future textbooks in computational science and engineering courses. A broad spectrum of computing tools and examples that can be used throughout an academic career Practical computing aimed at solving realistic problems Both symbolic and numerical computations A multidisciplinary approach: science + math + computer science Maple and Java in the book itself; Mathematica, Fortran90, Maple and Java on the accompanying CD in an interactive workbook format




Introduction to Programming with Fortran


Book Description

A comprehensive introduction which will be essential to the complete beginner who wants to learn the fundamentals of programming using a modern, powerful and expressive language; as well as those wanting to update their programming skills by making the move from earlier versions of Fortran.







Guide to Fortran 2008 Programming


Book Description

This textbook provides an accessible introduction to the most important features of Fortran 2008. Features: presents a complete discussion of all the basic features needed to write complete Fortran programs; makes extensive use of examples and case studies to illustrate the practical use of features of Fortran 08, and supplies simple problems for the reader; provides a detailed exploration of control constructs, modules, procedures, arrays, character strings, data structures and derived types, pointer variables, and object-oriented programming; includes coverage of such major new features in Fortran 08 as coarrays, submodules, parameterized derived types, and derived-type input and output; highlights the topic of modules as the framework for organizing data and procedures for a Fortran program; investigates the excellent input/output facilities available in Fortran; contains appendices listing the many intrinsic procedures and providing a brief informal syntax specification for the language.




Zen of Assembly Language: Knowledge


Book Description

The most comprehensive treatment of advanced assembler programming ever published, this book presents a way of programming that involves intuitive, right-brain thinking. Also probes hardware aspects that affect code performance and compares programming techniques.




Recent Books