In this textbook, leading researchers give tutorial expositions on the current state of the art of functional programming. The text is suitable for an undergraduate course immediately following an introduction to functional programming, and also for self-study. All new concepts are illustrated by plentiful examples, as well as exercises. A website gives access to accompanying software.
Unlock the secrets to creating random mazes! Whether you're a game developer, an algorithm connoisseur, or simply in search of a new puzzle, you're about to level up. Learn algorithms to randomly generate mazes in a variety of shapes, sizes, and dimensions. Bend them into Moebius strips, fold them into cubes, and wrap them around spheres. Stretch them into other dimensions, squeeze them into arbitrary outlines, and tile them in a dizzying variety of ways. From twelve little algorithms, you'll discover a vast reservoir of ideas and inspiration. From video games to movies, mazes are ubiquitous. Explore a dozen algorithms for generating these puzzles randomly, from Binary Tree to Eller's, each copiously illustrated and accompanied by working implementations in Ruby. You'll learn their pros and cons, and how to choose the right one for the job. You'll start by learning six maze algorithms and transition from making mazes on paper to writing programs that generate and draw them. You'll be introduced to Dijkstra's algorithm and see how it can help solve, analyze, and visualize mazes. Part 2 shows you how to constrain your mazes to different shapes and outlines, such as text, circles, hex and triangle grids, and more. You'll learn techniques for culling dead-ends, and for making your passages weave over and under each other. Part 3 looks at six more algorithms, taking it all to the next level. You'll learn how to build your mazes in multiple dimensions, and even on curved surfaces. Through it all, you'll discover yourself brimming with ideas, the best medicine for programmer's block, burn-out, and the grayest of days. By the time you're done, you'll be energized and full of maze-related possibilities! What You Need: The example code requires version 2 of the Ruby programming language. Some examples depend on the ChunkyPNG library to generate PNG images, and one chapter uses POV-Ray version 3.7 to render 3D graphics.
An introduction to the Racket functional programming language and DrRacket development environment to explore topics in mathematics (mostly recreational) and computer science. At last, a lively guided tour through all the features, functions, and applications of the Racket programming language. You'll learn a variety of coding paradigms, including iterative, object oriented, and logic programming; create interactive graphics, draw diagrams, and solve puzzles as you explore Racket through fun computer science topics--from statistical analysis to search algorithms, the Turing machine, and more. Early chapters cover basic Racket concepts like data types, syntax, variables, strings, and formatted output. You'll learn how to perform math in Racket's rich numerical environment, and use programming constructs in different problem domains (like coding solutions to the Tower of Hanoi puzzle). Later, you'll play with plotting, grapple with graphics, and visualize data. Then, you'll escape the confines of the command line to produce animations, interactive games, and a card trick program that'll dazzle your friends. You'll learn how to: Use DrRacket, an interactive development environment (IDE) for writing programs Compute classical math problems, like the Fibonacci sequence Generate two-dimensional function plots and create drawings using graphics primitives Import and export data to and from Racket using ports, then visually analyze it Build simple computing devices (pushdown automaton, Turing machine, and so on) that perform tasks Leverage Racket's built-in libraries to develop a command line algebraic calculator Racket Programming the Fun Way is just like the language itself--an embodiment of everything that makes programming interesting and worthwhile, and that makes you a better programmer.
Boxed kit teaches children how to understand and guide coding activities. Including, how to design and code characters, backgrounds scenes, and animations. Turn their ideas into animated stories, complete with dialogue and sound effects using the coding app! Includes 4 books and a downloadable coding app: 1 book is a parental guide instructing parents how to interact with their children in assisting them with the instructions (64 pages). 3 books for kids: 2 books show them how to design and code characters (64 pages each). 1 book of character and design grids (32 pages). Coding app allows kids design and code animated stories: No limit on the number they can save and play back. For iPhone or Android.
What will be the next revolution in software technology to follow XML and generics? Whatever it may be, it is likely to come from functional programming, where many of the key ideas of the last decade originated. In this textbook, the leading researchers of the field take you on a tour of the current hot topics in functional programming, with applications ranging from financial contracts to circuit design. There are also chapters on new idioms for structuring programs, such as monads and arrows. All new concepts are illustrated with many examples, and exercises appear throughout to further enliven the material. Several of the chapters describe a substantial piece of software, and most of these programs are collected on a website for free downloading. This book was edited in honour of Richard S.Bird, Professor of Computer Science at the University of Oxford, on his 60th birthday.
Introduces the C programming language, covering such topics as language fundamentals, variables, data types, arithmetic expressions, program looping, functions, and arrays, with complete C programs to illustrate each new concept discussed.
Maintaining a balance between a theoretical and practical approach to this important subject, Elements of Compiler Design serves as an introduction to compiler writing for undergraduate students. From a theoretical viewpoint, it introduces rudimental models, such as automata and grammars, that underlie compilation and its essential phases. Based on these models, the author details the concepts, methods, and techniques employed in compiler design in a clear and easy-to-follow way. From a practical point of view, the book describes how compilation techniques are implemented. In fact, throughout the text, a case study illustrates the design of a new programming language and the construction of its compiler. While discussing various compilation techniques, the author demonstrates their implementation through this case study. In addition, the book presents many detailed examples and computer programs to emphasize the applications of the compiler algorithms. After studying this self-contained textbook, students should understand the compilation process, be able to write a simple real compiler, and easily follow advanced books on the subject.