Showing posts with label Computer Science. Show all posts
Showing posts with label Computer Science. Show all posts

Saturday, August 12, 2017

Largest FREE Microsoft eBook Giveaway!



Microsoft Giving Away MILLIONS of FREE Microsoft eBooks again, including: Windows 10, Office 365, Office 2016, Power BI, Azure, Windows 8.1, Office 2013, SharePoint 2016, SharePoint 2013, Dynamics CRM, PowerShell, Exchange Server, System Center, Cloud, SQL Server and more!

              DOWNLOAD

Friday, October 7, 2016

Algorithms 4th Edition - Robert Sedgewick and Kevin Wayne


              Ebook Size : 12 MB

              Download : Algorithms 4th Edition (PDF)

Online course. You can take our free Coursera MOOCs Algorithms, Part I and Algorithms, Part II. They include a full set of lecture videos and assessments.

 
The objective of this book is to study a broad variety of important and useful algorithms—methods for solving problems that are suited for computer implementation. Algorithms go hand in hand with data structures—schemes for organizing data that leave them amenable to efficient processing by an algorithm. This chapter introduces the basic tools that we need to study algorithms and data structures.

First, we introduce our basic programming model. All of our programs are implemented using a small subset of the Java programming language plus a few of our own libraries for input/output and for statistical calculations. Section 1.1 is a summary of language constructs, features, and libraries that we use in this book. Next, we emphasize data abstraction, where we define abstract data types (ADTs) in the service of modular programming. In Section 1.2 we introduce the process of implementing an ADT in Java, by specifying an applications programming interface (API) and then using the Java class mechanism to develop an implementation for use in client code.

As important and useful examples, we next consider three fundamental ADTs: the bag, the queue, and the stack. Section 1.3 describes APIs and implementations of bags, queues, and stacks using arrays, resizing arrays, and linked lists that serve as models and starting points for algorithm implementations throughout the book. Performance is a central consideration in the study of algorithms. Section 1.4 describes our approach to analyzing algorithm performance. The basis of our approach is the scientific method: we develop hypotheses about performance, create mathematical models, and run experiments to test them, repeating the process as necessary.

Tuesday, October 4, 2016

Introducing Windows Server 2016 - John McCabe


             Ebook Size : 13.4 MB

             Download : Introducing Windows Server 2016 PDF


If you run an IT environment today, how do you meet the aforementioned challenges? Can your applications and infrastructure meet the demands placed on it? Can you meet the rate of innovation the cloud offers or the agility and speed of delivery? In these respects, there are an increasing number of challenges facing the on-premises infrastructure.

However, not everyone is ready to move to the cloud, and there will be many cases in which you can’t because of a multitude of reasons; for example, contractual commitments that stipulate data can’t move to the cloud.

Simply put, Windows Server 2016 is the cloud-ready operating system (OS) that delivers new layers of security and Microsoft Azure-inspired innovation for the applications and infrastructure that power your business. For this release, Microsoft has spent a considerable amount of time reaching out to customers and gathering feedback of what is important and how it can meet the future needs for customer’s infrastructures.

Windows Server 2016 gives you the power to prevent attacks and detect suspicious activity with new features to control privileged access, protect virtual machines (VMs), and harden the platform against emerging threats.

  • Build highly available and scalable software-defined storage at a fraction of the cost of a Storage Area Network (SAN) or Network-Attached Storage (NAS). Storage Spaces Direct uses standard servers with local storage to create converged or hyper-converged storage architectures.
  • Create affordable business continuity and disaster recovery among datacenters with Storage Replica synchronous storage replication.
  • Ensure that users of business-critical applications have priority access to storage resources using Storage Quality of Service (QoS) features.

Microsoft loves Linux!

It is no secret that Microsoft has made major investments to ensure Linux gets an enterprise grade experience in the Microsoft ecosystem. Microsoft has made contributions to the Linux kernel and actively maintains the Linux Integration Services (LIS) to ensure a fully enlightened experienced while running Linux on Hyper-V.

Microsoft fully supports the following distributions on Hyper-V today, with more being added in the future.

  • Red Hat Linux
  • SUSE
  • OpenSUSE
  • CentOS
  • Ubuntu
  • Debian
  • Oracle Linux

Friday, September 30, 2016

Docker for Java Developers - Arun Gupta


                       Ebook Size : 5.3 MB

                       Download : Docker for Java Developers


