Là một lập trình viên tự học, làm thế nào để tôi có được nền tảng học thuật mà không phải đi học lại? [đóng cửa]


30

Tôi đã có một cuộc sống khá tốt khi là một lập trình viên tự học, nhưng khi tôi thấy rằng tôi thảo luận về một số chủ đề cơ bản cấp thấp với các đồng nghiệp có bằng CS, lỗ hổng xuất hiện trong kiến ​​thức của tôi. Tôi là một chàng trai có kiến ​​trúc (kiến trúc) lớn, vì vậy trong một thời gian dài, điều này không làm phiền tôi, nhưng gần đây tôi đã tự hỏi liệu có một cách tiếp cận nào tôi có thể thực hiện để giúp tôi học những nguyên tắc cơ bản này mà không phải đi học lại không? Có những cuốn sách, trang web hoặc video mà bạn có thể đề xuất sẽ mang lại cho tôi một viễn cảnh hoàn toàn trái ngược với việc học nó khi bạn cần nó không?


2
Đây là một câu hỏi tuyệt vời. Tôi đã có những vấn đề tương tự.
Cướp

Câu trả lời:


29

Điều này phải giữ cho bạn bận rộn trong một vài tuần:

Kỹ thuật điện và Khoa học máy tính | MIT OpenC thảoWare | Tài liệu khóa học trực tuyến miễn phí

