- ACM Learning Center

Access ACM's TechTalks, their podcast ByteCast, and other professional development resources. - Codecademy
- edX: Computer Programming Courses
- MIT OpenCourseWare: Electrical Engineering and Computer Science
- W3 Schools

Remember, anyone can publish anything online! Make sure you take a critical look at any websites you are considering using for your research!

Watch the video below and check out our Information Evaluation guide for more details.

- How to Think Like a Computer Scientist: C++ VersionThink C++ is a free textbook available under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Readers are free to copy and distribute the text; they are also free to modify it, which allows them to adapt the book to different needs, and to help develop new material.
- Introduction to Computing: Explorations in Language, Logic, and MachinesThis book introduces the most important ideas in computing using the Scheme and Python programming languages. It focuses on how to describe information processes by defining procedures, how to analyze the costs required to carry out a procedure, and the fundamental limits of what can and cannot be computed mechanically.
- Mathematics for Computer ScientistsIn this book you find the basic mathematics that is needed by computer scientists. The author will help you to understand the meaning and function of mathematical concepts. The best way to learn it, is by doing it, the exercises in this book will help you do just that.Topics as Elementary logic, factorization, plotting functions and matrices are explained.
- Think OS: A Brief Introduction to Operating SystemsAn introduction to Operating Systems for programmers. Includes material from operating systems, networks, databases, and embedded systems, but it emphasizes the topics programmers need to know.
- Think Python: How to Think Like a Computer ScientistThink Python is an introduction to Python programming for beginners. It starts with basic concepts of programming, and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression. Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps and introduced over the course of several chapters.