Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Computer Science
- Where to Start
- --------------------------------------------
- Friedman, The Little Schemer
- K&R, The C Programming Languaage
- Graham, ANSI Common Lisp
- SICP
- Bloch, Effective Java
- Sedgewick, Algorithms
- =============================================
- What languages people learn first
- Traditional Route:
- C -> Java -> Other (Clojure, Go/Rust, C#, D)
- Used to be
- C -> C++, but Java replaced C++ because C++
- gained too much complexity
- MIT Route:
- LISP -> Java -> C
- Modern Route:
- Python -> Java / C#
- =============================================
- Ideal CS Ciriculum
- --------------------------------------------
- ~~~Fall 1~~~
- Calculus I
- Intro to Proofs and Abstract Mathematics
- Physics I
- Intro to Programming
- Technical Writing
- ~~~Spring 1~~~
- Calculus II
- Matrix Algebra
- Physics II
- Digital Logic and Automata
- Data Structures
- ~~~Fall 2~~~
- Vector Calculus
- Physics III
- Electrical Engineering Fundamentals
- Computer Architecture
- Algorithm I
- ~~~Spring 2~~~
- Ordinary Differential Equations
- Probability and Statistics
- Parallel, Distributed, and GPU Programming
- Operating Systems
- Algorithm II
- ~~~Fall 3~~~
- Numerical Analysis I
- Combinatorics and Graph Theory I
- Mathematical Logic
- Digital Signal Processing
- Programming Languages and Compilers I
- ~~~Spring 3~~~
- Numerical Analysis II
- Combinatorics and Graph Theory II
- College Geometry
- Computability and Complexity Theory
- Compilers II
- Database Theory (Seminar)
- ~~~Fall 4~~~
- Abstract Algebra
- Classical Number Theory
- Computer Graphics and Vision
- Artificial Intelligence and Machine Learning
- Internet, Networks and Communication Systems
- Professionalism, Ethics, and Conduct (Seminar)
- ~~~Spring 4~~~
- Linear Programming and Optimization
- Computer Security and Cryptography
- FPGAs, Microcontrollers and Driver Development
- Software Engineering Essentials
- Principles of Economics
- Personal Grooming and Hygiene (Seminar)
- Alternative
- --------------------------------------------
- 1st semester
- >Unix Introduction
- >C Introduction
- >Essential Data Structures: Linked Lists, Binary Trees, and Hash Tables in C
- >Essential Algorithms: Sorting and Searching
- >Project Management and Maintenance
- >textbooks: The UNIX Programming Environment, Programming in C; The Practice of Programming
- 2nd semester
- >Scheme Introduction
- >SICP
- >textbook: Structure and Interpretation of Computer Programs
- 3rd semester
- >Concurrent Programming in Go
- >Network Programming in Go
- >Graphs and Why You'd Want Them
- >Using yacc
- >Parsing and Interpreting Non-Metacircularly
- Computer Engineering
- Algorithm Design and Analysis: Either
- Algorithms by Dasgupta et al,
- Algorithm Design by Kleinberg and Tardos,
- Introduction to Algorithms by Cormen et al,
- Introduction to Algorithms: A Creative Approach by Manber.
- Artificial Intelligence: Either
- Artificial Intelligence, a Modern Approach by Russell and Norvig,
- Paradigms of Artificial Intelligence Programming by Norvig.
- Automata Theory: Either
- Applied Combinatorics on Words by Lothaire,
- Automata Theory, Languages, and Computation by Hopcroft et al,
- Formal Language: A Practical Introduction by Webber,
- Introduction to the Theory of Computation by Sipser,
- Languages and Machines: An Introduction to the Theory of Computer Science by Sudkamp.
- Category Theory: Either
- Abstract and Concrete Categories: The Joy of Cats by Adamek et al,
- Category Theory by Awodey,
- Category Theory for Computer Scientists by Pierce.
- Compilers: Either
- Compilers: Principles, Techniques and Tools by Aho et al,
- Engineering a Compiler by Cooper and Torczon,
- Modern Compiler Implementation by Appel.
- Computability Theory: Either
- Computability and Logic by Boolos and Jeffrey,
- Introduction to the Theory of Computation by Sipser.
- Computational Geometry: Computational Geometry: Algorithms and Applications by de Berg et al.
- Computer Architecture: Either
- Computer Architecture - A Quantitative Approach by Patterson and Hennessy.
- Computer Organization by Hamacher et al,
- Computer Systems - A Programmer's Perspective by Bryant and O'Hallaran,
- Structured Computer Organization by Tanenbaum.
- Computer Graphics: Either
- Computer Graphics: Principles and Practice by Foley et al,
- Fundamentals of Computer Graphics by Shirley and Marschner,
- Real-Time Rendering by Akenine-Moller et al.
- Computer Vision: Either
- Computer Vision: Algorithms and Applications by Szeliski,
- Computer Vision - A Modern Approach by Forsyth,
- Machine Vision: Theory, Algorithms, Practicalities by Davies.
- Cryptography: Either
- Cryptography Engineering by Schneier et al,
- Modern Cryptography by Katz and Lindell.
- Database Theory: Either
- Database Management Systems by Ramakrishnan and Gehrke,
- Database Systems: The Complete Book by Garcia-Molina et al.
- Distributed Programming: Either
- Distributed Systems: Concepts and Design by Dollimore et al,
- Introduction to Reliable Distributed Programming by Guerraoui and Rodrigues,
- Principles of Concurrent and Distributed Programming" by Ben-Ari.
- Functional Programming: Either
- Introduction to Functional Programming using Haskell by Bird and Wadler,
- Learn You a Haskell for Great Good by Lipovaca,
- The Little Schemer and The Seasoned Schemer by Friedman and Felleisen,
- ML for the Working Programmer by Paulson,
- Structure and Interpretation of Computer Programs by Abelson et al.
- General Logic: Either
- Logic for Computer Science: Modelling and Reasoning About Systems by Huth and Ryan,
- Mathematical Logic for Computer Scientists by Ben-Ari.
- Human-Computer Interaction: Designing the User Interface: Strategies for Effective Human-Computer Interaction by Shneiderman.
- Information Theory: Either
- Information Theory by Cover and Thomas,
- Information Theory and Reliable Communication by Gallager.
- Information Theory, Inference, and Learning Algorithms by MacKay.
- Intractability: Either
- Computational Complexity by Papadimitriou,
- Computational Complexity: A Modern Approach by Arora and Barak,
- Introduction to the Theory of Computation by Sipser.
- Lambda Calculus: Lambda Calculi: A Guide for Computer Scientists by Hankin.
- Logic Programming: Either
- Prolog Programming for Artificial Intelligence by Bratko,
- The Art of Prolog: Advanced Programming Techniques by Shapiro.
- Machine Learning: Either
- Bayesian Reasoning and Machine Learning by Barber,
- Data Mining: Practical Machine Learning Tools and Techniques, by Witten and Frank,
- The Elements of Statistical Learning: Data Mining, Inference, and Prediction by Hastie et al,
- Introduction to Machine Learning by Alpaydin,
- Machine Learning by Mitchell,
- Mining of Massive Datasets by Ullman and Rajamaran,
- Pattern Recognition and Machine Learning by Bishop and Pattern Classification by Duda and Hart.
- Natural Language Processing: Either
- Foundations of Statistical Natural Language Processing by Manning and Schutze,
- Speech and Language Processing by Jurafsky and Martin.
- Networks: Either
- Computer Networking by Kurose and Ross,
- Computer Networks by Tanenbaum and Wetherall.
- Numerical Methods: Numerical Recipes in C: The Art of Scientific Computing by Press et al.
- OO Program Design: Design Patterns, Elements of Reusable Object-Oriented Software by Gamma et al.
- Operating Systems: Operating System Design and Implementation by Tanenbaum.
- Operations Research: Either
- Convex Optimization by Boyd and Vandenberghe,
- Linear Programming and Network Flows by Bazaraa et al.
- Pi Calculus: Communicating and Mobile Processes: The Pi Calculus by Milner.
- Program Analysis: Principles of Program Analysis by Nielson et al.
- Programming Language Concepts and Design: Either
- Concepts, Techniques and Models of Computer Programming by Van Roy and Haridi,
- Essentials of Programming Languages by Friedman et al,
- Modern Programming Languages: A Practical Introduction by Webber,
- Programming Languages: Application and Interpretation by Krishnamurthi.
- Programming Language Pragmatics by Scott.
- Programming Language Semantics: Either
- Formal Semantics of Programming Languages by Winskel,
- Foundations for Programming Languages by Mitchell,
- Semantics Engineering with PLT Redex by Felleisen,
- Semantics of Programming Languages: Structures and Techniques by Gunter.
- Quantum Computation: Quantum Computation and Quantum Information by Nielson and Chuang.
- Randomized Algorithm Design and Analysis: Either
- Randomized Algorithms by Motwani and Raghavan,
- Probability and Computing, Randomized Algorithms and Probabilistic Analysis by Mitzenmacher and Upfal.
- Security Engineering: Security Engineering by Anderson.
- Software Engineering: Software Engineering by Sommerville.
- Term Rewriting: Term Rewriting and All That by Baader and Nipkow.
- Type Theory: Either
- Foundations for Programming Languages by Mitchell,
- Types and Programming Languages by Pierce.
- General useful reference works for programmers on the art, science and methodology of engineering programs:
- Code Complete: A Practical Handbook of Software Construction by McConnell,
- Crystal Clear: A Human Powered Methodology for Small Teams by Cockburn,
- How to Design Programs by Felleisen et al,
- The Mythical Man Month by Brooks,
- The Pragmatic Programmer by Hunt and Thomas,
- Refactoring: Improving the Design of Existing Code by Fowler et al,
- Why Programs Fail: A Guide to Systematic Debugging by Zeller.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement