Showing posts with label Computer Science. Show all posts
Showing posts with label Computer Science. Show all posts
Saturday, August 12, 2017
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++
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.




















