Advertisement
Guest User

Untitled

a guest
Dec 28th, 2015
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.91 KB | None | 0 0
  1. Computer Science
  2.  
  3. Where to Start
  4. --------------------------------------------
  5.  
  6. Friedman, The Little Schemer
  7. K&R, The C Programming Languaage
  8. Graham, ANSI Common Lisp
  9. SICP
  10. Bloch, Effective Java
  11. Sedgewick, Algorithms
  12.  
  13. =============================================
  14. What languages people learn first
  15.  
  16. Traditional Route:
  17. C -> Java -> Other (Clojure, Go/Rust, C#, D)
  18.  
  19. Used to be
  20. C -> C++, but Java replaced C++ because C++
  21. gained too much complexity
  22.  
  23. MIT Route:
  24. LISP -> Java -> C
  25.  
  26. Modern Route:
  27. Python -> Java / C#
  28.  
  29. =============================================
  30.  
  31. Ideal CS Ciriculum
  32. --------------------------------------------
  33.  
  34. ~~~Fall 1~~~
  35. Calculus I
  36. Intro to Proofs and Abstract Mathematics
  37. Physics I
  38. Intro to Programming
  39. Technical Writing
  40.  
  41. ~~~Spring 1~~~
  42. Calculus II
  43. Matrix Algebra
  44. Physics II
  45. Digital Logic and Automata
  46. Data Structures
  47.  
  48. ~~~Fall 2~~~
  49. Vector Calculus
  50. Physics III
  51. Electrical Engineering Fundamentals
  52. Computer Architecture
  53. Algorithm I
  54.  
  55. ~~~Spring 2~~~
  56. Ordinary Differential Equations
  57. Probability and Statistics
  58. Parallel, Distributed, and GPU Programming
  59. Operating Systems
  60. Algorithm II
  61.  
  62. ~~~Fall 3~~~
  63. Numerical Analysis I
  64. Combinatorics and Graph Theory I
  65. Mathematical Logic
  66. Digital Signal Processing
  67. Programming Languages and Compilers I
  68.  
  69. ~~~Spring 3~~~
  70. Numerical Analysis II
  71. Combinatorics and Graph Theory II
  72. College Geometry
  73. Computability and Complexity Theory
  74. Compilers II
  75. Database Theory (Seminar)
  76.  
  77. ~~~Fall 4~~~
  78. Abstract Algebra
  79. Classical Number Theory
  80. Computer Graphics and Vision
  81. Artificial Intelligence and Machine Learning
  82. Internet, Networks and Communication Systems
  83. Professionalism, Ethics, and Conduct (Seminar)
  84.  
  85. ~~~Spring 4~~~
  86. Linear Programming and Optimization
  87. Computer Security and Cryptography
  88. FPGAs, Microcontrollers and Driver Development
  89. Software Engineering Essentials
  90. Principles of Economics
  91. Personal Grooming and Hygiene (Seminar)
  92.  
  93. Alternative
  94. --------------------------------------------
  95.  
  96. 1st semester
  97. >Unix Introduction
  98. >C Introduction
  99. >Essential Data Structures: Linked Lists, Binary Trees, and Hash Tables in C
  100. >Essential Algorithms: Sorting and Searching
  101. >Project Management and Maintenance
  102. >textbooks: The UNIX Programming Environment, Programming in C; The Practice of Programming
  103.  
  104. 2nd semester
  105. >Scheme Introduction
  106. >SICP
  107. >textbook: Structure and Interpretation of Computer Programs
  108.  
  109. 3rd semester
  110. >Concurrent Programming in Go
  111. >Network Programming in Go
  112. >Graphs and Why You'd Want Them
  113. >Using yacc
  114. >Parsing and Interpreting Non-Metacircularly
  115.  
  116.  
  117.  
  118.  
  119. Computer Engineering
  120.  
  121. Algorithm Design and Analysis: Either
  122. Algorithms by Dasgupta et al,
  123. Algorithm Design by Kleinberg and Tardos,
  124. Introduction to Algorithms by Cormen et al,
  125. Introduction to Algorithms: A Creative Approach by Manber.
  126. Artificial Intelligence: Either
  127. Artificial Intelligence, a Modern Approach by Russell and Norvig,
  128. Paradigms of Artificial Intelligence Programming by Norvig.
  129. Automata Theory: Either
  130. Applied Combinatorics on Words by Lothaire,
  131. Automata Theory, Languages, and Computation by Hopcroft et al,
  132. Formal Language: A Practical Introduction by Webber,
  133. Introduction to the Theory of Computation by Sipser,
  134. Languages and Machines: An Introduction to the Theory of Computer Science by Sudkamp.
  135. Category Theory: Either
  136. Abstract and Concrete Categories: The Joy of Cats by Adamek et al,
  137. Category Theory by Awodey,
  138. Category Theory for Computer Scientists by Pierce.
  139. Compilers: Either
  140. Compilers: Principles, Techniques and Tools by Aho et al,
  141. Engineering a Compiler by Cooper and Torczon,
  142. Modern Compiler Implementation by Appel.
  143. Computability Theory: Either
  144. Computability and Logic by Boolos and Jeffrey,
  145. Introduction to the Theory of Computation by Sipser.
  146. Computational Geometry: Computational Geometry: Algorithms and Applications by de Berg et al.
  147. Computer Architecture: Either
  148. Computer Architecture - A Quantitative Approach by Patterson and Hennessy.
  149. Computer Organization by Hamacher et al,
  150. Computer Systems - A Programmer's Perspective by Bryant and O'Hallaran,
  151. Structured Computer Organization by Tanenbaum.
  152. Computer Graphics: Either
  153. Computer Graphics: Principles and Practice by Foley et al,
  154. Fundamentals of Computer Graphics by Shirley and Marschner,
  155. Real-Time Rendering by Akenine-Moller et al.
  156. Computer Vision: Either
  157. Computer Vision: Algorithms and Applications by Szeliski,
  158. Computer Vision - A Modern Approach by Forsyth,
  159. Machine Vision: Theory, Algorithms, Practicalities by Davies.
  160. Cryptography: Either
  161. Cryptography Engineering by Schneier et al,
  162. Modern Cryptography by Katz and Lindell.
  163. Database Theory: Either
  164. Database Management Systems by Ramakrishnan and Gehrke,
  165. Database Systems: The Complete Book by Garcia-Molina et al.
  166. Distributed Programming: Either
  167. Distributed Systems: Concepts and Design by Dollimore et al,
  168. Introduction to Reliable Distributed Programming by Guerraoui and Rodrigues,
  169. Principles of Concurrent and Distributed Programming" by Ben-Ari.
  170. Functional Programming: Either
  171. Introduction to Functional Programming using Haskell by Bird and Wadler,
  172. Learn You a Haskell for Great Good by Lipovaca,
  173. The Little Schemer and The Seasoned Schemer by Friedman and Felleisen,
  174. ML for the Working Programmer by Paulson,
  175. Structure and Interpretation of Computer Programs by Abelson et al.
  176. General Logic: Either
  177. Logic for Computer Science: Modelling and Reasoning About Systems by Huth and Ryan,
  178. Mathematical Logic for Computer Scientists by Ben-Ari.
  179. Human-Computer Interaction: Designing the User Interface: Strategies for Effective Human-Computer Interaction by Shneiderman.
  180. Information Theory: Either
  181. Information Theory by Cover and Thomas,
  182. Information Theory and Reliable Communication by Gallager.
  183. Information Theory, Inference, and Learning Algorithms by MacKay.
  184. Intractability: Either
  185. Computational Complexity by Papadimitriou,
  186. Computational Complexity: A Modern Approach by Arora and Barak,
  187. Introduction to the Theory of Computation by Sipser.
  188. Lambda Calculus: Lambda Calculi: A Guide for Computer Scientists by Hankin.
  189. Logic Programming: Either
  190. Prolog Programming for Artificial Intelligence by Bratko,
  191. The Art of Prolog: Advanced Programming Techniques by Shapiro.
  192. Machine Learning: Either
  193. Bayesian Reasoning and Machine Learning by Barber,
  194. Data Mining: Practical Machine Learning Tools and Techniques, by Witten and Frank,
  195. The Elements of Statistical Learning: Data Mining, Inference, and Prediction by Hastie et al,
  196. Introduction to Machine Learning by Alpaydin,
  197. Machine Learning by Mitchell,
  198. Mining of Massive Datasets by Ullman and Rajamaran,
  199. Pattern Recognition and Machine Learning by Bishop and Pattern Classification by Duda and Hart.
  200. Natural Language Processing: Either
  201. Foundations of Statistical Natural Language Processing by Manning and Schutze,
  202. Speech and Language Processing by Jurafsky and Martin.
  203. Networks: Either
  204. Computer Networking by Kurose and Ross,
  205. Computer Networks by Tanenbaum and Wetherall.
  206. Numerical Methods: Numerical Recipes in C: The Art of Scientific Computing by Press et al.
  207. OO Program Design: Design Patterns, Elements of Reusable Object-Oriented Software by Gamma et al.
  208. Operating Systems: Operating System Design and Implementation by Tanenbaum.
  209. Operations Research: Either
  210. Convex Optimization by Boyd and Vandenberghe,
  211. Linear Programming and Network Flows by Bazaraa et al.
  212. Pi Calculus: Communicating and Mobile Processes: The Pi Calculus by Milner.
  213. Program Analysis: Principles of Program Analysis by Nielson et al.
  214. Programming Language Concepts and Design: Either
  215. Concepts, Techniques and Models of Computer Programming by Van Roy and Haridi,
  216. Essentials of Programming Languages by Friedman et al,
  217. Modern Programming Languages: A Practical Introduction by Webber,
  218. Programming Languages: Application and Interpretation by Krishnamurthi.
  219. Programming Language Pragmatics by Scott.
  220. Programming Language Semantics: Either
  221. Formal Semantics of Programming Languages by Winskel,
  222. Foundations for Programming Languages by Mitchell,
  223. Semantics Engineering with PLT Redex by Felleisen,
  224. Semantics of Programming Languages: Structures and Techniques by Gunter.
  225. Quantum Computation: Quantum Computation and Quantum Information by Nielson and Chuang.
  226. Randomized Algorithm Design and Analysis: Either
  227. Randomized Algorithms by Motwani and Raghavan,
  228. Probability and Computing, Randomized Algorithms and Probabilistic Analysis by Mitzenmacher and Upfal.
  229. Security Engineering: Security Engineering by Anderson.
  230. Software Engineering: Software Engineering by Sommerville.
  231. Term Rewriting: Term Rewriting and All That by Baader and Nipkow.
  232. Type Theory: Either
  233. Foundations for Programming Languages by Mitchell,
  234. Types and Programming Languages by Pierce.
  235.  
  236. General useful reference works for programmers on the art, science and methodology of engineering programs:
  237.  
  238. Code Complete: A Practical Handbook of Software Construction by McConnell,
  239. Crystal Clear: A Human Powered Methodology for Small Teams by Cockburn,
  240. How to Design Programs by Felleisen et al,
  241. The Mythical Man Month by Brooks,
  242. The Pragmatic Programmer by Hunt and Thomas,
  243. Refactoring: Improving the Design of Existing Code by Fowler et al,
  244. Why Programs Fail: A Guide to Systematic Debugging by Zeller.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement