Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Computer science complete self-study program
Index -> Off Topic
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
slavaf2000




PostPosted: Thu Dec 06, 2012 1:04 pm   Post subject: Computer science complete self-study program

I am very passionate about CS, but my educational background is in accounting (I am a CA). Despite that, I spent the last 2 years learning "programming", focusing mainly on C++. I came to realize that what's more important than programming is the theoretical background required for solving the problems you face. This is what differentiates a self-taught programmer from someone with a CS degree. Unfortunately, not all of us have an opportunity to go back to school to study CS, but still want to exert the great effort and become as proficient and knowledgeable as someone with a CS degree and sharpen their skills to be on par with their CS peers.

I would like to dedicate this post to helping such people by designing a complete self-study program that will achieve the aforementioned goal. I've done a lot of research into the CS field and came up with the following proposed self-study program. It is roughly based on a blog by Dr. Matthew Might of University of Utah and I've added a lot of additional study material based on the previous research I've done. I am seeking your comments with respect to the completeness of the program as well as areas that have too much material overlap, thereby creating for an inefficient study program, or areas that are overkill. Please provide your comments from the academic perspective and avoid general comments such as "just get a degree". Please ensure your comments are very specific and follow the educational "spirit" of the question. The books I've chosen are regarded as some of the best in each area of study, however if you feel that a particular book is inappropriate, please voice your opinion. If another comparable book exists, only mention about it if the book that is already recommended here does not cover some material that you think is important and is available in that other book. With that said, here are the details:

Study Areas and Books:

Unix Philosophy and Administration
- The Unix Programming Environment by Kernighan and Pike
- Unix Power Tools by Shelley Powers, Jerry Peek, Tim O?Reilly, Mike Loukides
- Linux Server Hacks: 100 Industrial-Strength Tips and Tools by Rob Flickenger
- UNIX and Linux System Administration Handbook by Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley

Discrete Mathematics
- How to Prove It: A Structured Approach by Daniel J. Velleman
- How to Solve It: A New Aspect of Mathematical Method by George Polya, Sam Sloan
- Concrete Mathematics: A Foundation for Computer Science by Graham, Knuth, and Patashnik

Data Structures and Algorithms
- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
- Algorithm Design by Jon Kleinberg, ?va Tardos
- The Algorithm Design Manual by Steven S. Skiena
- The Art of Computer Programming (all volumes) by Donald E. Knuth

Theory / Math
- Foundations of Computer Science by Al Aho and Jeff Ullman http://i.stanford.edu/~ullman/focs.html
- An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson
- Introduction to the Theory of Computation by Michael Sipser
- Computational Complexity by Christos H. Papadimitriou
- Computational Complexity: A Conceptual Perspective by Oded Goldreich
- Introduction to Automata Theory, Languages, and Computation by John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman
- Computability: An Introduction to Recursive Function Theory by Nigel Cutland
- Computers and Intractability: A Guide to the Theory of NP-Completeness by M.R. Garey, D.S. Johnson
- Theory of Recursive Functions and Effective Computability by Hartley Rogers

Architecture
- Computer Organization and Design by David A. Patterson, John L. Hennessy
- Computer Architecture: A Quantitative Approach by John L. Hennessy, David A. Patterson
- What every programmer should know about memory by Ulrich Drepper http://lwn.net/Articles/250967/

Operating Systems
- Operating System Concepts by Abraham Silberschatz, Greg Gagne, Peter B. Galvin
- Operating Systems Design and Implementation by Andrew S Tanenbaum, Albert S Woodhull
- Operating Systems: Internals and Design Principles by William Stallings
- Linux Kernel Development by Robert Love

Networking
- Unix Network Programming, Volume 1: The Sockets Networking API by W. Richard Stevens, Bill Fenner, Andrew M. Rudoff
- UNIX Network Programming, Volume 2: Interprocess Communications by W. Richard Stevens
- TCP/IP Illustrated, Volume 1: The Protocols by Kevin R. Fall, W. Richard Stevens
- TCP/IP Illustrated, Volume 2: The Implementation by Gary R. Wright, W. Richard Stevens
- TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols by W. Richard Stevens
- Computer Networks by Andrew S. Tanenbaum, David J. Wetherall