Course #    Course Title
6.00SC  Introduction to Computer Science and Programming (Spring 2011)  Undergraduate
6.00    Introduction to Computer Science and Programming (Fall 2008) 
6.01SC  Introduction to Electrical Engineering and Computer Science I 
6.001   Structure and Interpretation of Computer Programs 
6.002   Circuits and Electronics 
6.003   Signals and Systems 
6.004   Computation Structures 
6.005   Elements of Software Construction (Fall 2011) 
6.005   Elements of Software Construction (Fall 2008) 
6.006   Introduction to Algorithms (Fall 2011) 
6.006   Introduction to Algorithms (Spring 2008) 
6.007   Electromagnetic Energy: From Motors to Lasers 
6.011   Introduction to Communication, Control, and Signal Processing (Spring 2010) 
6.011   Introduction to Communication, Control, and Signal Processing (Spring 2004) 
6.012   Microelectronic Devices and Circuits (Spring 2009) 
6.012   Microelectronic Devices and Circuits (Fall 2009) 
6.012   Microelectronic Devices and Circuits (Fall 2005) 
6.013   Electromagnetics and Applications (Spring 2009) 
6.013   Electromagnetics and Applications (Fall 2005) 
6.021J  Quantitative Physiology: Cells and Tissues (Fall 2004) 
6.022J  Quantitative Physiology: Organ Transport Systems 
6.023J  Fields, Forces and Flows in Biological Systems 
6.024J  Molecular, Cellular, and Tissue Biomechanics 
6.025J  Introduction to Bioengineering (BE.010J) 
6.033   Computer System Engineering 
6.034   Artificial Intelligence (Fall 2010) 
6.034   Artificial Intelligence (Spring 2005) 
6.035   Computer Language Engineering 
6.035   Computer Language Engineering (SMA 5502) 
6.041   Probabilistic Systems Analysis and Applied Probability (Fall 2010) 
6.041   Probabilistic Systems Analysis and Applied Probability (Spring 2006) 
6.042J  Mathematics for Computer Science (Spring 2010) 
6.042J  Mathematics for Computer Science (Fall 2010) 
6.042J  Mathematics for Computer Science (Spring 2005) 
6.042J  Mathematics for Computer Science (Fall 2005) 
6.045J  Automata, Computability, and Complexity 
6.046J  Introduction to Algorithms (SMA 5503) 
6.047   Computational Biology: Genomes, Networks, Evolution (Fall 2008) 
6.050J  Information and Entropy 
6.055J  The Art of Approximation in Science and Engineering 
6.061   Introduction to Electric Power Systems (Spring 2011) 
6.071J  Introduction to Electronics, Signals, and Measurement 
6.079   Introduction to Convex Optimization (Fall 2009) 
6.07J   Projects in Microscale Engineering for the Life Sciences 
6.080   Great Ideas in Theoretical Computer Science (Spring 2008) 
6.087   Practical Programming in C 
6.088   Introduction to C Memory Management and C++ Object-Oriented Programming 
6.089   Great Ideas in Theoretical Computer Science (Spring 2008) 
6.090   Building Programming Experience: A Lead-In to 6.001 
6.091   Hands-On Introduction to Electrical Engineering Lab Skills 
6.092   Introduction to Programming in Java 
6.092   Java Preparation for 6.170 
6.092   Bioinformatics and Proteomics 
6.094   Introduction to MATLAB 
6.096   Introduction to C++ 
6.096   Algorithms for Computational Biology 
6.097   Fundamentals of Photonics: Quantum Electronics (Spring 2006) 
6.099   Street-Fighting Mathematics 
6.101   Introductory Analog Electronics Laboratory 
6.111   Introductory Digital Systems Laboratory (Spring 2006) 
6.111   Introductory Digital Systems Laboratory (Fall 2002) 
6.152J  Micro/Nano Processing Technology 
6.161   Modern Optics Project Laboratory (Fall 2005) 
6.163   Strobe Project Laboratory 
6.170   Laboratory in Software Engineering 
6.171   Software Engineering for Web Applications 
6.172   Performance Engineering of Software Systems 
6.186   Mobile Autonomous Systems Laboratory 
6.189   A Gentle Introduction to Programming Using Python (January IAP 2011) 
6.189   A Gentle Introduction to Programming Using Python (January IAP 2008) 
6.189   Multicore Programming Primer 
6.207J  Networks 
6.270   Autonomous Robot Design Competition 
6.338J  Parallel Computing 
6.370   Robocraft Programming Competition 
6.431   Probabilistic Systems Analysis and Applied Probability (Fall 2010) 
6.521J  Quantitative Physiology: Cells and Tissues (Fall 2004) 
6.637   Modern Optics Project Laboratory (Fall 2005) 
6.701   Introduction to Nanoelectronics (Spring 2010) 
6.801   Machine Vision (Fall 2004) 
6.803   The Human Intelligence Enterprise (Spring 2006) 
6.803   The Human Intelligence Enterprise (Spring 2002) 
6.804J  Computational Cognitive Science 
6.805   Ethics and the Law on the Electronic Frontier (Fall 2005) 
6.806   Ethics and the Law on the Electronic Frontier (Fall 2005) 
6.813   User Interface Design and Implementation (Spring 2011) 
6.814   Database Systems (Fall 2010) 
6.830   Database Systems (Fall 2010) 
6.831   User Interface Design and Implementation (Spring 2011) 
6.837   Computer Graphics 
6.857   Network and Computer Security 
6.901   Inventions and Patents 
6.911   Transcribing Prosodic Structure of Spoken Utterances with ToBI 
6.912   Introduction to Copyright Law 
6.930   Management in Engineering 
6.974   Fundamentals of Photonics: Quantum Electronics (Spring 2006) 
6.976   NextLab I: Designing Mobile Technologies for the Next Billion Users 
6.S096  Introduction to C and C++ 
6.231   Dynamic Programming and Stochastic Control 
6.241J  Dynamic Systems and Control 
6.243J  Dynamics of Nonlinear Systems 
6.245   Multivariable Control Systems 
6.251J  Introduction to Mathematical Programming 
6.252J  Nonlinear Programming (Spring 2004) 
6.252J  Nonlinear Programming (Spring 2003) 
6.253   Convex Analysis and Optimization 
6.254   Game Theory with Engineering Applications 
6.255J  Optimization Methods 
6.262   Discrete Stochastic Processes 
6.263J  Data Communication Networks 
6.264J  Queues: Theory and Applications 
6.281J  Logistical and Transportation Planning Methods (Fall 2006) 
6.281J  Logistical and Transportation Planning Methods (Fall 2004) 
6.301   Solid-State Circuits 
6.302   Feedback Systems 
6.331   Advanced Circuit Techniques 
6.334   Power Electronics 
6.336J  Introduction to Numerical Simulation (SMA 5211) 
6.337J  Introduction to Numerical Methods 
6.339J  Numerical Methods for Partial Differential Equations (SMA 5212) 
6.341   Discrete-Time Signal Processing 
6.345   Automatic Speech Recognition 
6.374   Analysis and Design of Digital Integrated Circuits 
6.431   Probabilistic Systems Analysis and Applied Probability (Spring 2006) 
6.432   Stochastic Processes, Detection, and Estimation 
6.435   System Identification 
6.436J  Fundamentals of Probability 
6.441   Information Theory 
6.443J  Quantum Information Science 
6.450   Principles of Digital Communication I 
6.450   Principles of Digital Communications I 
6.451   Principles of Digital Communication II 
6.452   Principles of Wireless Communications 
6.453   Quantum Optical Communication 
6.524J  Molecular, Cellular and Tissue Biomechanics (BE.410J) 
6.541J  Speech Communication 
6.542J  Laboratory on the Physiology, Acoustics, and Perception of Speech 
6.543J  The Lexicon and Its Features 
6.551J  Acoustics of Speech and Hearing 
6.555J  Biomedical Signal and Image Processing 
6.561J  Fields, Forces, and Flows in Biological Systems (BE.430J) 
6.581J  Foundations of Algorithms and Computational Techniques in Systems Biology 
6.630   Electromagnetics 
6.632   Electromagnetic Wave Theory 
6.635   Advanced Electromagnetism 
6.637   Optical Signals, Devices, and Systems 
6.641   Electromagnetic Fields, Forces, and Motion (Spring 2009) 
6.641   Electromagnetic Fields, Forces, and Motion (Spring 2005) 
6.642   Continuum Electromechanics 
6.651J  Introduction to Plasma Physics I (Fall 2006) 
6.651J  Introduction to Plasma Physics I (Fall 2003) 
6.661   Receivers, Antennas, and Signals 
6.685   Electric Machines 
6.690   Introduction to Electric Power Systems (Spring 2011) 
6.691   Seminar in Electric Power Systems 
6.695   Engineering, Economics and Regulation of the Electric Power Sector (Spring 2010) 
6.719   Introduction to Nanoelectronics (Spring 2010) 
6.720J  Integrated Microelectronic Devices 
6.728   Applied Quantum and Statistical Physics 
6.730   Physics for Solid-State Applications 
6.763   Applied Superconductivity 
6.772   Compound Semiconductor Devices 
6.774   Physics of Microfabrication: Front End Processing 
6.776   High Speed Communication Circuits 
6.777J  Design and Fabrication of Microelectromechanical Devices 
6.780   Semiconductor Manufacturing 
6.780J  Control of Manufacturing Processes (SMA 6303) 
6.781J  Submicrometer and Nanometer Technology 
6.821   Programming Languages 
6.823   Computer System Architecture 
6.824   Distributed Computer Systems Engineering 
6.825   Techniques in Artificial Intelligence (SMA 5504) 
6.826   Principles of Computer Systems 
6.827   Multithreaded Parallelism: Languages and Compilers 
6.828   Operating System Engineering 
6.829   Computer Networks 
6.832   Underactuated Robotics 
6.833   The Human Intelligence Enterprise (Spring 2006) 
6.833   The Human Intelligence Enterprise (Spring 2002) 
6.834J  Cognitive Robotics 
6.838   Algorithms for Computer Animation 
6.840J  Theory of Computation 
6.841J  Advanced Complexity Theory 
6.844   Computability Theory of and with Scheme 
6.845   Quantum Complexity Theory 
6.851   Advanced Data Structures 
6.852J  Distributed Algorithms 
6.854J  Advanced Algorithms (Fall 2008) 
6.854J  Advanced Algorithms (Fall 2005) 
6.855J  Network Optimization 
6.856J  Randomized Algorithms 
6.859J  Integer Programming and Combinatorial Optimization 
6.863J  Natural Language and the Computer Representation of Knowledge 
6.864   Advanced Natural Language Processing 
6.866   Machine Vision (Fall 2004) 
6.867   Machine Learning 
6.868J  The Society of Mind 
6.871   Knowledge-Based Applications Systems 
6.872   Biomedical Computing 
6.872J  Medical Computing 
6.873J  Medical Decision Support (Fall 2005) 
6.873J  Medical Decision Support (Spring 2003) 
6.874J  Computational Functional Genomics 
6.875   Cryptography and Cryptanalysis 
6.876J  Advanced Topics in Cryptography 
6.877J  Computational Evolutionary Biology (Fall 2005) 
6.878   Computational Biology: Genomes, Networks, Evolution (Fall 2008) 
6.881   Representation and Modeling for Image Analysis 
6.883   Pervasive Human Centric Computing (SMA 5508) 
6.883   Program Analysis 
6.884   Complex Digital Systems 
6.891   Computational Evolutionary Biology (Fall 2004) 
6.892   Computational Models of Discourse 
6.895   Essential Coding Theory 
6.895   Theory of Parallel Systems (SMA 5509) 
6.896   Theory of Parallel Hardware (SMA 5511) 
6.897   Selected Topics in Cryptography 
6.931   Development of Inventions and Creative Ideas 
6.933J  The Structure of Engineering Revolutions 
6.938   Engineering Risk-Benefit Analysis 
6.945   Adventures in Advanced Symbolic Programming 
6.946J  Classical Mechanics: A Computational Approach 
6.971   Biomedical Devices Design Laboratory 
6.972   Algebraic Techniques and Semidefinite Optimization 
6.973   Communication System Design 
6.973   Organic Optoelectronics 
6.974   Engineering, Economics and Regulation of the Electric Power Sector (Spring 2010) 
6.975   Introduction to Convex Optimization (Fall 2009) 
6.976   High Speed Communication Circuits and Systems 
6.977   Ultrafast Optics 
6.977   Semiconductor Optoelectronics: Theory and Design 
6.978J  Communications and Information Policy 
6.982J  Teaching College-Level Science and Engineering (Fall 2012) 
6.982J  Teaching College-Level Science and Engineering (Spring 2009) 

