The Sciences of the Artificial
Herbert A. Simon - 1969
There are updates throughout the book as well. These take into account important advances in cognitive psychology and the science of design while confirming and extending the book's basic thesis: that a physical symbol system has the necessary and sufficient means for intelligent action. The chapter "Economic Reality" has also been revised to reflect a change in emphasis in Simon's thinking about the respective roles of organizations and markets in economic systems."People sometimes ask me what they should read to find out about artificial intelligence. Herbert Simon's book The Sciences of the Artificial is always on the list I give them. Every page issues a challenge to conventional thinking, and the layman who digests it well will certainly understand what the field of artificial intelligence hopes to accomplish. I recommend it in the same spirit that I recommend Freud to people who ask about psychoanalysis, or Piaget to those who ask about child psychology: If you want to learn about a subject, start by reading its founding fathers." -- George A. Miller
Programming in Lua
Roberto Ierusalimschy - 2001
Currently, Lua is being used in areas ranging from embedded systems to Web development and is widely spread in the game industry, where knowledge of Lua is an indisputable asset. "Programming in Lua" is the official book about the language, giving a solid base for any programmer who wants to use Lua. Authored by Roberto Ierusalimschy, the chief architect of the language, it covers all aspects of Lua 5---from the basics to its API with C---explaining how to make good use of its features and giving numerous code examples. "Programming in Lua" is targeted at people with some programming background, but does not assume any prior knowledge about Lua or other scripting languages. This Second Edition updates the text to Lua 5.1 and brings substantial new material, including numerous new examples, a detailed explanation of the new module system, and two new chapters centered on multiple states and garbage collection.
Using Information Technology
Brian K. Williams - 1990
This text is user-focused and has been highly updated including topics, pictures and examples. The Williams text contains less theory and more application to engage students who might be more familiar with technology. Continually published and updated for over 15 years, Using Information Technology was the first text to foresee and define the impact of digital convergence--the fusion of computers and communications. It was also the first text to acknowledge the new priorities imposed by the Internet and World Wide Web and bring discussion of them from late in the course to the beginning. Today, it is directed toward the "Always On" generation that is at ease with digital technology--comfortable with iPhones, MySpace, Facebook, Twitter, Wikipedia, and the blogosphere--but not always savvy about its processes, possibilities, and liabilities. This 8th edition continues to address the two most significant challenges that instructors face in teaching this course: -Trying to make the course interesting and challenging, and -Trying to teach to students with a variety of computer backgrounds. In addition, this text correlates with Simnet Online for full integration of resources within the Computing Concepts course.
Access 2007: The Missing Manual
Matthew MacDonald - 2006
It runs on PCs rather than servers and is ideal for small- to mid-sized businesses and households. But Access is still intimidating to learn. It doesn't help that each new version crammed in yet another set of features; so many, in fact, that even the pros don't know where to find them all. Access 2007 breaks this pattern with some of the most dramatic changes users have seen since Office 95. Most obvious is the thoroughly redesigned user interface, with its tabbed toolbar (or "Ribbon") that makes features easy to locate and use. The features list also includes several long-awaited changes. One thing that hasn't improved is Microsoft's documentation. To learn the ins and outs of all the features in Access 2007, Microsoft merely offers online help.Access 2007: The Missing Manual was written from the ground up for this redesigned application. You will learn how to design complete databases, maintain them, search for valuable nuggets of information, and build attractive forms for quick-and-easy data entry. You'll even delve into the black art of Access programming (including macros and Visual Basic), and pick up valuable tricks and techniques to automate common tasks -- even if you've never touched a line of code before. You will also learn all about the new prebuilt databases you can customize to fit your needs, and how the new complex data feature will simplify your life. With plenty of downloadable examples, this objective and witty book will turn an Access neophyte into a true master.
Sams Teach Yourself C++ in One Hour a Day
Siddhartha Rao - 2008
Master the fundamentals of C++ and object-oriented programming Understand how C++11 features help you write compact and efficient code using concepts such as lambda expressions, move constructors, and assignment operators Learn the Standard Template Library, including containers and algorithms used in most real-world C++ applications Test your knowledge and expertise using exercises at the end of every lesson Learn on your own time, at your own pace: No previous programming experience required Learn C++11, object-oriented programming, and analysis Write fast and powerful C++ programs, compile the source code with a gcc compiler, and create executable files Use the Standard Template Library's (STL) algorithms and containers to write feature-rich yet stable C++ applications Develop sophisticated programming techniques using lambda expressions, smart pointers, and move constructors Learn to expand your program's power with inheritance and polymorphism Master the features of C++ by learning from programming experts Learn C++11 features that allow you to program compact and high-performance C++ applications TABLE OF CONTENTSPART I: THE BASICS LESSON 1: Getting Started with C++11 LESSON 2: The Anatomy of a C++ Program LESSON 3: Using Variables, Declaring Constants LESSON 4: Managing Arrays and Strings LESSON 5: Working with Expressions, Statements, and Operators LESSON 6: Controlling Program Flow LESSON 7: Organizing Code with Functions LESSON 8: Pointers and References Explained PART II: FUNDAMENTALS OF OBJECT-ORIENTED C++ PROGRAMMING LESSON 9: Classes and Objects LESSON 10: Implementing Inheritance LESSON 11: Polymorphism LESSON 12: Operator Types and Operator Overloading LESSON 13: Casting Operators LESSON 14: An Introduction to Macros and Templates PART III: LEARNING THE STANDARD TEMPLATE LIBRARY (STL) LESSON 15: An Introduction to the Standard Template LibraryLESSON 16: The STL String ClassLESSON 17: STL Dynamic Array ClassesLESSON 18: STL list and forward_listLESSON 19: STL Set ClassesLESSON 20: STL Map ClassesPART IV: MORE STL LESSON 21: Understanding Function ObjectsLESSON 22: C++11 Lambda ExpressionsLESSON 23: STL AlgorithmsLESSON 24: Adaptive Containers: Stack and QueueLESSON 25: Working with Bit Flags Using STLPART V: ADVANCED C++ CONCEPTS LESSON 26: Understanding Smart PointersLESSON 27: Using Streams for Input and OutputLESSON 28: Exception HandlingLESSON 29: Going Forward APPENDIXES A: Working with Numbers: Binary and Hexadecimal B: C++ Keywords C: Operator Precedence D: Answers E: ASCII Codes
Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement
Eric Redmond - 2012
As a modern application developer you need to understand the emerging field of data management, both RDBMS and NoSQL. Seven Databases in Seven Weeks takes you on a tour of some of the hottest open source databases today. In the tradition of Bruce A. Tate's Seven Languages in Seven Weeks, this book goes beyond your basic tutorial to explore the essential concepts at the core each technology. Redis, Neo4J, CouchDB, MongoDB, HBase, Riak and Postgres. With each database, you'll tackle a real-world data problem that highlights the concepts and features that make it shine. You'll explore the five data models employed by these databases-relational, key/value, columnar, document and graph-and which kinds of problems are best suited to each. You'll learn how MongoDB and CouchDB are strikingly different, and discover the Dynamo heritage at the heart of Riak. Make your applications faster with Redis and more connected with Neo4J. Use MapReduce to solve Big Data problems. Build clusters of servers using scalable services like Amazon's Elastic Compute Cloud (EC2). Discover the CAP theorem and its implications for your distributed data. Understand the tradeoffs between consistency and availability, and when you can use them to your advantage. Use multiple databases in concert to create a platform that's more than the sum of its parts, or find one that meets all your needs at once.Seven Databases in Seven Weeks will take you on a deep dive into each of the databases, their strengths and weaknesses, and how to choose the ones that fit your needs.What You Need: To get the most of of this book you'll have to follow along, and that means you'll need a *nix shell (Mac OSX or Linux preferred, Windows users will need Cygwin), and Java 6 (or greater) and Ruby 1.8.7 (or greater). Each chapter will list the downloads required for that database.
Real World Haskell: Code You Can Believe In
Bryan O'Sullivan - 2008
You'll learn how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications. Real World Haskell takes you through the basics of functional programming at a brisk pace, and then helps you increase your understanding of Haskell in real-world issues like I/O, performance, dealing with data, concurrency, and more as you move through each chapter. With this book, you will:Understand the differences between procedural and functional programming Learn the features of Haskell, and how to use it to develop useful programs Interact with filesystems, databases, and network services Write solid code with automated tests, code coverage, and error handling Harness the power of multicore systems via concurrent and parallel programming You'll find plenty of hands-on exercises, along with examples of real Haskell programs that you can modify, compile, and run. Whether or not you've used a functional language before, if you want to understand why Haskell is coming into its own as a practical language in so many major organizations, Real World Haskell is the best place to start.
Making Things Talk: Practical Methods for Connecting Physical Objects
Tom Igoe - 2007
But when devices that you've built start to talk to each other, things really start to get interesting. Through a series of simple projects, you'll learn how to get your creations to communicate with one another by forming networks of smart devices that carry on conversations with you and your environment. Whether you need to plug some sensors in your home to the Internet or create a device that can interact wirelessly with other creations, Making Things Talk explains exactly what you need. This book is perfect for people with little technical training but a lot of interest. Maybe you're a science teacher who wants to show students how to monitor weather conditions at several locations at once, or a sculptor who wants to stage a room of choreographed mechanical sculptures. Making Things Talk demonstrates that once you figure out how objects communicate -- whether they're microcontroller-powered devices, email programs, or networked databases -- you can get them to interact. Each chapter in contains instructions on how to build working projects that help you do just that. You will:Make your pet's bed send you email Make your own seesaw game controller that communicates over the Internet Learn how to use ZigBee and Bluetooth radios to transmit sensor data wirelessly Set up communication between microcontrollers, personal computers, and web servers using three easy-to-program, open source environments: Arduino/Wiring, Processing, and PHP. Write programs to send data across the Internet based on physical activity in your home, office, or backyard And much more With a little electronics know-how, basic (not necessarily in BASIC) programming skills, a couple of inexpensive microcontroller kits and some network modules to make them communicate using Ethernet, ZigBee, and Bluetooth, you can get started on these projects right away. With Making Things Talk, the possibilities are practically endless.
Disruptive Possibilities: How Big Data Changes Everything
Jeffrey Needham - 2013
As author Jeffrey Needham points out in this eye-opening book, big data can provide unprecedented insight into user habits, giving enterprises a huge market advantage. It will also inspire organizations to change the way they function."Disruptive Possibilities: How Big Data Changes Everything" takes you on a journey of discovery into the emerging world of big data, from its relatively simple technology to the ways it differs from cloud computing. But the big story of big data is the disruption of enterprise status quo, especially vendor-driven technology silos and budget-driven departmental silos. In the highly collaborative environment needed to make big data work, silos simply don't fit.Internet-scale computing offers incredible opportunity and a tremendous challenge--and it will soon become standard operating procedure in the enterprise. This book shows you what to expect.
Cisco CCNA in 60 Days
Paul W. Browning - 2012
Every year, tens of thousands of people embark towards taking the exam via private study, Cisco Academy courses, or online training. The sad truth is most students quit along the way, and for those few who actually do attempt it, only 50% pass. All that time, effort, and money wasted! If there are so many manuals, CBT courses, lab simulators, exam engines, and study resources out there, then what goes wrong? This is the question Cisco trainer Paul Browning wanted to get to the bottom of. After interviewing thousands of students, he discovered that most people quit because they are simply overwhelmed with the sheer volume of material they need to digest and, of course, the large number of hands-on skills they need to be able to demonstrate in the exam. Add to that the day-to-day stresses of commuting to work, bringing up a family, and the distraction of everyday problems and challenges; it's no wonder people quit. This is where Cisco CCNA in 60 Days can help. Devised by two industry experts and countless Cisco students just like you, the 60-day programme breaks down every exam requirement into a daily study task. All you need to do is open the book at the relevant day (from 1 to 60), read the theory, and complete the lab. Every lesson is reviewed several times in the form of exam questions, review sessions, a handy exam cram guide, and, of course, hands-on labs for you to follow. You can choose to take the CCENT after the first 30 days and the ICND2 after the next 30 days, or you can take the CCNA after 60 days of study. Here is what is included in your study guide: 60 daily study tasks Full explanations of theory Real-world tips and advice Over 47 hands-on labs, plus 15 bonus CCENT and ICND2 labs CCENT and ICND2 cram guides Bonus VLSM guide Motivational goal-setting guide Downloadable videos Author Paul Browning is a former police officer who used his CCNA qualification to help him make a career change to IT. He worked for Cisco in the UK for a while, and then went on to start his own Cisco training company, which he ran for 8 years before moving into online Cisco training. He is the author of several Cisco study guides. He has also created the online Cisco certification training sites, including www.howtonetwork.net and www.in60days.net. Technical author Farai Tafa used to work in a shoe shop but decided he wanted more out of life, so he began to study for his Cisco exams. He is now a dual CCIE and one of the leading Cisco consultants in the US. He currently designs, installs, and troubleshoots networks for large companies.
Digital Evidence and Computer Crime: Forensic Science, Computers and the Internet
Eoghan Casey - 1999
Though an increasing number of criminals are using computers and computer networks, few investigators are well-versed in the evidentiary, technical, and legal issues related to digital evidence. As a result, digital evidence is often overlooked, collected incorrectly, and analyzed ineffectively. The aim of this hands-on resource is to educate students and professionals in the law enforcement, forensic science, computer security, and legal communities about digital evidence and computer crime. This work explains how computers and networks function, how they can be involved in crimes, and how they can be used as a source of evidence. As well as gaining a practical understanding of how computers and networks function and how they can be used as evidence of a crime, readers will learn about relevant legal issues and will be introduced to deductive criminal profiling, a systematic approach to focusing an investigation and understanding criminal motivations. Readers will receive access to the author's accompanying Web site which contains simulated cases that integrate many of the topics covered in the text. Frequently updated, these cases teaching individuals about: • Components of computer networks • Use of computer networks in an investigation • Abuse of computer networks • Privacy and security issues on computer networks • The law as it applies to computer networks• Provides a thorough explanation of how computers and networks function, how they can be involved in crimes, and how they can be used as a source of evidence • Offers readers information about relevant legal issues • Features coverage of the abuse of computer networks and privacy and security issues on computer networks• Free unlimited access to author's Web site which includes numerous and frequently updated case examples
High Performance JavaScript
Nicholas C. Zakas - 2010
The problem is that all of those lines of JavaScript code can slow down your apps. This book reveals techniques and strategies to help you eliminate performance bottlenecks during development. You'll learn how to improve execution time, downloading, interaction with the DOM, page life cycle, and more.
Yahoo! frontend engineer Nicholas C. Zakas and five other JavaScript experts -- Ross Harmes, Julien Lecomte, Steven Levithan, Stoyan Stefanov, and Matt Sweeney -- demonstrate optimal ways to load code onto a page, and offer programming tips to help your JavaScript run as efficiently and quickly as possible. You'll learn the best practices to build and deploy your files to a production environment, and tools that can help you find problems once your site goes live.
Identify problem code and use faster alternatives to accomplish the same task Improve scripts by learning how JavaScript stores and accesses data Implement JavaScript code so that it doesn't slow down interaction with the DOM Use optimization techniques to improve runtime performance Learn ways to ensure the UI is responsive at all times Achieve faster client-server communication Use a build system to minify files, and HTTP compression to deliver them to the browser
Black Code: The Battle for the Future of Cyberspace
Ronald J. Deibert - 2011
It is difficult to imagine a world without instant access and 24/7 connectivity. We have reengineered our business, governance, and social relations around a planetary network unlike any that has come before. And, as with any social transformation, there have been unintended consequences. In Black Code, Ron Deibert examines the profound effect that cyberspace is having on the relationship between citizens and states, on the private and public spheres, and on domestic and international affairs. Cyberspace has brought us a world of do-it-yourself signals intelligence, he argues, and WikiLeaks is only a symptom of a much larger phenomenon to which governments, businesses, and individuals will have to get accustomed. Our lives have been turned inside out by a digital world of our own spinning. Fast-paced, revealing, and sometimes terrifying,
Black Code
takes readers into the shadowy realm of cybersecurity, offering insight into the very future of cyberspace and revealing what new rules and norms we will need to adopt in order to survive in this new environment.
Serious Cryptography: A Practical Introduction to Modern Encryption
Jean-Philippe Aumasson - 2017
You’ll learn about authenticated encryption, secure randomness, hash functions, block ciphers, and public-key techniques such as RSA and elliptic curve cryptography.You’ll also learn: - Key concepts in cryptography, such as computational security, attacker models, and forward secrecy - The strengths and limitations of the TLS protocol behind HTTPS secure websites - Quantum computation and post-quantum cryptography - About various vulnerabilities by examining numerous code examples and use cases - How to choose the best algorithm or protocol and ask vendors the right questionsEach chapter includes a discussion of common implementation mistakes using real-world examples and details what could go wrong and how to avoid these pitfalls. Whether you’re a seasoned practitioner or a beginner looking to dive into the field, Serious Cryptography will provide a complete survey of modern encryption and its applications.
Concrete Mathematics: A Foundation for Computer Science
Ronald L. Graham - 1988
"More concretely," the authors explain, "it is the controlled manipulation of mathematical formulas, using a collection of techniques for solving problems."