Titulo: Introduction to Theory of Computation

Autor: Anil Maheshwari & Michiel Smid

Publicacion: 2014

Editorial: Carleton University

Num. Paginas: 246

Tamano: 1.07 Mbs (zip)

Idioma: Inglés

Categorias: Algoritmos, Programación

Etiquetas: Algoritmia, Autómata finito, Autómatas, Complejidad, Computación, Matemáticas, Turing

This course is on the Theory of Computation, which tries to answer the following questions: What are the mathematical properties of computer hardware and software? What is a computation and what is an algorithm ? Can we give rigorous mathematical definitions of these notions? What are the limitations of computers? Can "everything" be computed? (As we will see, the answer to this question is "no".) Purpose of the Theory of Computation: Develop formal mathematical models of computation that reflect real-world computers. This field of research was started by mathematicians and logicians in the 1930's, when they were trying to understand the meaning of a "computation". A central question asked was whether all mathematical problems can be solved in a systematic way. The research that started in those days led to computers as we know them today. Nowadays, the Theory of Computation can be divided into the following three areas: Complexity Theory, Computability Theory, and Automata Theory.

]]>Titulo: Discrete Structures for Computer Science: Counting, Recursion, and Probability

Autor: Michiel Smid

Publicacion: 2014

Editorial: Carleton University

Num. Paginas: 241

Tamano: 875 Kbs (zip)

Idioma: Inglés

Categorias: Matemáticas, Programación

Etiquetas: Aleatoriedad, Computación, Estructuras discretas, Matemáticas, Probabilidad, Recursión

This is a free textbook for an undergraduate course on Discrete Structures for Computer Science students, which I have been teaching at Carleton University since the fall term of 2013. Summary: Mathematical Preliminaries Counting Recursion Discrete Probability Random Variables and Expectation The Probabilistic Method

]]>Titulo: Principles of Programming Languages

Autor: VVAA

Publicacion: 2011

Editorial: Johns Hopkins University

Num. Paginas: 189

Tamano: 884 Kbs (zip)

Idioma: Inglés

Categorias: Programación

Etiquetas: C, Concurrencia, Cplusplus, Java, Oop, POO, Programación, Tuplas

This book is an introduction to the study of programming languages. The material has evolved from lecture notes used in a programming languages course for juniors, seniors, and graduate students at Johns Hopkins University. The book treats programming language topics from a foundational, but not formal, perspective. It is foundational in that it focuses on core concepts in language design such as functions, records, objects, and types and not directly on applied languages such as C, C++, or Java. We show how the particular core concepts are realized in these modern languages, and so the reader should emerge from this book with a stronger sense of how they are structured. The book is not formal in the sense that no theorems are proved about programming languages. We do, however, use several techniques that are useful in the formal study of programming languages, including operational semantics and type systems. With these techniques we can define more carefully how programs should behave.

]]>Titulo: Open Data Structures (in C++)

Autor: Pat Morin

Publicacion: 2014

Editorial: Autoedición

Num. Paginas: 336

Tamano: 1.32 Mbs (zip)

Idioma: Inglés

Categorias: C plus plus, Programación

Etiquetas: Algoritmia, árboles binarios, Cplusplus, Hash, Programación

This book is intended to teach the design and analysis of basic data structures and their implementation in an object-oriented language. In this edition, the language happens to be C++. This book is not intended to act as an introduction to the C++ programming language. Readers of this book need only be familiar with the basic syntax of C++ and similar languages. Those wishing to work with the accompanying source code should have some experience programming in C++. This book is also not intended as an introduction to the C++ Standard Template Library or the generic programming paradigm that the STL embodies. This book describes implementations of several different data structures, many of which are used in implementations of the STL. The contents of this book may help an STL programmer understand how some of the STL data structures are implemented and why these implementations are efficient.

]]>Titulo: Introduction to Theory of Computation

Autor: Anil Maheshwari & Michiel Smid

Publicacion: 2014

Editorial: Carleton University

Num. Paginas: 246

Tamano: 1.07 Mbs (zip)

Idioma: Inglés

Categorias: Programación

Etiquetas: Autómatas, Complejidad, Computación, Lenguajes de programación, Turing

