Think Like a Programmer: An Introduction to Creative Problem Solving


V. Anton Spraul - 2012
    In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer. Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge. You'll also learn how to:Split problems into discrete components to make them easier to solve Make the most of code reuse with functions, classes, and libraries Pick the perfect data structure for a particular job Master more advanced programming tools like recursion and dynamic memory Organize your thoughts and develop strategies to tackle particular types of problems Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.

Learn Windows PowerShell 3 in a Month of Lunches


Don Jones - 2011
    Just set aside one hour a day—lunchtime would be perfect—for a month, and you'll be automating Windows tasks faster than you ever thought possible. You'll start with the basics—what is PowerShell and what can you do with it. Then, you'll move systematically through the techniques and features you'll use to make your job easier and your day shorter. This totally revised second edition covers new PowerShell 3 features designed for Windows 8 and Windows Server 2012.Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book.What's InsideLearn PowerShell from the beginning—no experience required! Covers PowerShell 3, Windows 8, and Windows Server 2012 Each lesson should take you one hour or lessAbout the TechnologyPowerShell is both a language and an administrative shell with which you can control and automate nearly every aspect of Windows. It accepts and executes commands immediately, and you can write scripts to manage most Windows servers like Exchange, IIS, and SharePoint.Experience with Windows administration is helpful. No programming experience is assumed.Table of ContentsBefore you begin Meet PowerShell Using the help system Running commands Working with providers The pipeline: connecting commands Adding commands Objects: data by another name The pipeline, deeper Formatting—and why it's done on the right Filtering and comparisons A practical interlude Remote control: one to one, and one to many Using Windows Management Instrumentation Multitasking with background jobs Working with many objects, one at a time Security alert! Variables: a place to store your stuff Input and output Sessions: remote control with less work You call this scripting? Improving your parameterized script Advanced remoting configuration Using regular expressions to parse text files Additional random tips, tricks, and techniques Using someone else's script Never the end PowerShell cheat sheet

Python Crash Course: A Hands-On, Project-Based Introduction to Programming


Eric Matthes - 2015
    You'll also learn how to make your programs interactive and how to test your code safely before adding it to a project. In the second half of the book, you'll put your new knowledge into practice with three substantial projects: a Space Invaders-inspired arcade game, data visualizations with Python's super-handy libraries, and a simple web app you can deploy online.As you work through Python Crash Course, you'll learn how to: Use powerful Python libraries and tools, including matplotlib, NumPy, and PygalMake 2D games that respond to keypresses and mouse clicks, and that grow more difficult as the game progressesWork with data to generate interactive visualizationsCreate and customize simple web apps and deploy them safely onlineDeal with mistakes and errors so you can solve your own programming problemsIf you've been thinking seriously about digging into programming, Python Crash Course will get you up to speed and have you writing real programs fast. Why wait any longer? Start your engines and code!

Essential System Administration


Æleen Frisch - 1991
    Whether you are a beginner or an experienced administrator, you'll quickly be able to apply its principles and advice to your everyday problems.The book approaches Unix system administration from the perspective of your job -- the routine tasks and troubleshooting that make up your day. Whether you're dealing with frustrated users, convincing an uncomprehending management that you need new hardware, rebuilding the kernel, or simply adding new users, you'll find help in this book. You'll also learn about back up and restore and how to set up printers, secure your system, and perform many other system administration tasks. But the book is not for full-time system administrators alone. Linux users and others who administer their own systems will benefit from its practical, hands-on approach.This second edition has been updated for all major Unix platforms, including SunOS 4.1, Solaris 2.4, AIX 4.1, Linux 1.1, Digital Unix, OSF/1, SCO Unix Version 3, HP/UX Versions 9 and 10, and IRIX Version 6. The entire book has been thoroughly reviewed and tested on all of the platforms covered. In addition, networking, electronic mail, security, and kernel configuration topics have been expanded substantially.Topics covered include:Starting up and shutting down your system Adding new users Managing processes System security Organizing and planning file systems Planning and performing backups Setting up pointers TCP/IP networking Setting up email Adding terminals and disk drives Setting up and using the accounting system

The Productive Programmer


Neal Ford - 2008
    The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use. Master developer Neal Ford not only offers advice on the mechanics of productivity-how to work smarter, spurn interruptions, get the most out your computer, and avoid repetition-he also details valuable practices that will help you elude common traps, improve your code, and become more valuable to your team. You'll learn to:Write the test before you write the codeManage the lifecycle of your objects fastidiously Build only what you need now, not what you might need later Apply ancient philosophies to software development Question authority, rather than blindly adhere to standardsMake hard things easier and impossible things possible through meta-programming Be sure all code within a method is at the same level of abstraction Pick the right editor and assemble the best tools for the job This isn't theory, but the fruits of Ford's real-world experience as an Application Architect at the global IT consultancy ThoughtWorks. Whether you're a beginner or a pro with years of experience, you'll improve your work and your career with the simple and straightforward principles in The Productive Programmer.

