“Open Educational Resources (OERs) are teaching, learning, and research resources released under an open license that permits their free use and repurposing by others. OERs can be textbooks, full courses, lesson plans, videos, text, software, and any other tool, material, or technique that supports access to knowledge.” [https://sparcopen.org/wp-content/uploads/2016/01/SPARC-Open-Education-Fact-Sheet.pdf]
With the dramatic rise in textbook costs in recent years, making available open educational resources such as open source textbooks can mean significant savings for students. These potential savings strongly support Rowan University’s pillar of Affordability.
Open educational resources don’t have to be publication-ready textbooks; they can also be lectures, course readings, maps, digital scholarship projects, or even digital specimens (http://ecommons.udayton.edu/geo_mineral_samples).
If you are a Rowan University faculty member and you'd like to submit your open educational resource to this repository, please contact the Libraries repository manager at firstname.lastname@example.org.
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.
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.