Docker is a seeming overnight sensation in application development and delivery. Only a few years ago it was a small open source project like many others. Now Docker is firmly established as a fundamental technology for companies that are moving applications to the cloud, building microservices, adopting continuous integration and delivery, or even simply making traditional style apps more secure, resilient, and robust.

Not that long ago, Java was an overnight sensation of its own. Java helped bring object-oriented programming to the mainstream, while combining high performance and broad portability of code. Java is now the most popular and widely used programming language. NGINX is extremely popular in the Docker world and, to a growing degree, the Java world as well. So uniting Docker, Java, and NGINX makes great sense.

Luckily, it’s Arun Gupta who has stepped up to bring these technologies together. Arun was a driving force behind the development and early popularity of Java, first at Sun, then at Oracle. He’s continued to work at the cutting edge of technology, helping to evangelize both Docker and Kubernetes. In this ebook, Arun provides a complete introduction and user’s guide to Docker for Java developers. Arun explains why Docker is so important, then shows how Java developers can easily develop and deploy their first Java application using popular, Java-friendly tools––including NGINX.

Docker simplifies software delivery by making it easy to build, ship, and run distributed applications. It provides a common runtime API, image format, and toolset for building, shipping, and running containers on Linux. At the time of writing, there is no native support for Docker on Windows and OS X.

Docker images are read-only templates from which Docker containers are launched. Each image consists of a series of layers. Docker makes use of a union filesystem to combine these layers into a single image. Union filesystems allow files and directories of separate file‐systems, known as branches, to be transparently overlaid, forming a single coherent filesystem. One of the reasons Docker is so lightweight is because of these layers. When you change a Docker image—for example, update an application to a new version—a new layer gets built.

Saturday, September 24, 2016

Bitcoin and Cryptocurrency Technologies


                     Ebook Size :  18 MB
                     
                     Download : Bitcoin and Cryptocurrency Technologies


There’s a lot of excitement about Bitcoin and cryptocurrencies. Optimists claim that Bitcoin will fundamentally alter payments, economics, and even politics around the world. Pessimists claim Bitcoin is inherently broken and will suffer an inevitable and spectacular collapse.

Underlying these differing views is significant confusion about what Bitcoin is and how it works. We wrote this book to help cut through the hype and get to the core of what makes Bitcoin unique. To really understand what is special about Bitcoin, we need to understand how it works at a technical level. Bitcoin truly is a new technology and we can only get so far by explaining it through simple analogies to past technologies.

We’ll assume that you have a basic understanding of computer science — how computers work, data structures and algorithms, and some programming experience. If you’re an undergraduate or graduate student of computer science, a software developer, an entrepreneur, or a technology hobbyist, this textbook is for you. In this book we’ll address the important questions about Bitcoin. How does Bitcoin work? What makes it different? How secure are your bitcoins? How anonymous are Bitcoin users? What applications can we build using Bitcoin as a platform? Can cryptocurrencies be regulated? If we were designing a new cryptocurrency today, what would we change? What might the future hold? Each chapter has a series of homework questions to help you understand these questions at a deeper level. In addition, there is a series of programming assignments in which you’ll implement various components of Bitcoin in simplified models. If you’re an auditory learner, most of the material of this book is also available as a series of video lectures. You can find all these on our Coursera course. You should also supplement your learning with information you can find online including the Bitcoin wiki, forums, and research papers, and by interacting with your peers and the Bitcoin community. After reading this book, you’ll know everything you need to be able to separate fact from fiction when reading claims about Bitcoin and other cryptocurrencies. You’ll have the conceptual foundations you need to engineer secure software that interacts with the Bitcoin network. And you’ll be able to integrate ideas from Bitcoin into your own projects. 

About the authors 

 

Arvind Narayanan @random_walker

Arvind Narayanan is an Assistant Professor of Computer Science at Princeton. Narayanan leads the Princeton Web Transparency and Accountability project that aims to uncover how companies are collecting and using our personal information. He also leads a research group studying the security, anonymity, and stability of Bitcoin and cryptocurrencies. His doctoral research showed that data anonymization is broken in fundamental ways, for which he jointly received the 2008 Privacy Enhancing Technologies Award. 
 

Joseph Bonneau @josephbonneau

