diff --git a/README.md b/README.md index 9f7d21f..56f8d96 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,6 @@ Courses | Duration | Effort | Prerequisites #### Readings - **Required** since Nand2Tetris does not go deep enough into operating systems: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) -- Supplemental: [Computer Networking: A Top-Down Approach](https://www.amazon.com/gp/product/0133594149?pldnSite=1) ### Core theory @@ -245,11 +244,6 @@ Courses | Duration | Effort | Prerequisites \* **Required** if you intend not to go past Core CS; **strongly recommended** even for those who will continue on to Advanced CS. -#### Readings -- Supplemental: [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) -- Supplemental: [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) -- Supplemental: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) - ## Advanced CS After completing **every single required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. @@ -417,11 +411,14 @@ These aren't the only specializations you can choose. Check the following websit - Coursera: [Specializations](https://www.coursera.org/specializations) - Udacity: [Nanodegree](https://www.udacity.com/nanodegree) -After spending some time in the industry, you should also sharpen your coding and software management skills with the following **readings**: -- Recommended: [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) -- Recommended: [Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) -- Recommended: [The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) -- Recommended: [The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) +### Where to go next? + +- Look for a job as a developer! +- Check out the [readings](extras/readings.md) for classic books you can read that will sharpen your skills and expand your knowledge. +- Join a local developer meetup (e.g. via [Meetups.com](https://www.meetups.com/)). +- Pay attention to emerging technologies in the world of software development, such as: + - [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested BEAM VM! + - [Rust](https://www.rust-lang.org/), a systems language which uses borrowing and lifetimes to achieve memory safety without a garbage collector! ![keep learning](http://i.imgur.com/REQK0VU.jpg) diff --git a/extras/articles.md b/extras/articles.md deleted file mode 100644 index d3fa87c..0000000 --- a/extras/articles.md +++ /dev/null @@ -1,96 +0,0 @@ -# Computer Science - Extra Resources - -## Articles - -- [Introduction to Computer Science](#introduction-to-computer-science) -- [Math (Mathematical Thinking)](#math-mathematical-thinking) -- [Program Design](#program-design) -- [Math (Discrete Math)](#math-discrete-math) -- [Algorithms](#algorithms) -- [Programming Paradigms](#programming-paradigms) -- [Software Testing](#software-testing) -- [Math (Calculus)](#math-calculus) -- [Software Architecture](#software-architecture) -- [Theory](#theory) -- [Software Engineering](#software-engineering) -- [Math (Probability)](#math-probability) -- [Computer Architecture](#computer-architecture) -- [Operating Systems](#operating-systems) -- [Computer Networks](#computer-networks) -- [Databases](#databases) -- [Cloud Computing](#cloud-computing) -- [Math (Linear Algebra)](#math-linear-algebra) -- [Cryptography](#cryptography) -- [Security](#security) -- [Compilers](#compilers) -- [Parallel Computing](#parallel-computing) -- [UX Design](#ux-design) -- [Computer Graphics](#computer-graphics) -- [Artificial Intelligence](#artificial-intelligence) -- [Machine Learning](#machine-learning) -- [Natural Language Processing](#natural-language-processing) -- [Big Data](#big-data) -- [Data Mining](#data-mining) -- [Internet of Things](#internet-of-things) - ---- - -### Introduction to Computer Science - -### Math (Mathematical Thinking) - -### Program Design - -### Math (Discrete Math) - -### Algorithms - -### Programming Paradigms - -### Software Testing - -### Math (Calculus) - -### Software Architecture - -### Theory - -### Software Engineering - -### Math (Probability) - -### Computer Architecture - -### Operating Systems - -### Computer Networks - -### Databases - -### Cloud Computing - -### Math (Linear Algebra) - -### Cryptography - -### Security - -### Compilers - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -### Machine Learning - -### Natural Language Processing - -### Big Data - -### Data Mining - -### Internet of Things diff --git a/extras/free-courses.md b/extras/courses.md similarity index 100% rename from extras/free-courses.md rename to extras/courses.md diff --git a/extras/free-books.md b/extras/free-books.md deleted file mode 100644 index ab172c3..0000000 --- a/extras/free-books.md +++ /dev/null @@ -1,123 +0,0 @@ -# Computer Science - Extra Resources - -## Free Books - -- [Introduction to Computer Science](#introduction-to-computer-science) -- [Math (Mathematical Thinking)](#math-mathematical-thinking) -- [Program Design](#program-design) -- [Math (Discrete Math)](#math-discrete-math) -- [Algorithms](#algorithms) -- [Programming Paradigms](#programming-paradigms) -- [Software Testing](#software-testing) -- [Math (Calculus)](#math-calculus) -- [Software Architecture](#software-architecture) -- [Theory](#theory) -- [Software Engineering](#software-engineering) -- [Math (Probability)](#math-probability) -- [Computer Architecture](#computer-architecture) -- [Operating Systems](#operating-systems) -- [Computer Networks](#computer-networks) -- [Databases](#databases) -- [Cloud Computing](#cloud-computing) -- [Math (Linear Algebra)](#math-linear-algebra) -- [Cryptography](#cryptography) -- [Security](#security) -- [Compilers](#compilers) -- [Parallel Computing](#parallel-computing) -- [UX Design](#ux-design) -- [Computer Graphics](#computer-graphics) -- [Artificial Intelligence](#artificial-intelligence) -- [Machine Learning](#machine-learning) -- [Natural Language Processing](#natural-language-processing) -- [Big Data](#big-data) -- [Data Mining](#data-mining) -- [Internet of Things](#internet-of-things) - ---- - -### Introduction to Computer Science - -Name | Author(s) -:-- | :--: -[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman -[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans - -### Math (Mathematical Thinking) - -### Program Design - -### Math (Discrete Math) - -Name | Author(s) -:-- | :--: -[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur - -### Algorithms - -### Programming Paradigms - -### Software Testing - -### Math (Calculus) - -Name | Author(s) -:-- | :--: -[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson - -### Software Architecture - -### Theory - -### Software Engineering - -### Math (Probability) - -Name | Author(s) -:-- | :--: -[Grinstead and Snell’s Introduction to Probability](https://math.dartmouth.edu/~prob/prob/prob.pdf) |Charles M. Grinstead, J. Laurie Snell - -### Computer Architecture - -### Operating Systems - -### Computer Networks - -### Databases - -### Cloud Computing - -### Math (Linear Algebra) - -### Cryptography - -### Security - -### Compilers - -Name | Author(s) -:-- | :--: -[Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth - - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -### Machine Learning - -Name | Author(s) -:-- | :--: -[Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville -[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber - -### Natural Language Processing - -### Big Data - -### Data Mining - -### Internet of Things diff --git a/extras/paid-books.md b/extras/paid-books.md index cdee875..7cebe4f 100644 --- a/extras/paid-books.md +++ b/extras/paid-books.md @@ -39,7 +39,6 @@ Name | Author | ISBN :-- | :--: | :--: -[Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag | 978-0262525008 ### Math (Mathematical Thinking) @@ -49,13 +48,11 @@ Name | Author | ISBN Name | Author | ISBN :-- | :--: | :--: -[Discrete Mathematics with Applications(4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp | 9780495391326 ### Algorithms Name | Author | ISBN :-- | :--: | :--: -[Introduction to Algorithms(3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein | 9780262033848 ### Programming Paradigms @@ -77,14 +74,11 @@ Name | Author | ISBN Name | Author | ISBN :-- | :--: | :--: -[Modern Operating Systems(4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos | 9780133591620 ### Computer Networks Name | Author | ISBN :-- | :--: | :--: -[Computer Networking: A Top-Down Approach (6th Edition)](http://www.chegg.com/textbooks/computer-networking-6th-edition-9780132856201-0132856204) | James F Kurose, Keith W Ross | 9780132856201 -[Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall| 9780132126953 ### Databases @@ -100,7 +94,6 @@ Name | Author | ISBN Name | Author | ISBN :-- | :--: | :--: -[Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman | 9780321486813 ### Parallel Computing diff --git a/extras/readings.md b/extras/readings.md new file mode 100644 index 0000000..087b87d --- /dev/null +++ b/extras/readings.md @@ -0,0 +1,36 @@ +# Computer Science - Great Readings + +This document consists of great books or articles on computer science. +Some are here because there is a course covering the same material; +some are just great books that you should read at some point in your career. + +Once you have made it through most of the curriculum, knowing whether a book is worth your time will become easier. +Or, if you are struggling in one of the courses, perhaps reading a book on the subject will help. + +Name | Author(s) +:-- | :--: +[Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag +[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp +[Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) +[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) +[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) +[Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein +[Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos +[Computer Networking: A Top-Down Approach (6th Edition)](http://www.chegg.com/textbooks/computer-networking-6th-edition-9780132856201-0132856204) | James F Kurose, Keith W Ross +[Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides +[Refactoring](https://www.refactoring.com/) | Martin Fowler +[The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) +[Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman +[Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall +[Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) +[Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) +[The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) +[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) +[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman +[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans +[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur +[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson +[Grinstead and Snell’s Introduction to Probability](https://math.dartmouth.edu/~prob/prob/prob.pdf) |Charles M. Grinstead, J. Laurie Snell +[Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth +[Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville +[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber \ No newline at end of file