This course is on the Theory of Computation, which tries to answer the following questions: What are the mathematical properties of computer hardware and software? What is a computation and what is an algorithm ? Can we give rigorous mathematical definitions of these notions? What are the limitations of computers? Can “everything” be computed? (As we will see, the answer to this question is “no”.) Purpose of the Theory of Computation: Develop formal mathematical models of computation that reflect real-world computers. This field of research was started by mathematicians and logicians in the 1930’s, when they were trying to understand the meaning of a “computation”. A central question asked was whether all mathematical problems can be solved in a systematic way. The research that started in those days led to computers as we know them today. Nowadays, the Theory of Computation can be divided into the following three areas: Complexity Theory, Computability Theory, and Automata Theory.

]]>Titulo: Grooming: Guía práctica para adultos

Autor: Varios

Publicacion: 2014

Editorial: Presidencia de la Nación

Num. Paginas: 10

Tamano: 2.21 Mbs (zip)

Idioma: Español

Categorias: Educación, Web 2.0 y Social Media

Etiquetas: Educación, Grooming, Internet, Redes sociales, Seguridad

Se llama GROOMING a la acción deliberada de un adulto de acosar sexualmente a un niño o niña mediante el uso de Internet. Siempre es un adulto quien ejerce el grooming. Estos adultos suelen generar un perfil falso en una red social, sala de chat, foro u otro, en donde se hacen pasar por un chico o una chica y entablan una relación de amistad y confianza con el niño o niña que quieren acosar. El mecanismo del grooming suele incluir un pedido de foto o video de índole sexual o erótica (pedido por el adulto, utilizando el perfil falso). Cuando consigue la foto o el video, comienza un período de chantaje en el que se amenaza a la víctima con hacer público ese material si no entrega nuevos videos o fotos o si no accede a un encuentro personal. Internet es una herramienta que brinda nuevas posibilidades a problemáticas previamente existentes. En este sentido, el abuso o acoso sexual a menores y la pedofilia no deben explicarse por la web, sino que esta será comprendida como un instrumento capaz de potenciar los distintos tipos de abuso.

]]>Titulo: Fundamental Data Structures

Autor: Varios

Publicacion: 2014

Editorial: WikiBooks

Num. Paginas: 55

Tamano: 777 Kbs (zip)

Idioma: Inglés

Categorias: Algoritmos, Ciencia, Matemáticas

Etiquetas: Abstracción, Algoritmia, Estructura de datos, Hash

Not to be confused with Algebraic data type. In computer science, an abstract data type (ADT) is a mathematical model for a certain class of data structures that have similar behavior; or for certain data types of one or more programming languages that have similar semantics. An abstract data type is defined indirectly, only by the operations that may be performed on it and by mathematical constraints on the effects (and possibly cost) of those operations. For example, an abstract stack could be defined by three operations: push, that inserts some data item onto the structure, pop, that extracts an item from it (with the constraint that each pop always returns the most recently pushed item that has not been popped yet), and peek, that allows data on top of the structure to be examined without removal. When analyzing the efficiency of algorithms that use stacks, one may also specify that all operations take the same time no matter how many items have been pushed into the stack, and that the stack uses a constant amount of storage for each element. Abstract data types are purely theoretical entities, used (among other things) to simplify the description of abstract algorithms, to classify and evaluate data structures, and to formally describe the type systems of programming languages. However, an ADT may be implemented by specific data types or data structures, in many ways and in many programming languages; or described in a formal specification language. ADTs are often implemented as modules: the module's interface declares procedures that correspond to the ADT operations, sometimes with comments that describe the constraints. This information hiding strategy allows the implementation of the module to be changed without disturbing the client programs. The term abstract data type can also be regarded as a generalised approach of a number of algebraic structures, such as lattices, groups, and rings. This can be treated as part of the subject area of artificial intelligence. The notion of abstract data types is related to the concept of data abstraction, important in object-oriented programming and design by contract methodologies for software development.

]]>Titulo: Open Data Structures (in pseudocode)

Autor: Pat Morin

Publicacion: 2014

Editorial: Autoedición

Num. Paginas: 326

Tamano: 1.26 Mbs (zip)

Idioma: Inglés

Categorias: Algoritmos, Ciencia, Matemáticas, Programación