Joseph Bonneau is a Technology Fellow at the Electronic Frontier Foundation and Postdoctoral Researcher at Stanford. In addition to researching Bitcoin and cryptocurrencies he has worked on passwords and web authentication, secure messaging tools, and HTTPS for secure web browsing. Earlier he was as a Postdoctoral Fellow at CITP, Princeton and he has previously worked at Google, Yahoo, and Cryptography Research Inc. He received a PhD from the University of Cambridge and an MS from Stanford.
 

Edward W. Felten @EdFelten

Edward Felten is a Professor of Computer Science and Public Affairs at Princeton, and the founding Director of the Center for Information Technology Policy. In 2011-12 he served as the first Chief Technologist at the U.S. Federal Trade Commission. His research interests include computer security and privacy, and technology law and policy. He has published more than 100 papers in the research literature, and two books. His research on topics such as Internet security, privacy, copyright and copy protection, and electronic voting has been covered extensively in the popular press.
 

Andrew Miller @socrates1024

Andrew Miller is an Assistant Professor of Computer Science at the University of Illinois at Urbana-Champaign, and previously received his Ph.D. from the University of Maryland. He has studied cryptocurrencies since 2011, and has authored scholarly papers on a wide range of original research, including new proof-of-work puzzle constructions, programming languages for block chain data structures, and peer-to-peer network measurement and simulation techniques. He is an Associate Director of the Initiative for Cryptocurrencies and Contracts (IC3) at Cornell and an advisor to the Zcash project. 
 

Steven Goldfeder @sgoldfed

Steven Goldfeder is a PhD student in the Department of Computer Science at Princeton University, advised by Arvind Narayanan. He is a member of the Security & Privacy Research Group, a CITP Graduate Student Fellow, and a National Science Foundation Graduate Research Fellow. His research interests include cryptography, security, and privacy, especially decentralized digital currencies. His current work involves increasing the security of Bitcoin wallets. 
 

Jeremy Clark @pulpspy

Jeremy Clark is is an Assistant Professor at the Concordia Institute for Information Systems Engineering in Montreal. He received his PhD from the University of Waterloo in 2011, where he applied cryptography to designing and deploying verifiable voting systems, including Scantegrity — the first use of an end-to-end verifiable system in a public sector election. He became interested in Bitcoin in 2010 and published one of the first academic papers in the area. Beyond research, he has worked with several municipalities on voting technology and testified to the Canadian Senate on Bitcoin.

Monday, July 25, 2016

Gaussian Processes for Machine Learning - Carl Edward Rasmussen and Christopher K. I. Williams


              Ebook Size : 3.9 MB

              Download: Gaussian Processes for Machine Learning

Gaussian processes (GPs) provide a principled, practical, probabilistic approach to learning in kernel machines. GPs have received increased attention in the machine-learning community over the past decade, and this book provides a long-needed systematic and unified treatment of theoretical and practical aspects of GPs in machine learning. The treatment is comprehensive and self-contained, targeted at researchers and students in machine learning and applied statistics.

The book deals with the supervised-learning problem for both regression and classification, and includes detailed algorithms. A wide variety of covariance (kernel) functions are presented and their properties discussed. Model selection is discussed both from a Bayesian and a classical perspective. Many connections to other well-known techniques from machine learning and statistics are discussed, including support-vector machines, neural networks, splines, regularization networks, relevance vector machines and others. Theoretical issues including learning curves and the PAC-Bayesian framework are treated, and several approximation methods for learning with large datasets are discussed. The book contains illustrative examples and exercises, and code and datasets are available on the Web. Appendixes provide mathematical background and a discussion of Gaussian Markov processes.

Friday, May 20, 2016

Introduction to Computer Graphics - David J. Eck


                Ebook Size : 4.8 MB

                Download : Introduction to Computer Graphics


The term “computer graphics” refers to anything involved in the creation or manipulation of images on computer, including animated images. It is a very broad field, and one in which changes and advances seem to come at a dizzying pace. It can be difficult for a beginner to know where to start. However, there is a core of fundamental ideas that are part of the foundation of most applications of computer graphics. This book attempts to cover those foundational ideas, or at least as many of them as will fit into a one-semester college-level course.
While it is not possible to cover the entire field in a first course—or even a large part of it—this should be a good place to start.
T he main focus of this book is three-dimensional (3D) graphics, where most of the work goes into producing a 3D model of a scene. But ultimately, in almost all cases, the end result of a computer graphics project is a two-dimensional image. And of course, the direct production and manipulation of 2D images is an important topic in its own right. Furthermore, a lot of ideas carry over from two dimensions to three. So, it makes sense to start with graphics in 2D. An image that is presented on the computer screen is made up of pixels. The screen consists of a rectangular grid of pixels, arranged in rows and columns.

