A type system is a syntactic method for enforcing levels of abstraction in programs. The study of type systems--and of programming languages from a type-theoretic perspective--has important applications in software engineering, language design, high-performance compilers, and security.This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material. The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators.
The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming. In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including "Readers-writers," "Producer-consumer", and "Dining Philosophers." In addition, it collects a number of not-so-classical problems
emir burak scala.xml (draft book, updated for Scala 2.6.1) I. Semistructured Syntax and Data 1. Introduction XML, Types and Objects 2. The scala.xml API Nodes and Attributes Elements and Text Embedded expressions Other nodes Matching XML Updates and Queries Names and Namespaces Sharing namespace nodes 3. XPath projection 4. XSLT style transformations 5. XQuery style querying 6. Loading and Saving XML The native Scala parser Pull parsing (experimental) II. Library 7. Overview 8. scala.xml runtime classes 9. Scala's XML syntax, formally 10. Interpretation of XML expressions and patterns