Skip to content

Latest commit

 

History

History
108 lines (56 loc) · 8.13 KB

README.md

File metadata and controls

108 lines (56 loc) · 8.13 KB

Free-Online-CS-Course

Description

Universities have been putting great materials online in the past years. Learning a technical subject from online materials is not only possible, but has real advantages over attending a real university course. You can have your own private stable of the worlds best lecturers, available 24/7, for free.

About

I've been learning CS from online lectures since they stated to become available. Inspired by the format of prakhar1989's awesome courses list, I decided to make my own, but focusing on those courses which have video content and trying to follow the structure of a traditional university program.

Organisation

Universities

Stamford University is one of the most prestiduous universities in the US and plays a central role in Silicon Valley.

The university has put up three course Introduciton to Programming course online, along with some more advanced course that are worth a look.

University of California, Berkeley is one of the top US universities for CS. "Berkeley alumni nurtured a number of key technologies associated with the personal computer and the development of the Internet." (Wikipedia)

Berkeley has many excellent CS courses online. Many of the 'bread and butter' first and second year courses of CS are available. In contrast to others, you can choose between webcasts from different semesters and years. There are occasional technical issues with the courses (lectures listed in incorrect order, missing audio), and more attention could be paid to presentation of the material. Still, great teaching.

National Programme on Technology Enhanced Learning is a project funded by the Indian goverment, providing e-learning through online Web and Video courses in Engineering, Sciences, Technology, Management and Humanities. The materials themselves are produced by a group of the top Indian universites.

In-depth courses are available for almost any technical subject you can immagine. Each course comprises approximately 40 video lectures of about 1 hour duration. Note some courses are video based (generally 40 hours of material) while others are 'Web' courses, which is generally like an online textbook. Lectures have solid content and good presentation, though they tend to be a bit more dry and formal.

Introduction to CS

These courses give a core knowledge of CS concepts and practical programming skills.

COMPUTER SCIENCE 101

CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. Computers can appear very complicated, but in reality, computers work within just a few, simple patterns. CS101 demystifies and brings those patterns to life, which is useful for anyone using computers today.

CS106A - Programming Methodology

This course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering.

CS106B - Programming Abstractions

This course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java. If you've taken the Computer Science AP exam and done well (scored 4 or 5) or earned a good grade in a college course, Programming Abstractions may be an appropriate course for you to start with, but often Programming Abstractions (Accelerated) is a better choice. Programming Abstractions assumes that you already have familiarity with good programming style and software engineering issues (at the level of Programming Methodology), and that you can use this understanding as a foundation on which to tackle new topics in programming and data abstraction.

Topics: Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities.

CS107 - Programming Paradigms

Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++). Brief survey of other modern languages such as Python, Objective C, and C#.

CS10

The Beauty and Joy of Computing - An introduction to the beauty and joy of computing. The history, social implications, great principles, and future of computing. Beautiful applications that have changed the world. How computing empowers discovery and progress in other fields. Relevance of computing to the student and society will be emphasized.

Computer Science 61A

The Structure and Interpretation of Computer Programs - Introduction to programming and computer science. This course exposes students to techniques of abstraction at several levels: (a) within a programming language, using higher-order functions, manifest types, data-directed programming, and message-passing; (b) between programming languages, using functional and rule-based languages as examples. It also relates these techniques to the practical problems of implementation of languages and algorithms on a von Neumann machine. There are several significant programming projects, programmed in a dialect of the LISP language.

Computer Science 61B

Data Structrues - Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language.

Computer Science 61C

Machine Structures - The internal organization and operation of digital computers. Machine architecture, support for high-level languages (logic, arithmetic, instruction sequencing) and operating systems (I/O, interrupts, memory management, process switching). Elements of computer logic design. Tradeoffs involved in fundamental architectural design decisions.

Operating Systems

Computer Architecture

Networking

CCNA Training Series A full course of 84 videos for CCNA 200-120 Routing and Switching taught by Cisco Instructor Andrew Crouthamel. Videos 1-32 give a good overview of basic networking priciples.

Two similar courses on NPTEL give an understanding of all kinds of communication and networking, from the 'physical layer' (the design of the cables and voltage levels on the wires, or radio frequencies being broadcast), up through to routing and the transport layer. http://nptel.ac.in/courses/106105082/

Algorithms and Data Structures

Software Engineering

Javascript

Unix

Databases

AI

Discrete Mathematics

Embedded Systems

Robotics

Computer Architecture

Machine Vision

Computer Graphics

Programming Languages and Compilers

Security

Talks

Soft Subjects