20 Electrical Engineering and Computer Science
Electrical Engineering (ELG)
Lessons in Electric Circuits∗
Tony R. Kuphaldt (All About Circuits community and editorial team)
Licence: Design Science License
This free electrical engineering textbook provides a series of volumes covering electricity and electronics. The information provided is great for students, makers, and professionals who are looking to refresh or expand their knowledge in this field.
Format: Online
Includes: review sections, worksheets
Suggested for:
ELG 2138 Circuit theory I
ELG 2137 Circuit theory II
ELG 2136 Electronics I [some chapters]
ELG 3136 Electronics II [some chapters]
Signals and Systems, Edition 3.0∗
Michael D. Adams (University of Victoria)
2020
Licence: CC BY-NC-ND 3.0
This textbook covers continuous-time signals and systems at an introductory level appropriate for undergraduate students. This textbook has been used by the author at the University of Victoria to teach a number of undergraduate courses on continuous-time signals and systems.
Format: Google Books
Includes: Exercises, video lectures, and lecture slides
Suggested for:
ELG 3125 Signal and System Analysis
Fundamentals of Electrical Engineering I
Don Johnson (Rice University) (OpenStax)
2014
Licence: CC BY 1.0
The textbook focuses on the creation, manipulation, transmission, and reception of information by electronic means. It covers elementary signal theory, time- and frequency-domain analysis, sampling theorem, digital information theory, digital transmission of analog signals, and error-correcting codes.
Formats: Online and PDF; online LibreTexts version
Includes: Questions and answer keys
Reviews: Open Textbook Library
Suggested for:
ELG 3125 Signal and System Analysis
Computer Engineering (CEG)
Digital Circuit Projects: An Overview of Digital Circuits Through Implementing Integrated Circuits∗
Charles W. Kann, (Gettysburg College)
2014
Licence: CC BY 4.0
Digital circuits, often called Integrated Circuits or ICs, are the central building blocks of a Central Processing Unit (CPU). To understand how a computer works, it is essential to understand the digital circuits which make up the CPU. This text introduces the most important of these digital circuits; adders, decoders, multiplexers, D flip-flops, and simple state machines.
Format: PDF
Includes: Figures
Reviews: Open Textbook Library
Suggested for:
CEG 2136 Computer Architecture I
Software Engineering (SEG)
No suggested OER at this time.
Computer Science (CSI)
Delftse Foundations of Computation∗
Stefan Hugtenburg and Neil Yorke-Smith (Delft University of Technology)
2018
Licence: CC BY-NC-SA 4.0
The textbook is designed for an introductory course in theoretical computer science. It includes topics from propositional and predicate logic, proof techniques, set theory and the theory of computation, along with practical applications to computer science.
Format: PDF
Includes: exercises
Reviews: Open Textbook Library
Suggested for:
CSI 2101 Discrete Structures
Foundations of Computation∗
Carol Critchlow and David Eck (Hobart and William Smith Colleges)
2011
Licence: CC BY-NC-SA 4.0
The textbook is designed for a one-semester course in theoretical computer science.
Format: PDF
Includes: Exercises
Reviews: Open Textbook Library
Suggested for:
CSI 2101 Discrete Structures
Java, Java, Java: Object-Oriented Problem Solving∗
Ralph Morelli and Ralph Walde (Trinity College)
2016
Licence: CC BY 4.0
Suitable for a typical Introduction to Computer Science course or for a slightly more advanced Java as a Second Language course. This textbook takes the “objects first” approach to programming and problem solving. It provides careful coverage of Java language features, introductory programming concepts, and object-oriented design principles.
Formats: PDF and LaTex
Includes: Self-study exercises with answers, end-of-chapter exercises, and a companion website with instructor resources upon request
Reviews: Open Textbook Library
Suggested for:
CSI 2110: Data Structures and Algorithms
James Young (University of Manitoba)
Last updated: September 2020
Licence: CC BY-NC-SA 4.0
This collection of free notes is aimed at helping the complete beginner learn the basics of computer programming using Processing, a free and easy to use program available for many platforms. With Processing, students start with making graphics, and skip much of the ugly, memorization-based syntax of beginner Java. Unlike other guides, this focuses on learning programming, not the features of Processing.
Format: PDF
Includes: Learning objectives, exercises, and instructor manual
Suggested for:
CSI 2110: Data Structures and Algorithms
Computer Science 20 – Saskatchewan∗
Dan Schellenberg (Saskatoon Public Schools)
Licence: CC BY-SA 4.0
Through its text and videos, this resource provides an interactive experience on learning to write and execute Python code. In addition to simply executing code, there is a unique feature called codelens that allows control of the flow of execution in order to gain a better understanding of how the program works.
Format: Online
Includes: Curriculum outcomes, videos, quizzes, and exercises
Suggested for:
CSI 2120 Programming Paradigms
Programming Fundamentals: A Modular Structured Approach, 2nd Edition∗
Kenneth Leroy Busbee and Dave Braunschweig (Houston Community College)
2018
Licence: CC BY-SA 4.0
The original content for this book was created by Kenneth Leroy Busbee and written specifically for his course based on C++. The goal for this second edition is to make it programming-language neutral, so that it may serve as an introductory programming textbook for students using any of a variety of programming languages, including C++, C#, Java, JavaScript, Python, and Swift. Other languages will be considered upon request. Programming concepts are introduced generically, with logic demonstrated in pseudocode and flowchart form, followed by examples for different programming languages. Emphasis is placed on a modular, structured approach that supports reuse, maintenance, and self-documenting code.
Formats: Pressbooks WebBook, EPUB, PDF, and MOBI
Includes: pseudocode, flowcharts, and example code in C++, C#, Java, JavaScript, Python, and Swift, key terms, practice exercises, review questions
Reviews: Open Textbook Library (first edition)
Suggested for:
CSI 2372 Advanced Programming Concepts With C++
Information Technology (ITI)
Digital Circuit Projects: An Overview of Digital Circuits Through Implementing Integrated Circuits∗
Charles W. Kann (Gettysburg College)
2014
Licence: CC BY 4.0
Digital circuits, often called Integrated Circuits or ICs, are the central building blocks of a Central Processing Unit (CPU). To understand how a computer works, it is essential to understand the digital circuits which make up the CPU. This text introduces the most important of these digital circuits; adders, decoders, multiplexers, D flip-flops, and simple state machines.
Format: PDF
Includes: Figures
Reviews: Open Textbook Library
Suggested for:
ITI 1100 Digital Systems I
Java, Java, Java: Object-Oriented Problem Solving∗
Ralph Morelli and Ralph Walde (Trinity College)
2016
Licence: CC BY 4.0
Suitable for a typical Introduction to Computer Science course or for a slightly more advanced Java as a Second Language course. This textbook takes the “objects first” approach to programming and problem solving. It provides careful coverage of Java language features, introductory programming concepts, and object-oriented design principles.
Formats: PDF and LaTex
Includes: Self-study exercises with answers, end-of-chapter exercises, and a companion website with instructor resources upon request
Reviews: Open Textbook Library
Suggested for:
ITI 1120 Introduction to Computing I
ITI 1121 Introduction to Computing II
Learn to Program: Intro Java with interactive graphics, via Processing∗
James Young (University of Manitoba)
Last updated: September 2020
Licence: CC BY-NC-SA 4.0
This collection of free notes is aimed at helping the complete beginner learn the basics of computer programming using Processing, a free and easy to use program available for many platforms. With Processing, students start with making graphics, and skip much of the ugly, memorization-based syntax of beginner Java. Unlike other guides, this focuses on learning programming, not the features of Processing.
Format: PDF
Includes: Learning objectives, exercises, and instructor manual
Suggested for:
ITI 1120 Introduction to Computing I
ITI 1121 Introduction to Computing II