The pixels are small enough that they are not easy to see individually. In fact, for many very high resolution displays, they become essentially invisible. At a given time, each pixel can show only one color. Most screens these days use 24-bit color, where a color can be specified by three 8-bit numbers, giving the levels of red, green, and blue in the color. Any color that can be shown on the screen is made up of some combination of these three “primary” colors. Other formats are possible, such as grayscale, where each pixel is some shade of gray and the pixel color is given by one number that specifies the level of gray on a black-to-white scale. Typically, 256 shades of gray are used. Early computer screens used indexed color , where only a small set of colors, usually 16 or 256, could be displayed. For an indexed color display, there is a numbered list of possible colors, and the color of a pixel is specified by an integer giving the position of the color in the list.

Sunday, April 10, 2016

Mathics - A free, light-weight alternative to Mathematica

    
      Ebook Size : 2 MB

      Download : Mathics - A free, light-weight alternative to Mathematica

Mathics—to be pronounced like “Mathematics” without the “emat”—is a general-purpose computer algebra system (CAS). It is meant to be a free, light-weight alternative to Mathematica®. It is free both as in “free beer” and as in “freedom”. There are various online mirrors running Mathics but it is also possible to run Mathics locally. A list of mirrors can be found at the Mathics homepage, http://mathics.github.io.

The programming language of Mathics is meant to resemble Wolfram's famous Mathematica® as much as possible. However, Mathics is in no way affiliated or supported by Wolfram. Mathics will probably never have the power to compete with Mathematica® in industrial applications; yet, it might be an interesting alternative for educational purposes.

Why yet another Computer Algebra System?

Mathematica® is great, but it has one big disadvantage: It is not free. On the one hand, people might not be able or willing to pay hundreds of dollars for it; on the other hand, they would still not be able to see what's going on “inside” the program to understand their computations better. That's what free software is for!

Mathics aims at combining the best of both worlds: the beauty of Mathematica® backed by a free, extensible Python core.

Of course, there are drawbacks to the Mathematica® language, despite all its beauty. It does not really provide object orientation and especially encapsulation, which might be crucial for big software projects. Nevertheless, Wolfram still managed to create their amazing Wolfram|Alpha entirely with Mathematica®, so it can't be too bad!

However, it is not even the intention of Mathics to be used in large-scale projects and calculations—at least not as the main framework—but rather as a tool for quick explorations and in educating people who might later switch to Mathematica®.

Saturday, March 26, 2016

Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex Samuel

               
                Ebook Size: 3.7 MB
                Download : Advanced Linux Programming

GNU/Linux has taken the world of computers by storm. At one time, personal computer users were forced to choose among proprietary operating environments and applications. Users had no way of fixing or improving these programs, could not look “under the hood,” and were often forced to accept restrictive licenses. GNU/Linux and other open source systems have changed that—now PC users, administrators, and developers can choose a free operating environment complete with tools, applications, and full source code.

A great deal of the success of GNU/Linux is owed to its open source nature. Because the source code for programs is publicly available, everyone can take part in development, whether by fixing a small bug or by developing and distributing a complete major application.This opportunity has enticed thousands of capable developers worldwide to contribute new components and improvements to GNU/Linux, to the point that modern GNU/Linux systems rival the features of any proprietary system, and distributions include thousands of programs and applications spanning many CD-ROMs or DVDs.

The success of GNU/Linux has also validated much of the UNIX philosophy. Many of the application programming interfaces (APIs) introduced in AT&T and BSD UNIX variants survive in Linux and form the foundation on which programs are built.The UNIX philosophy of many small command line-oriented programs working together is the organizational principle that makes GNU/Linux so powerful. Even when these programs are wrapped in easy-to-use graphical user interfaces, the underlying commands are still available for power users and automated scripts. A powerful GNU/Linux application harnesses the power of these APIs and commands in its inner workings. GNU/Linux’s APIs provide access to sophisticated features such as interprocess communication, multithreading, and high-performance networking. And many problems can be solved simply by assembling existing commands and programs using simple scripts.

