Materials, Books, and Topics to Create a Computer Scientist
A brief list of topics regarding a simple bachelor's degree in computer science.
- You are likely going to need some very basic information. Everything from kindergarten to high-school are building blocks. Yes, many things are useless, but some will prove more useful than others. If you are out of practice with simple concepts a good tool to try out is an ACT Prep service.
- ACT Prep Web Software package.
- Reading and writing are essentials, there is no way around it. In college a big emphasis comes into rhetoric techniques, estimating source credibility, not stealing (plagiarism), and the tedious citing standards. Punctuation, to me, is far less important but some people are grammer nuzis.
- Introduction to Writing
-- The Little Penguin Handbook by Faigley, shows how to cite things.
-- Allyn & Bacon Guide to Writing by Ramage and Bean, the main English book.
- Intermediate Writing Science and Technology
-- From Inquiry to Academic Writing by Greene and Lidisnky.
ART, HISTORY, POLITICS, SOCIOLOGY, PHILOSOPHY, ETHICS, ART
- Technical people are often not very good artists. If you browse many forums you will always find programmers in need of media. Then there are artists that need programmers. It is rare, I think, when there is an individual that is both a great artist and a great programmer.
- It is difficult to determine truth, and often it is said that history is the picture given to the public by those who won. History and politics is dirty business. The value of history is to not repeat previously committed mistakes, the problem is that there is too much of it to be retained in the brain for present and future use. Anyways, these are some of the topics and materials covered.
- Introduction to Visual Arts: The Power of Art by Lewis.
- American Heritage: 1776 by David McCullough.
- Introduction to Sociology: Introduction to Sociology by Giddens and Duneier.
- Ethics and Values: Moral Philosophy by Bulger.
- Global Social and Ethical Issues in Computing: A Gift of Fire: Social, Legal, and Ethical Issues for Computing Technology by Baase.
- Technical ideas are often hard for common people to understand. Saying something like "Apple's iPod has 16GB of memory" was very useless to most common people, but saying "Apple's iPod can hold 1000 songs" is easier to understand. Many great ideas often go to waste because of our inability to communicate, and for this reason public speaking can be useful.
- Public Speaking
-- The Quick & Easy Way to Effective Speaking by Dale Carnegie.
-- There are many more modern books regarding this topic.
- Interpersonal Communication: Interpersonal Communication by Floyd.
- These two fields are some of the most eye-opening that college has to offer. If you are an individual who has a very religious background then it is likely that you will be challenged in what the modern world has discovered, and very little is supported with concepts related to God(s). The support that science has is far greater than what belief systems have, and that's why real scientists begin here.
- General Biology: Essential Biology by Simon and Dickey.
- Physics for Scientists and Engineers 1 and 2: University Physics by Sears and Zemansky.
- Additional: Darwin, Newton, Faraday, Maxwell, Tesla, Sagan, Tyson, Einstein, Bohr, Feynman, Krauss, Coyne, Dawkins, Patterson, Henderson, Pasteur.
- For programming you generally only need to know how to add, subtract, multiply, divide, and know how to do modulus operations. However, for the advanced stuff then matrix multiplication, exponents, functions, and many more math concepts will be useful. Furthermore, if you are to program games then trigonometry and physics may come in very useful. Sadly, for a lot of math courses the word problems tend to be downplayed in favor of repetition of stuff that you think "I'll never use this in real life". The word problems are the most useful in developing a mindset for solving real problems.
- Intermediate Algebra: MyMathLab, is a very likely possibility if you are in college.
- College Algebra: College Algebra by Larson.
- Trigonometry: College Trigonometry by Aufmann and Barker.
- Calculus 1, 2, 3: Calculus by Stewart.
- Principles of Statistics: Statistics: Informed Decisions Using Data by Sullivan.
- Finally we get to do some computer science! A computer scientist understands how computers work, know the limitations and the possibilities. We can speak to a computer in a primitive language that only uses zeros and ones, although this may change with newer developments. A computer scientist is not just a coder, but an individual with a superb tool set. Modern living requires computer science.
- Fundamentals of Programming: Any basic C# book will work because of the C-like syntax.
- Object Oriented Programming: Big C++ by Horstmann and Budd.
- C# .Net Software Development: C# in a Nutshell by Albahari.
- Java Software Development: Core Java (vols 1 and 2) by Horstmann and Cornell.
- C++ Software Development: C++ Primer by Lippman.
- Discrete Math Structures 1: Essentials of Discrete Mathematics by Hunter, or Discrete Structures, Logic, and Computability by Hein.
- Discrete Math Structures 2: An Introduction to Formal Languages and Automata by Linz.
- Database Theory: Databases Illuminated by Ricardo.
- Computer Networks 1 and 2: Computer Networks by Peterson and Davie.
- Computer Organization and Architecture: Introduction to Computing Systems by Patt and Patel.
- Introduction to Algorithms and Data Structures: Data Structures and Other Objects Using C++ by Main and Savitch.
- Software Engineering 1: Software Engineering: Principles and Practice by Vliet.
- Introduction to System Administration -- Linux/UNIX: Unix and Linux System Administration Handbook by Nemeth and Snyder.
- Operating Systems Theory: Operating System Concepts by Silberschatz and Galvin.
- Principles and Patterns of Software Design: Head First Design Patterns by Freeman and Bates, UML Distilled by Fowler.
- Numerical Software Development: Numerical Analysis by Sauer.
- Analysis of Algorithms: Foundations of Algorithms by Neapolitan.
- Analysis of Programming Languages: Modern Programming Languages: A Practical Introduction by Webber, The D Programming Language by Alexandrescu.
- Advanced High Performance Computer Architecture: Any good Computer Architecture book will do.
- Artificial Intelligence: Modern Intelligence: A Modern Approach by Russell and Norvig.
- Compiler Construction: Compilers: Principles, Techniques, and Tools by Aho, et al..
- Additional: Von Neumann, Dijkstra, Babbage, Eckert, Mauchly, Turing, Berners-Lee, Ritchie, Torvalds.
This is enough for a bachelor's degree, but of course there is far more to computer science than this brief list of topics and materials. Learning never ends in a technical field.
- Khan Academy, contains a wide variety of courses and very useful videos.
- Coursera, variety of technical courses.
- PluralSight, great courses on software, IT, data, architecture, cyber security, and more.
- Lynda, lots of courses, generally for art.
- Teach Yourself Computer Science.