-
Cryptology with Bitcoin and Blockchain Applications
Seth D. Bergmann
This book is intended to be used for a first course in cryptography for computer science students. It assumes that the student has had at least one programming course and a discrete structures or discrete math course. This book places an emphasis on algorithms and the internals of cryptographic systems.
The book begins with some classical cryptographic algorithms used for confidentiality. Then it exposes modern cryptographic algorithms for confidentiality, integrity, and authenticity. Both private key (symmetric) and public key (asymmetric) algorithms are covered. This book also describes the workings of the most common cryptocurrency, Bitcoin, as well as blockchain technology.
Most sections conclude with a list of exercises (solutions are available to instructors who have adopted this text in a course). Some exercises refer to a repository of data and/or computer software. This repository can be found at: http://cs.rowan.edu/~bergmann/books/cryptology
Chapter 4 consists of several topics from elementary discrete mathematics which are necessary to understand cryptographic algorithms. The more advanced reader may skip this chapter and refer to it as needed. Each subsequent chapter which requires an understanding of these topics will list the relevant sections at the beginning of the chapter.
This book is an open source book. This means that not only is the pdf version available (to potential students and teachers) for free download, but that the original (LaTeX) source files are also available (to potential authors and contributors). Based on the model of open source software, open source for textbooks is a relatively new paradigm in which many authors and contributors can cooperate to produce a high quality product, for no compensation. For details on the rationale of this new paradigm, and citations for other open source textbooks, see the journal Publishing Research Quarterly, Vol. 30, No. 1, March 2014. The source materials and pdf files of this book are licensed with the Creative Commons NonCommercial license, which means that they may be freely used, copied, or modified, but not for financial gain.
This book is available at rdw.rowan.edu (search for Bergmann). The source files for this book are available at cs.rowan.edu/∼bergmann/books
-
Computer Science Principles with C++
Seth D. Bergmann
This textbook is intended to be used for a first course in computer science, such as the College Board’s Advanced Placement course known as AP Computer Science Principles (CSP). This book includes all the topics on the CSP exam, plus some additional topics. It takes a breadth-first approach, with an emphasis on the principles which form the foundation for hardware and software. No prior experience with programming should be required to use this book. This version of the book uses the C++ programming language.
-
Computer Science Principles with Python
Seth D. Bergmann
This textbook is intended to be used for a first course in computer science, such as the College Board’s Advanced Placement course known as AP Computer Science Principles (CSP). This book includes all the topics on the CSP exam, plus some additional topics. It takes a breadth-first approach, with an emphasis on the principles which form the foundation for hardware and software. No prior experience with programming should be required to use this book. This version of the book uses the Python programming language.
-
Computer Science Principles with Java
Seth D. Bergmann
This textbook is intended to be used for a first course in computer science, such as the College Board’s Advanced Placement course known as AP Computer Science Principles (CSP). This book includes all the topics on the CSP exam, plus some additional topics. It takes a breadth-first approach, with an emphasis on the principles which form the foundation for hardware and software. No prior experience with programming should be required to use this book. This version of the book uses the Java programming language.
-
Computer Organization with MIPS
Seth D. Bergmann
This book is intended to be used for a first course in computer organization, or computer architecture. It assumes that all digital components can be constructed from fundamental logic gates. The book begins with number representation schemes and assembly language for the MIPS architecture, including assembler directives, pseudo-operations, and floating point instructions. It then describes the machine language instruction formats, and shows the student how to translate an assembly language program to machine language. This is followed by a chapter which describes how to construct an assembler for MIPS. This chapter may be omitted without loss of continuity. This is followed by an introduction to boolean algebra and digital logic, then a possible design of the MIPS datapath. The book concludes with a description of the memory hierarchy, including cache memory, RAM, and virtual memory. Each section concludes with a list of exercises (solutions are available to instructors who have adopted this text in a course).
-
Compiler Design: Theory, Tools, and Examples
Seth D. Bergmann
Compiler design is a subject which many believe to be fundamental and vital to computer science. It is a subject which has been studied intensively since the early 1950’s and continues to be an important research field today. Compiler design is an important part of the undergraduate curriculum for many reasons: (1) It provides students with a better understanding of and appreciation for programming languages. (2) The techniques used in compilers can be used in other applications with command languages. (3) It provides motivation for the study of theoretic topics. (4) It is a good vehicle for an extended programming project.
There are several compiler design textbooks available today, but most have been written for graduate students. Here at Rowan University, our students have had difficulty reading these books. However, I felt it was not the subject matter that was the problem, but the way it was presented. I was sure that if concepts were presented at a slower pace, with sample problems and diagrams to illustrate the concepts, that our students would be able to master the concepts. This is what I have attempted to do in writing this book.
-
Introduction to Computer Science with Java Programming
Seth D. Bergmann
This book is intended to be used for a first course in computer programming. No prior experience with programming should be necessary in order to use this book. But this book is intended to be used with a course that teaches more than computer programming; it is intended to be used with a course that teaches Computer Science. The distinction is subtle, but important.
The author(s) believe that a breadth-first approach is the best way to introduce the concepts of Computer Science to students. Rather than isolate topics in courses (bits and bytes in a computer organization course; formal grammars and languages in a theory course; lists, sets, and maps in a data structures course; etc) we believe that topics should be introduced in a brief and simple manner at the starting level. Elaboration on these topics should occur in subsequent courses. This breadth-first approach allows the student to build on existing knowledge and retain a greater proportion of the material.
Printing is not supported at the primary Gallery Thumbnail page. Please first navigate to a specific Image before printing.