The Go Programming Language


Alan A.A. Donovan - 2015
    It has been winning converts from dynamic language enthusiasts as well as users of traditional compiled languages. The former appreciate the robustness and efficiency that Go's lightweight type system brings to their code; the latter find Go's simplicity and fast tools a refreshing change. Thanks to its well-designed standard libraries and its excellent support for concurrent programming, Go is fast becoming the language of choice for distributed systems. The Go Programming Language is the definitive book on Go for the working programmer. It assumes no prior knowledge of Go, nor any other specific programming language, so you'll find it an accessible guide whether you come from JavaScript, Ruby, Python, Java, or C++. The book will quickly get you started using Go effectively from the beginning, and by the end, you will know how to use it well to write clear, idiomatic and efficient programs to solve real-world problems. You'll understand not just how to use its standard libraries, but how they work, and how to apply the same design techniques to your own projects. The earlier chapters will introduce you to the basic concepts of Go programming---numbers, strings, functions---while at the same time presenting important computer science concepts like recursion, and useful examples of graphics, UTF-8, and error handling. The chapters on methods and interfaces will show you a new way to think about object-oriented programming; the chapter on concurrency explains why concurrency is so important in modern programming, and how Go helps you handle it well. You'll also learn about Go's pragmatic but effective approach to testing; how to build, test, and manage projects using the go tool, and the art of metaprogramming using reflection. The book contains hundreds of interesting and practical examples that cover the whole language and a wide range of applications. The code samples from the book are available for download from gopl.io.

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."

Structure and Interpretation of Computer Programs


Harold Abelson - 1984
    This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published. A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.

Working with UNIX Processes


Jesse Storimer - 2011
    Want to impress your coworkers and write the fastest, most efficient, stable code you ever have? Don't reinvent the wheel. Reuse decades of research into battle-tested, highly optimized, and proven techniques available on any Unix system.This book will teach you what you need to know so that you can write your own servers, debug your entire stack when things go awry, and understand how things are working under the hood.http://www.jstorimer.com/products/wor...

Eric Sink on the Business of Software


Eric Sink - 2006
    This insightful collection of essays explore the business concerns that programmers face during the course of their careers--particularly those programmers who are small independent software vendors.Sink also covers issues like starting your own business, and then performing the hiring, marketing, and finances in a style that programmers understand, sprinkled with a touch of humor.

Learning XML


Erik T. Ray - 2001
    Fortunately, there s a solution: Erik T. Ray s Learning XML, Second Edition. This book presents an outstanding birds-eye view of the XML landscape. It s definitely not a programming book (though it does introduce some key XML programming issues). Rather, it s focused on key ideas you need to understand whatever you want to do with XML. That could be document management, web or print content delivery, application integration, B2B commerce, data storage, internationalization -- you name it.Ray s day job is software developer and XML specialist at O Reilly. There, he s helped to implement a complete publishing solution, using DocBook-XML and Perl to produce books in print, on CD-ROM, and for online delivery. So he understands XML from the real-world point of view of someone with a job to do. His first goal is to take on the big questions. First, What is XML? Ray attacks this question from multiple angles, introducing XML as a general-purpose information storage system, a markup language toolkit, and an open standard (or, increasingly, a collection of standards). What can (and can t) you do with XML? What s the history that led us here? And what tools do you need to get started? Next, he introduces the basic building blocks of XML markup and all XML-derived languages: stuff you ll need to know regardless of your goals. Through easy examples, you ll understand elements, attributes, entities, and processing instructions -- and how they fit together in a well-formed XML document. Then, it s on to representing information with XML -- in other words, understanding the nature and planning the structure of the documents you ll be using. Ray starts simply, then builds on his basic examples to discuss narrative documents with text flows, block and inline elements, and titled sections. Once you can handle those, he discusses more complex information modeling, as used in specialized markup languages such as VML. This edition contains an entirely new chapter on XML Schemas -- what he calls the shepherds that keep documents from straying outside of the herd and causing trouble. Schemas, of course, have become hugely important. This is one of the best plain-English introductions to the topic we ve seen. Ray then turns to presentation, introducing CSS stylesheets, basic usage, rule matching, properties, and more. A little later on, he returns to the subject -- this time with a complete introduction to XSL-FO that illuminates two powerful examples. The first is TEI-XML, a markup language for scholarly documents (Ray presents a Shakespearean sonnet, appropriately coded). The second is the immensely powerful DocBook -- which, as we ve observed, Ray knows inside and out. Learning XML is superbly written. Clear explanations. Simple examples. Great metaphors and analogies. And excellent introductions to nearly every topic that matters, from links to presentation, transformation to internationalization. If you re just starting out with XML, you re lucky to have it. Bill CamardaBill Camarda is a consultant, writer, and web/multimedia content developer. His 15 books include Special Edition Using Word 2000 and Upgrading & Fixing Networks for Dummies, Second Edition.