This book is intended for three types of readers:

You might be a developer already experienced with programming for the GNU/Linux system, and you want to learn about some of its advanced features and capabilities.You might be interested in writing more sophisticated programs with features such as multiprocessing, multithreading, interprocess communication, and interaction with hardware devices.You might want to improve your programs by making them run faster, more reliably, and more securely, or by designing them to interact better with the rest of the GNU/Linux system.

1. GNU is a recursive acronym: It stands for “GNU’s Not UNIX.”

You might be a developer experienced with another UNIX-like system who’s interested in developing GNU/Linux software, too.You might already be familiar with standard APIs such as those in the POSIX specification.To develop GNU/Linux software, you need to know the peculiarities of the system, its limitations, additional capabilities, and conventions. You might be a developer making the transition from a non-UNIX environment, such as Microsoft’s Win32 platform.You might already be familiar with the general principles of writing good software, but you need to know the specific techniques that GNU/Linux programs use to interact with the system and with each other. And you want to make sure your programs fit naturally into the GNU/Linux system and behave as users expect them to.

You might be a developer experienced with another UNIX-like system who’s interested in developing GNU/Linux software, too.You might already be familiar with standard APIs such as those in the POSIX specification.To develop GNU/Linux software, you need to know the peculiarities of the system, its limitations, additional capabilities, and conventions. You might be a developer making the transition from a non-UNIX environment, such as Microsoft’s Win32 platform.You might already be familiar with the general principles of writing good software, but you need to know the specific techniques that GNU/Linux programs use to interact with the system and with each other. And you want to make sure your programs fit naturally into the GNU/Linux system and behave as users expect them to.

Friday, March 25, 2016

How To Think Like A Computer Scientist: C++ Version Allen B. Downey


              Ebook Size : 1.3 MB

              Download : How To Think Like A Computer Scientist: C++ Version


The programming language you will be learning is C++, because that is the language the AP exam is based on, as of 1998. Before that, the exam used Pascal. Both C++ and Pascal are high-level languages; other high-level languages you might have heard of are Java, C and FORTRAN. As you might infer from the name “high-level language,” there are also low-level languages, sometimes referred to as machine language or assembly language. Loosely-speaking, computers can only execute programs written in low-level languages. Thus, programs written in a high-level language have to be translated before they can run. This translation takes some time, which is a small disadvantage of high-level languages.

One of the most important skills you should acquire from working with this book is debugging. Although it can be frustrating, debugging is one of the most intellectually rich, challenging, and interesting parts of programming. In some ways debugging is like detective work. You are confronted with clues and you have to infer the processes and events that lead to the results you see.

Debugging is also like an experimental science. Once you have an idea what is going wrong, you modify your program and try again. If your hypothesis was correct, then you can predict the result of the modification, and you take a step closer to a working program. If your hypothesis was wrong, you have to come up with a new one. As Sherlock Holmes pointed out, “When you have eliminated the impossible, whatever remains, however improbable, must be the truth.” (from A. Conan Doyle’s The Sign of Four).

Friday, February 12, 2016

A Field Guide to Genetic Programming


   Ebook Size : 3.6 MB

   Download : A Field Guide to Genetic Programming


The goal of having computers automatically solve problems is central to artificial intelligence, machine learning, and the broad area encompassed by what Turing called “machine intelligence” (Turing, 1948). Machine learning pioneer Arthur Samuel, in his 1983 talk entitled “AI: Where It Has Been and Where It Is Going” (Samuel, 1983), stated that the main goal of the fields of machine learning and artificial intelligence is: “to get machines to exhibit behaviour, which if done by humans, would be assumed to involve the use of intelligence.” Genetic programming (GP) is an evolutionary computation (EC) 1 technique that automatically solves problems without requiring the user to know
or specify the form or structure of the solution in advance. At the most abstract level GP is a systematic, domain-independent method for getting computers to solve problems automatically starting from a high-level statement of what needs to be done.

Since its inception, GP has attracted the interest of myriads of people around the globe. This book gives an overview of the basics of GP, summarised important work that gave direction and impetus to the field and discusses some interesting new directions and applications. Things continue to change rapidly in genetic programming as investigators and practitioners discover new methods and applications. This makes it impossible to cover all aspects of GP, and this book should be seen as a snapshot of a particular moment in the history of the field.