@hal - Nhìn vào các ghi chú bài giảng kèm theo các khóa học. Những điều này sẽ giúp chỉ cho bạn đi đúng hướng.
jmort253

1
Tôi đang xem video thứ hai ... Tôi không thể chờ đợi để xem toàn bộ loạt phim và bắt đầu xem nhiều hơn ... cảm ơn!

4

Vì tôi học được rất nhiều từ sách, tôi có xu hướng suy nghĩ về mặt sách.

Có một số cuốn sách hay để tìm hiểu về những điều cơ bản của nghề lập trình. Ở đầu danh sách, tôi sẽ đặt:

  • Mã hoàn thành, Edn 2

Nó chủ yếu là ngôn ngữ bất khả tri, và nó giải thích lý do tại sao và do đó rất dễ tiếp cận, và bao gồm rất nhiều nền tảng trong các trang của nó.

Tôi thích một vài cuốn sách nói chung khác - nền tảng của tôi mang đến cho tôi một thiên hướng Unix mạnh mẽ:

  • Thực hành lập trình
  • Nghệ thuật lập trình UNIX

Mặc dù "Nghệ thuật lập trình máy tính" của Knuth về nhiều mặt xuất sắc, nó cũng là một bộ sách đáng để đọc.

Bạn có thể xem một số cuốn sách về thuật toán một cách hữu ích - có rất nhiều.