Programming Erlang


Joe Armstrong - 2007
    It's used worldwide by companies who need to produce reliable, efficient, and scalable applications. Invest in learning Erlang now.Moore's Law is the observation that the amount you can do on a single chip doubles every two years. But Moore's Law is taking a detour. Rather than producing faster and faster processors, companies such as Intel and AMD are producing multi-core devices: single chips containing two, four, or more processors. If your programs aren't concurrent, they'll only run on a single processor at a time. Your users will think that your code is slow.Erlang is a programming language designed for building highly parallel, distributed, fault-tolerant systems. It has been used commercially for many years to build massive fault-tolerated systems that run for years with minimal failures.Erlang programs run seamlessly on multi-core computers: this means your Erlang program should run a lot faster on a 4 core processor than on a single core processor, all without you having to change a line of code.Erlang combines ideas from the world of functional programming with techniques for building fault-tolerant systems to make a powerful language for building the massively parallel, networked applications of the future.This book presents Erlang and functional programming in the familiar Pragmatic style. And it's written by Joe Armstrong, one of the creators of Erlang.It includes example code you'll be able to build upon. In addition, the book contains the full source code for two interesting applications:A SHOUTcast server which you can use to stream music to every computer in your house, and a full-text indexing and search engine that can index gigabytes of data. Learn how to write programs that run on dozens or even hundreds of local and remote processors. See how to write robust applications that run even in the face of network and hardware failure, using the Erlang programming language.

MacBook For Dummies


Mark L. Chambers - 2006
    In addition to the freedom to work wherever you happen to be, a MacBook offers youA portable darkroom with iPhoto Mobile music, podcasts, and Internet radio GarageBand software that lets you make your own music The ability to create and share original movies and DVDs Safari, a safer and ultra-cool Web browser, and all the other OS X advantages Whether you already have your new MacBook or are still weighing the pros and cons of various models, MacBook For Dummies is a valuable resource. For newcomers to laptop land, it's packed with basic information about using and caring for Mac laptops. It also walks you through Mac OS X, the revolutionary Macintosh operating system that makes your laptop tick. Then it's on to all the fun stuff you can do with your MacBook, like making music, editing photos and turning them into a book, creating DVDs on the road, or adding a wireless keyboard. MacBook For Dummies will help youSet up your MacBook and get acquainted with all the features of the Mac OS X Tiger operating system Use the Safari Web browser and Apple's .Mac Internet subscriber service, connect your MacBook to a printer, and communicate with your cell phone or PDA Connect to a wired or wireless network Make the most of the iLife applications that come with your MacBook--iTunes, iPhoto, iMovie HD, iDVD, and GarageBand Keep your MacBook and your data safe, troubleshoot any problems, and maintain your system Popular For Dummies author Mark Chambers has loaded this fun book with tips, ideas, and his famous "Mark's Maxims"--power user advice that will guide you around the pitfalls and make you a Macxpert in no time. From latptop basics all the way to upgrading and adding memory, MacBook For Dummies will be your MacBook's best friend.

Object-Oriented JavaScript


Stoyan Stefanov - 2008
    This book is for the beginning to intermediate web developer who wants to solve web development problems with smart JavaScript. It does not assume any prior knowledge of JavaScript programming; however even if you already know some JavaScript, there will be plenty for you to learn here.

Linux Device Drivers


Jonathan Corbet - 2005
    And writing device drivers is one of the few areas of programming for the Linux operating system that calls for unique, Linux-specific knowledge. For years now, programmers have relied on the classic "Linux Device Drivers" from O'Reilly to master this critical subject. Now in its third edition, this bestselling guide provides all the information you'll need to write drivers for a wide range of devices.Over the years the book has helped countless programmers learn: how to support computer peripherals under the Linux operating system how to develop and write software for new hardware under Linux the basics of Linux operation even if they are not expecting to write a driver The new edition of "Linux Device Drivers" is better than ever. The book covers all the significant changes to Version 2.6 of the Linux kernel, which simplifies many activities, and contains subtle new features that can make a driver both more efficient and more flexible. Readers will find new chapters on important types of drivers not covered previously, such as consoles, USB drivers, and more.Best of all, you don't have to be a kernel hacker to understand and enjoy this book. All you need is an understanding of the C programming language and some background in Unix system calls. And for maximum ease-of-use, the book uses full-featured examples that you can compile and run without special hardware.Today Linux holds fast as the most rapidly growing segment of the computer market and continues to win over enthusiastic adherents in many application areas. With this increasing support, Linux is now absolutely mainstream, and viewed as a solid platform for embedded systems. If you're writing device drivers, you'll want this book. In fact, you'll wonder how drivers are ever written without it.