Thursday, December 24, 2015

Introduction to Programming Using Java, Seventh Edition


                Ebook Size: 6 MB
                Download : Introduction to Programming Using Java
                Download Source Code

Introduction to Programming Using Java is a free introductory computer programming textbook that uses Java as the language of instruction. It is suitable for use in an introductory programming course and for people who are trying to learn programming on their own. There are no prerequisites beyond a general familiarity with the ideas of computers and programs.

There is enough material for a full year of college-level programming. Chapters 1 through 7 can be used as a textbook in a one-semester college-level course or in a year-long high school course. The remaining chapters can be covered in a second course.

The Seventh Edition of the book covers “Java 7.” The most recent version of Java is 8, but this book has only a few very short mentions of the new features in Java 8. The home web site for this book is http://math.hws.edu/javanotes/. The page at that address contains links for downloading a copy of the web site and for downloading PDF versions of the book. The web site—and the web site download—includes source code for the sample programs that are discussed in the text, answers to end-of-chapter quizzes and a discussion and solution for each end-of-chapter exercises. Readers are encouraged to download the source code for the examples and to read and run the programs as they read the book. Readers are also strongly encouraged to read the exercise solutions if they want to get the most out of this book.

In style, this is a textbook rather than a tutorial. That is, it concentrates on explaining concepts rather than giving step-by-step how-to-do-it guides. I have tried to use a conversational writing style that might be closer to classroom lecture than to a typical textbook. This is certainly not a Java reference book, and it is not a comprehensive survey of all the features of Java. It is not written as a quick introduction to Java for people who already know another programming language. Instead, it is directed mainly towards people who are learning programming for the first time, and it is as much about general programming concepts as it is about Java in particular. I believe that Introduction to Programming using Java is fully competitive with the conventionally published, printed programming textbooks that are available on the market. (Well, all right, I’ll confess that I think it’s better.)

 

The Seventh Edition of “Introduction to Programming using Java” is not a huge update from the sixth edition. In fact, my main motivation for the new version was to remove any use of applets or coverage of applets from the book. Applets are Java programs that run on a web page. When Java first came out, they were exciting, and it seemed like they would become a major way of creating active content for the Web. Up until the sixth edition, the web pages for this book included applets for running many of the sample programs. However, because of security issues and the emergence of other technologies, applets are no longer widely used. 

Furthermore, the most recent versions of Java made it fairly difficult and unpleasant to use the applets in the book. In place of applets, I have tried to make it as easy as possible for readers to download the sample programs and run them on their own computers. Another significant change in the seventh edition is that arrays are now introduced in Chapter 3 in a basic form that is used throughout the next three chapters. Previously, arrays were not introduced until Chapter 7, after objects and GUI programming had already been covered. Much of the more advanced coverage of arrays is still in Chapter 7. Aside from that, there are many small improvements throughout, mostly related to features that were new in Java 7.

When you begin a journey, it’s a good idea to have a mental map of the terrain you’ll be passing through. The same is true for an intellectual journey, such as learning to write computer programs. In this case, you’ll need to know the basics of what computers are and how they work. You’ll want to have some idea of what a computer program is and how one is created. Since you will be writing programs in the Java programming language, you’ll want to know something about that language in particular and about the modern computing environment for which Java is designed.

As you read this chapter, don’t worry if you can’t understand everything in detail. (In fact, it would be impossible for you to learn all the details from the brief expositions in this chapter.) Concentrate on learning enough about the big ideas to orient yourself, in preparation for the rest of the book. Most of what is covered in this chapter will be covered in much greater detail later in the book.

Monday, December 21, 2015

Fundamentals of Programming C++ by Richard L. Halterman

                       Ebook Size : 7.4 MB

                       Download : Fundamentals of Programming C++


A computer program, from one perspective, is a sequence of instructions that dictate the flow of electrical impulses within a computer system. These impulses affect the computer’s memory and interact with the display screen, keyboard, mouse, and perhaps even other computers across a network in such a way as to produce the “magic” that permits humans to perform useful tasks, solve high-level problems, and play games. One program allows a computer to assume the role of a financial calculator, while another transforms the machine into a worthy chess opponent.
  