Etiquetas: Algoritmia, árboles binarios, Estructura de datos, Grafos, Hash, Matemáticas, Pseudocódigo

Every computer science curriculum in the world includes a course on data structures and algorithms. Data structures are that important; they improve our quality of life and even save lives on a regular basis. Many multi-million and several multi-billion dollar companies have been built around data structures. How can this be? If we stop to think about it, we realize that we interact with data structures constantly. Open a file: File system data structures are used to locate the parts of that file on disk so they can be retrieved. This isn’t easy; disks contain hundreds of millions of blocks. The contents of your file could be stored on any one of them. Look up a contact on your phone: A data structure is used to look up a phone number in your contact list based on partial information even before you finish dialing/typing. This isn’t easy; your phone may contain information about a lot of people—everyone you have ever contacted via phone or email—and your phone doesn’t have a very fast processor or a lot of memory. Log in to your favourite social network: The network servers use your login information to look up your account information. This isn’t easy; the most popular social networks have hundreds of millions of active users. Do a web search: The search engine uses data structures to find the web pages containing your search terms. This isn’t easy; there are over 8.5 billion web pages on the Internet and each page contains a lot of potential search terms. Phone emergency services (9-1-1): The emergency services network looks up your phone number in a data structure that maps phone numbers to addresses so that police cars, ambulances, or fire trucks can be sent there without delay. This is important; the person making the call may not be able to provide the exact address they are calling from and a delay can mean the difference between life or death.

]]>Titulo: Building Blocks for Theoretical Computer Science

Autor: Margaret M. Fleck

Publicacion: 2013

Editorial: Autoedición

Num. Paginas: 271

Tamano: 1.04 Mbs (zip)

Idioma: Inglés

Categorias: Algoritmos, Ciencia, Matemáticas, Programación

Etiquetas: Algoritmos, árboles, Big O, Ciencias, Complejidad, Grafos, Matemáticas, Programación, Recurisividad

This book teaches two different sorts of things, woven together. It teaches you how to read and write mathematical proofs. It provides a survey of basic mathematical objects, notation, and techniques which will be useful in later computer science courses. These include propositional and predicate logic, sets, functions, relations, modular arithmetic, counting, graphs, and trees. And, finally, it gives a brief introduction to some key topics in theoretical computer science: algorithm analysis and complexity, automata theory, and computability. This book is designed for students who have taken an introductory programming class of the sort intended for scientists or engineers. Algorithms will be presented in “pseudo-code,” so it does not matter which programming language you have used. But you should have written programs that manipulate the contents of arrays e.g. sort an array of numbers. You should also have written programs that are recursive, i.e. in which a function (aka procedure aka method) calls itself. We’ll also assume that you have taken one semester of calculus. We will make very little direct reference to calculus: only a brief and relatively informal use of limits in Chapter 14. However, we will assume a level of fluency with precalculus (algebra, geometry, logarithms, etc) that is typically developed during while taking calculus. If you already have significant experience writing proofs, including inductive proofs, this book may be too easy for you.

]]>Titulo: Algorithmic Graph Theory and Sage

Autor: Varios

Publicacion: 2013

Editorial: Autoedición

Num. Paginas: 304

Tamano: 4.57 Mbs (zip)

Idioma: Inglés

Categorias: Algoritmos, Ciencia, Matemáticas, Programación

Etiquetas: Algoritmia, árboles de datos, Ciencia, Grafos, Matemáticas, Matemáticas discretas, SAGE

In mathematics and computer science, graph theory is the study of graphs, which are mathematical structures used to model pairwise relations between objects. A "graph" in this context is made up of "vertices" or "nodes" and lines called edges that connect them. A graph may be undirected, meaning that there is no distinction between the two vertices associated with each edge, or its edges may be directed from one vertex to another; see graph (mathematics) for more detailed definitions and for other variations in the types of graph that are commonly considered. Graphs are one of the prime objects of study in discrete mathematics. Summary: Introduction to graph theory Trees and forests Shortest paths algorithms Graph data structures Distance and connectivity Centrality and prestige Optimal graph traversals Graph coloring Network flows Algebraic graph theory Random graphs Asymptotic growth

]]>