Courses

This course is all about understanding: understanding what's going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by ...
Introduction to Computer Science I is a first course in computer science at Harvard College for concentrators and non-concentrators alike. More than just teach you how to program, this course teaches you how to think more methodically and how to ...

This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to ...

Lecture by Professor Jerry Cain for Programming Paradigms (CS107) in the Stanford University Computer Science department. Professor Cain provides an overview of the course.

Programming Paradigms (CS107) introduces several programming languages, including C, Assembly, C++, Concurrent Programming, Scheme, and Python ...

Programming Methodology (CS106A at Stanford University) is an Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Uses the Java programming language. Emphasis is on good programming style and the ...

This course (CS 106B) is the successor to CS 106A and covers more advanced programming topics such as recursion, algorithmic analysis, and data abstraction. It is taught using the C++ programming language, which is similar to both C and Java ...

A more formal approach to Relational Database Management Systems, compared the way they were covered during Web Applications. Database systems are discussed from the physical layer of B-trees and file servers to the abstract layer of relational design. Also includes ...

This course will help you get started with Python as a programming language. The course can be taken by people who have prior programming experience, as well as those who have very little experience with programming.

Each topic page in ...

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.

Original ...

This course teaches techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics covered include: sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic ...
This course introduces students to the principles of computation. Upon completion of this course, students should be able to explain and apply the basic methods from programming languages to analyze computational systems, and to generate computational solutions to abstract problems ...
This courses teaches TCP/IP, subnetting, client server computing and email.
This course explains the Javascript programming language.
This course analyzes issues associated with the implementation of high-level programming languages. Topics covered include: fundamental concepts, functions, and structures of compilers, basic program optimization techniques, the interaction of theory and practice, and using tools in building software. The course ...
This course (CS229) -- taught at Stanford University by Professor Andrew Ng -- provides a broad introduction to machine learning and statistical pattern recognition. Topics include supervised learning, unsupervised learning, learning theory, reinforcement learning and adaptive control. Recent applications of machine learning ...

This course is a talk series being given at Google by David Mease based on a Master's level stats course he taught at Stanford in 2007. The main topics are exploring and visualizing data, association analysis, classification, and clustering ...

The course serves as an introductory course in parallel programming. It offers a series of lectures on parallel programming concepts as well as a group project providing hands-on experience with parallel programming. The students will have the unique opportunity to ...

Discrete Mathematics (Arsdigita University) This course covers the mathematical topics most directly related to computer science. Topics include: logic, relations, functions, basic set theory, countability and counting arguments, proof techniques, mathematical induction, graph theory, combinatorics, discrete probability, recursion, recurrence relations ...