The concepts of computer programming are logical and mathematical in nature. In theory, computer programs can be developed without the use of a computer. Programmers can discuss the viability of a program and reason about its correctness and efficiency by examining abstract symbols that correspond to the features of real-world programming languages but appear in no real-world programming language. While such exercises can be very valuable, in practice computer programmers are not isolated from their machines. Software is written to be used on real computer systems. Computing professionals known as software engineers develop software to drive particular systems. These systems are defined by their underlying hardware and operating system. Developers use concrete tools like compilers, debuggers, and profilers.

Sunday, December 20, 2015

Think Java: How to think like a Computer Scientist


                     Ebook Size : 1.1 MB

                     Download : Think Java: How to think like a computer scientist

Computer scientists have an approach to problem-solving, and a way of crafting solutions, that is unique, versatile and powerful. I hope that this book gives you a sense of what that approach is, and that at some point you will find yourself thinking like a computer scientist.

The goal of this book, and this class, is to teach you to think like a computer scientist. I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating trade offs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions. The single most important skill for a computer scientist is problem-solving. By that I mean the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called “The way of the program.” On one level, you will be learning to program, which is a useful skill by itself. On another level you will use programming as a means to an end. As we go along, that end will become clearer.
 
Some books introduce objects immediately; others warm up with a more procedural style and develop object-oriented style more gradually. This book is probably the extreme of the “objects late” approach. 

Tuesday, December 15, 2015

Java Application Development on Linux - Carl Albing, Michael Schwarz


                 Ebook Size : 3.2 MB

                 Download : Java Application Development on Linux

Why another book on Java? Why a book on Java and Linux? Isn’t Java a platform-independent system? Aren’t there enough books on Java? Can’t I learn everything I need to know from the Web? No doubt, there are a host of Java books on the market. We didn’t wake up one morning and say, “You know what the world really needs? Another book about Java!” No. What we realized was that there are a couple of “holes” in the Java book market.

First, Linux as a development platform and deployment platform for Java
applications has been largely ignored. This is despite the fact that the *nix
platform (meaning all UNIX and UNIX-like systems, Linux included) has long
been recognized as one of the most programmer-friendly platforms in existence.
Those few resources for Java on Linux that exist emphasize tools to the exclu-
sion of the Java language and APIs.

Second, books on the Java language and APIs have focused on pedagogical
examples that serve to illustrate the details of the language and its libraries, but
very few of these examples are in themselves practically useful, and they tend to deal only with the issues of writing programs, and not at all with deploying and maintaining them. Anyone who has worked on a major software project, especially a software project that is developed and deployed in a business for a business, knows that designing and coding are only about half of the work in volved. Yes, writing Java code is only slightly affected by the development and the deployment platform, but the process of releasing and maintaining such applications is significantly different between platforms.

To address these missing pieces, we decided to cover development and deployment of a Java application that has command-line, GUI, servlet, and enterprise components on a Linux platform. We’re writing the guide book we wish we had had when we started writing and deploying Java applications on Linux. We’re going to show you a simplistic enterprise application, “from cradle to grave,” but along the way cover issues of design process, production environment, setup, administration, and maintenance that few books bother to cover.

Monday, December 14, 2015

The C Book Featuring the ANSI Standard Second Edition


                     Ebook Size: 3.1 MB

                     Download : The C Book Featuring the ANSI Standard

This book was written with two groups of readers in mind. Whether you are new to C and want to learn it, or already know the older version of the language but want to find out more about the new standard, we hope that you will find what follows both instructive and at times entertaining too.

This is not a tutorial introduction to programming. The book is designed for programmers who already have some experience of using a modern high-level
procedural programming language. As we explain later, C isn't really appropriate for complete beginners—though many have managed to use it—so the book will assume that its readers have already done battle with the notions of statements, variables, conditional execution, arrays, procedures (or subroutines) and so on.

Instead of wasting your time by ploughing through tedious descriptions of how to add two numbers together and explaining that the symbol for multiplication is * , the book concentrates on the things that are special to C. In particular, it's the way that C is used which is emphasized. Those who already know C will be interested in the new Standard and how it affects existing C programs. The effect on existing programs might not at first seem to be important to newcomers, but in fact the ‘old’ and new versions of the language are an issue for the beginner too. For some years after the approval of the Standard, programmers will have to live in a world where they can easily encounter a mixture of both the new and the old language, depending on the age of the programs that they are working with. For that reason, the book highlights where the old and new features differ significantly. Some of the old features are no ornament to the language and are well worth avoiding; the Standard goes so far as to consider them obsolescent and recommends that they should not be used. For that reason they are not described in detail, but only far enough to allow a reader to understand what they mean. Anybody who intends to write programs using these old-style features should be reading a different book.

