Recursion Via Pascal


Book Description

This book is devoted to recursion in programming, the technique by which the solution to a problem is expressed partly in terms of the solution to a simpler version of the same problem. Ultimately the solution to the simplest version must be given explicitly. In functional programming, recursion has received its full due since it is quite often the only repetitive construct. However, the programming language used here is Pascal and the examples have been chosen accordingly. It makes an interesting contrast with the use of recursion in functional and logic programming. The early chapters consider simple linear recursion using examples such as finding the highest common factor of a pair of numbers, and processing linked lists. Subsequent chapters move up through binary recursion, with examples which include the Towers of Hanoi problem and symbolic differentiation, to general recursion. The book contains well over 100 examples.




Programming Via Pascal


Book Description




Introduction to Recursive Programming


Book Description

Recursion is one of the most fundamental concepts in computer science and a key programming technique that allows computations to be carried out repeatedly. Despite the importance of recursion for algorithm design, most programming books do not cover the topic in detail, despite the fact that numerous computer programming professors and researchers in the field of computer science education agree that recursion is difficult for novice students. Introduction to Recursive Programming provides a detailed and comprehensive introduction to recursion. This text will serve as a useful guide for anyone who wants to learn how to think and program recursively, by analyzing a wide variety of computational problems of diverse difficulty. It contains specific chapters on the most common types of recursion (linear, tail, and multiple), as well as on algorithm design paradigms in which recursion is prevalent (divide and conquer, and backtracking). Therefore, it can be used in introductory programming courses, and in more advanced classes on algorithm design. The book also covers lower-level topics related to iteration and program execution, and includes a rich chapter on the theoretical analysis of the computational cost of recursive programs, offering readers the possibility to learn some basic mathematics along the way. It also incorporates several elements aimed at helping students master the material. First, it contains a larger collection of simple problems in order to provide a solid foundation of the core concepts, before diving into more complex material. In addition, one of the book's main assets is the use of a step-by-step methodology, together with specially designed diagrams, for guiding and illustrating the process of developing recursive algorithms. Furthermore, the book covers combinatorial problems and mutual recursion. These topics can broaden students' understanding of recursion by forcing them to apply the learned concepts differently, or in a more sophisticated manner. The code examples have been written in Python 3, but should be straightforward to understand for students with experience in other programming languages. Finally, worked out solutions to over 120 end-of-chapter exercises are available for instructors.







Combinatorics


Book Description

Combinatorics, Second Edition is a well-rounded, general introduction to the subjects of enumerative, bijective, and algebraic combinatorics. The textbook emphasizes bijective proofs, which provide elegant solutions to counting problems by setting up one-to-one correspondences between two sets of combinatorial objects. The author has written the textbook to be accessible to readers without any prior background in abstract algebra or combinatorics. Part I of the second edition develops an array of mathematical tools to solve counting problems: basic counting rules, recursions, inclusion-exclusion techniques, generating functions, bijective proofs, and linear algebraic methods. These tools are used to analyze combinatorial structures such as words, permutations, subsets, functions, graphs, trees, lattice paths, and much more. Part II cover topics in algebraic combinatorics including group actions, permutation statistics, symmetric functions, and tableau combinatorics. This edition provides greater coverage of the use of ordinary and exponential generating functions as a problem-solving tool. Along with two new chapters, several new sections, and improved exposition throughout, the textbook is brimming with many examples and exercises of various levels of difficulty.




Practical Computing


Book Description




Categories and Computer Science


Book Description

Category theory has become increasingly important and popular in computer science, and many universities now have introductions to category theory as part of their courses for undergraduate computer scientists. The author is a respected category theorist and has based this textbook on a course given over the last few years at the University of Sydney. The theory is developed in a straightforward way, and is enriched with many examples from computer science. Thus this book meets the needs of undergradute computer scientists, and yet retains a level of mathematical correctness that will broaden its appeal to include students of mathematics new to category theory.




Modelling of Computer and Communication Systems


Book Description

This 1987 book is a self-contained text on the probabilistic modelling method. It provides the reader with an understanding of the available results as well as with examples of their application. The only background assumed is a knowledge of basic calculus. The necessary fundamentals of probability are presented followed by an introduction to stochastic processes. The remainder of the book is devoted to the treatment of various single-station and their application to uni-programmed and multi-programmed systems and local and wide-area networks. Both exact and approximate solution methods are discussed, with as much emphasis on explaining the ideas and providing information, as on derivations and proofs. This book will still be of use for anyone with an interest in the history of computer science.




Program Construction


Book Description

This text promotes the disciplined construction of procedural programs from formal specifications. As such it can used in conjunction with any of the more conventional programming text which teach a mixture of "coding" in a specific language and ad hoc algorithm design.




The Principles of Computer Networking


Book Description

This 1989 book provides an introduction to the immensely important area of computer networking.