The original post was based on a learning plan that I had worked out for myself after I jumped into the study of programming and computer science just over a year ago on something of a whim. As I’ve mentioned before, I do not have any formal background in computer science beyond the handful of courses from this list that I have worked through myself. However, I do have years of experience in teaching and in curriculum design for natural and foreign language acquisition at the college level, and consulted the computer science curricula from a number of universities around the country when putting the plan together.
The idea was not to provide a substitute for an actual college or university education (that would typically also require a large amount of alcohol at the very least, which, unfortunately, is not freely available online), but rather to aggregate resources that have been made freely available online from disparate institutions and organize them into the sort of logical structure one would likely find in a general bachelor’s level computer science program.
On the basis of the feedback from that post, we’ve put together a new list of course offerings that covers a lot more ground. In the process, I’ve also loosened up a number of implicit strictures on resources for inclusion in the present listing. For example, some of these courses require registration at a particular website and/or may not yet be available in full (ex. Coursera), a couple others are actually compiled from other resources freely available online (ex. Saylor). But all of them are still free.
Whereas the first post was intended to provide a general overview of the field along with a generic curriculum and necessary resources suitable for an absolute beginner (containing 27 courses altogether), the present listing is much more extensive and intensive in scope representing 72 courses from 30 different institutions. While we have added a number of new introductory level courses, there is a lot more that may be of interest to intermediate level folks and perhaps even some who are highly advanced and are considering a refresher course or two.
The course listing is broken down into three major divisions: Introductory Courses, Core Courses and Intermediate/Advanced Courses. Individual courses are then listed by category within each division.
Last but not least, thanks to everyone who provided feedback and offered suggestions on how to improve the original listing. Special thanks to Pablo Torre who provided a ton of links in the comments to the first post, many of which are included here.
Introductory Courses
Intro to Computer Science:
- Introduction to Computer Science and Programming: MIT
- Intensive Introduction to Computer Science: Harvard
- Introduction to Computer Science and Programming Methodology: Stanford
- Programming Abstractions (Second Course in Unit): Stanford
- Mathematics for Computer Science: MIT
- Discrete Mathematics: ArsDigita
- Programming 1: University of Toronto
- Programming 2: University of Toronto
- Introduction to the Theory of Computation: Stonehill
- Principles of Computing: Rice
Core Courses
Theory:
- Theory of Computation: UC Davis
- Theory of Computation: IIT Kanpur
- Efficient Algorithms and Intractable Problems: Berkeley
- Data Structures: Berkeley
- Linear Algebra through Computer Science Applications: Brown
- Discrete Math and Probability Theory: Berkeley
- Operating Systems and Systems Programming: Berkeley
- Introduction to Linux: edX
- Programming Paradigms: Stanford
- Object Oriented Programming: MIT
- Object Oriented Programming in C++: ITU
- Software Engineering: Berkeley
- Elements of Software Construction: MIT
- Computer Architecture: Carnegie Mellon
- Computer Architecture: Princeton
- Introduction to Databases: Stanford
- Introduction to Modern Database Systems: Saylor
- Fundamentals of Computer Networking: Manhattan College
- Introduction to Data Communications: Thammasat University
- Introduction to Cryptography: Ruhr University
- Introduction to IT Security: Thammasat University
- Introduction to Artificial Intelligence: Berkeley
Intermediate and Advanced Courses
Algorithms and Data Structures:
- Advanced Data Structures: MIT
- Analytic Combinatorics: Princeton
- Computer System Engineering: MIT
- The Hardware/Software Interface: University of Washington
- Design in Computing: UNSW
- Principles of Programming Languages: IIT
- C++ for C Programmers: UC Santa Cruz
- Heterogeneous Parallel Programming: University of Illinois
- Compilers: Stanford
- Mobile Software Engineering: Harvard
- Software Engineering for Scientific Computing: Berkeley
- Building Mobile Applications: Harvard
- iPhone Application Development: ITU
- Android Application Development: ITU
- Building Dynamic Websites: Harvard
- Introduction to Database Management Systems: KU Leuven University
- Database Management Systems: Ars Digita
- Advanced Databases: Saylor
- Security and Cryptography: Thammasat University
- Designing and Executing Information Security Strategies: University of Washington
- Information Security and Risk Management in Context: University of Washington
- Cryptography 1: Stanford
- Cryptography 2: Stanford
- Bilinear Pairings in Cryptography: BIU
- Artificial Intelligence: HRW
- Artificial Intelligence: Berkeley
- Machine Learning: Stanford
- Natural Language Processing: Columbia
- Natural Language Processing: Stanford
- Digital Image Processing: Purdue
- Computer Graphics: Berkeley
- Computer Graphics: ITU
- Computer Networks: University of Washington
- Internet Technologies and Applications: Thammasat University
- Statistics and Probability: Harvard
- Probabilistic Systems Analysis and Applied Probability: MIT
- Statistical Inference: Johns Hopkins
- Data Analysis and Statistical Inference: Duke
Source:http://blog.agupieware.com/2014/06/online-learning-intensive-bachelors.html
Tidak ada komentar:
Posting Komentar