This is the second edition of the book, which has been revised to refer to the final, approved version of the Standard. The first edition of the book was based on a draft of the Standard which did contain some differences from the draft that was eventually approved. During the revision we have taken the opportunity to include more summary material and an extra chapter illustrating the use of C and the Standard Library to solve a number of small problems.

Tuesday, December 1, 2015

The MagPI - The Official RASPBERRY PI Magazine #PIZERO


                    Ebook Size: 21.9 MB

                    Download : The MagPI - The Official RASPBERRY PI Magazine

Raspberry Pi Zero is a real $5 computer. Learn to code while you play Minecraft
                        (or do just about anything else you can dream up)

We’d like you to pick up the Raspberry Pi Zero that came with this very magazine. You’re holding in your hands a fully functional computer that’s going on sale for $5 and that you could lose in a small purse. It’s quite the amazing feat of engineering and we’re very excited to bring it to our readers, along with 32 pages of content that will take you from a Zero Novice to a Zero Master.

Over the course of our expansive coverage, we talk to the people behind the Raspberry Pi Zero’s development, teach you how to hook it up, and also suggest some great uses for your Zero. With its even smaller size, there are some amazing things you’ll be able to do with it. Check out the contents on the facing page to jump to what interests you, and just have a good time with your new Pi Zero.


Monday, November 30, 2015

The Official RASPBERRY PI Projects Book

  
                    Ebook Size: 35.7 MB

                    Download : The Official RASPBERRY PI Projects Book

Just over seven million Raspberry Pis have been sold around the world. That makes this credit card-sized PC one of the most successful computers the UK has ever made. It’s quite amazing really, that a tiny UK charity, dedicated to making computing and computer science affordable and available to people from all walks of life, should end up with such an incredible success story on their hands.

You can learn more about the Raspberry Pi Foundation’s charitable and educational aims at raspberrypi.org, but regardless of what you want to do with your Raspberry Pi – be it for fun, for education, or as a proof of concept for a multimillion-dollar invention – The Official Raspberry Pi Project Book has something to inspire, help, and guide you on your journey. Whatever you decide to do with your Pi, I hope you have fun doing it.
                                                      
            - Russell Barnes


Saturday, November 28, 2015

A Guide to HTML5 and CSS3



         Ebook Size : 1.5 MB

         Download : A Guide to HTML5 and CSS3

What do I need to start developing with HTML?

There are absolutely no requirements to start learning HTML, but you will need
some tools to help you along the way. There are two tools that are essential to
becoming an efficient and professional Web Developer.

Firstly, you will need a Text Editor.

Windows users, you can get an awesome text editor from notepad-plus-plus.org. As you have probably guessed from the name of the URL, this text editor is Notepad ++ and includes some cool syntax highlighting!

Mac fans, you can get a text editor from Bare Bones. This handy text editor-Text wrangler also supports syntax highlighting for a range of programming languages. Personally I use Text Wrangler.

Linux lovers, you can use the default gnome text editor- gedit. If it’s not
already installed, you can get it over here at gnome.org.

Thursday, November 26, 2015

How to Start Your Own Mobile Game Company - Mobile Game Design


  Ebook Size : 10.5 MB

  Download : How to Start Your Own Mobile Game Company

Game developers are the new rock stars...except the stakes are higher, revenues bigger, and impact greater. While music is listened to mainly in the background, games are the primary way people will interact, communicate, and do work in the future.

There is a huge shift in the industry and society at large: from the industrial age, to the digital age. This paradigm shift, just as other paradigm shifts, offers numerous opportunities to young and motivated people. In fact, in a paradigm shift, experience may be detrimental. As a motivated person, you have nothing to lose, so you have everything to gain. You are not tied down by old ways of thinking, acting, and doing things. There is a green field ahead of you, and this is your chance. There is another paradigm shift happening in computer usage: the shift from personal computers to mobile devices. Most people used personal computers mainly to work and to communicate with friends and family, and now smartphones are increasingly allowing for all these activities to the point at which some people are running their businesses from their phone.

This shift has already taken place in Japan, where social networks now see over 90% of their visitors coming from mobile phones.