Sau đó, nó phụ thuộc vào lĩnh vực chính của bạn quan tâm và nhiệm vụ chuyên môn nằm ở đâu. Những gì phù hợp phụ thuộc vào nơi bạn cần chuyên môn. Bạn có thể muốn xem "Giới thiệu về hệ thống cơ sở dữ liệu" của CJ Date, như một nền tảng chung về cơ sở dữ liệu quan hệ.

Các ứng cử viên khác có thể:

  • Mẫu thiết kế
  • Tái cấu trúc
  • Mã sạch

Theo một hướng khác, "Nguyên tắc cơ bản về phần mềm: Các giấy tờ được thu thập của David L Parnas" là một cách đọc thú vị - nhưng có lẽ không nằm ở đầu danh sách ưu tiên của bạn.


+1 Phải đồng ý. Có một chủ đề tham khảo tuyệt vời về SO chứa khá nhiều tất cả các nhóm trên: stackoverflow.com/questions/1711/ mẹo
John Parker


1

Dưới đây là danh sách các cổng thông tin học tập trực tuyến nổi tiếng nhất (kiểm tra danh mục khoa học máy tính):

xin lưu ý rằng các khóa học được nghĩ bởi các trường đại học hàng đầu thế giới như MIT, Stanford, ... và bạn có thể có chứng chỉ để vượt qua các khóa học sau khi tham gia kỳ thi giữa kỳ, cuối kỳ thực sự và chắc chắn nộp bài tập về nhà;)

nó có thể khiến bạn bận rộn trong vài năm :)

Đối với MIT OpenCourseWare edx có thể là người kế nhiệm như MIT có nhiều lớp học đó!

Nhìn chung, hiện nay có một xu hướng từ các trường đại học về việc cung cấp các khóa học chất lượng cao trực tuyến miễn phí hoặc chi phí rất thấp. kiểm tra mục wikipedia này .


0

Có một số cuốn sách và chủ đề tôi cho là rất tốt. Có rất nhiều người khác, nhưng những điều này sẽ giúp bạn đi một chặng đường dài hướng tới một nền giáo dục CS vững chắc. Tôi đã xem những cuốn sách khác về những chủ đề này, và những cuốn sách này - IMO - cung cấp độ sâu cần thiết cho việc xem xét chu đáo vấn đề, ở cấp độ chuyên nghiệp.

Thuật toán của Corman

AI của Russel & Norvig : Cách tiếp cận hiện đại

Thiết kế kỹ thuật số của Money & Harris .

Giới thiệu về lý thuyết tự động của Hopcroft & Ullman

Aho, Ullman, Trình biên dịch của Sethi , hay còn gọi là "Cuốn sách rồng"

Không có cuốn sách nào trong số này là những cuốn sách Apress tiêu hóa nhanh hay thân thiện dễ chịu. Đó không phải là mục đích của họ. Họ không thực sự đi kèm với rất nhiều mã (ngoại trừ là Thiết kế kỹ thuật số, dành cho sinh viên năm hai, không phải người cao niên), nhưng thường đi kèm với một lượng toán học khá lớn. Khó hiểu tăng lên theo cấp số nhân khi di chuyển vào những điều sâu sắc hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.