Security
- Metasploit: The Penetration Tester's Guide by David Kennedy, Jim O?Gorman, Devon Kearns, Mati Aharoni
- Security 2020: Reduce Security Risks This Decade by Doug Howard, Kevin Prince

Cryptography
- Cryptography Engineering: Design Principles and Practical Applications by Niels Ferguson, Bruce Schneier, Tadayoshi Kohno
- Introduction to Modern Cryptography: Principles and Protocols by Jonathan Katz, Yehuda Lindell
- Elliptic Curves: Number Theory and Cryptography, Second Edition by Lawrence C. Washington
- A Course in Number Theory and Cryptography by Neal Koblitz
- Algebraic Aspects of Cryptography by Neal Koblitz (Author), A.J. Menezes (Contributor), Y.-H. Wu (Contributor), R.J. Zuccherato (Contributor)
- Schneier's Cryptography Classics Library: Applied Cryptography, Secrets and Lies, and Practical Cryptography by Bruce Schneier

Parallelism
- The Art of Multiprocessor Programming, Revised Reprint by Maurice Herlihy, Nir Shavit
- C++ Concurrency in Action: Practical Multithreading by Anthony Williams

Formal Methods
- Software Foundations by Benjamin C. Pierce, Chris Casinghino, Michael Greenberg, Cătălin Hriţcu, Vilhelm Sj?berg, Brent Yorgey http://www.cis.upenn.edu/~bcpierce/sf/

Graphics and Simulation
- Mathematics for 3D Game Programming and Computer Graphics by Eric Lengyel

Artificial Intelligence and Machine Learning
- Artificial Intelligence: A Modern Approach by Stuart Russell, Peter Norvig
- Machine Learning by Tom M. Mitchell

Databases
- SQL and Relational Theory: How to Write Accurate SQL Code by C.J. Date

Programming Languages
Racket
- How to Design Programs by Felleisen, Findler, Flatt and Krishnamurthi

JavaScript
- JavaScript: The Definitive Guide by Flanagan
- JavaScript: The Good Parts by Crockford

Standard ML
- ML for the Working Programmerby Larry C. Paulson
- The Definition of Standard ML by Milner, Harper, MacQueen and Tofte

Haskell
- Learn You a Haskell for Great Good by Miran Lipovaca http://learnyouahaskell.com/
- Real World Haskell by O'Sullivan, Goerzen and Stewart

Assembly
- Assembly Language Step-by-Step: Programming with Linux by Jeff Duntemann

C / C++
- The C Programming Language by Brian W. Kernighan, Dennis Ritchie
- Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions by Herb Sutter
- More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions by Herb Sutter
- Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions by Herb Sutter
- Effective C++: 55 Specific Ways to Improve Your Programs and Designs by Scott Meyers
- More Effective C++: 35 New Ways to Improve Your Programs and Designs by Scott Meyers
- Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library by Scott Meyers
- C++ Templates: The Complete Guide David Vandevoorde, Nicolai M. Josuttis
- The C++ Standard Library: A Tutorial and Reference by David Vandevoorde
- The C++ Programming Language by Bjarne Stroustrup

Other
- Structure and Interpretation of Computer Programs by Abelson, Sussman and Sussman
- Lisp in Small Piecesby Queinnec

Compilers
- Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman

Software Engineering
- The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, David Thomas
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
- Programming Pearls by Jon Bentley
- Mastering Regular Expressions by Jeffrey E.F. Friedl
- Software Testing: A Craftsman's Approach by Paul C. Jorgensen
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- Pattern Hatching: Design Patterns Applied by John Vlissides
- Code Complete 2 by Steve McConnell
Sponsor
Sponsor
Sponsor
sponsor
AntoxicatedDevil78




PostPosted: Fri Dec 07, 2012 10:36 am   Post subject: RE:Computer science complete self-study program

Smile
Display posts from previous:   
   Index -> Off Topic
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 2 Posts ]
Jump to:   


Style:  
Search: