Free online courses through Stanford!

Post a technical question here or look for educational opportunities.
Post Reply
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Free online courses through Stanford!

Post by sam »

Stanford University is offering free online courses through the School of Engineering.

Courses

SEE programming includes one of Stanford’s most popular engineering sequences: the three-course Introduction to Computer Science taken by the majority of Stanford undergraduates, and seven more advanced courses in artificial intelligence and electrical engineering.

Introduction to Computer Science
Programming Methodology
Programming Abstractions
Programming Paradigms

Artificial Intelligence
Introduction to Robotics
Natural Language Processing
Machine Learning

Linear Systems and Optimization
The Fourier Transform and its Applications
Introduction to Linear Dynamical Systems
Convex Optimization I
Convex Optimization II

Additional School of Engineering Courses
Programming Massively Parallel Processors
iPhone Application Programming
Seminars and Webinars


For Educators:

Educators around the world can use material from popular Stanford courses in their own classrooms. Whether it is a handout or a full set of course materials, SEE materials are available to educators free of charge under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License (http://creativecommons.org/licenses/by- ... /legalcode). SEE allows educators worldwide to use and tailor course materials to meet the needs of their own students.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Programming Methodology

Post by sam »

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.

Prerequisites: The course requires no previous background in programming, but does require considerable dedication and hard work.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Programming Abstractions

Post by sam »

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.

Prerequisites: Solid performance in Programming Methodology and readiness to move on to advanced programming topics. A comparable introductory programming course (including high school AP courses) is often a reasonable substitute for our Programming Methodology.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Programming Paradigms

Post by sam »

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#.

Prerequisites: Programming and problem solving at the Programming Abstractions level. Prospective students should know a reasonable amount of C++. You should be comfortable with arrays, pointers, references, classes, methods, dynamic memory allocation, recursion, linked lists, binary search trees, hashing, iterators, and function pointers. You should be able to write well-decomposed, easy-to-understand code, and understand the value that comes with good variable names, short function and method implementations, and thoughtful, articulate comments.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Introduction to Robotics

Post by sam »

Introduction to Robotics

The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems. In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control.
The course is presented in a standard format of lectures, readings and problem sets. There will be an in-class midterm and final examination. These examinations will be open book. Lectures will be based mainly, but not exclusively, on material in the Lecture Notes book. Lectures will follow roughly the same sequence as the material presented in the book, so it can be read in anticipation of the lectures

Topics: robotics foundations in kinematics, dynamics, control, motion planning, trajectory generation, programming and design.

Prerequisites: matrix algebra.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Natural Language Processing

Post by sam »

Natural Language Processing

This course is designed to introduce students to the fundamental concepts and ideas in natural language processing (NLP), and to get them up to speed with current research in the area. It develops an in-depth understanding of both the algorithms available for the processing of linguistic information and the underlying computational properties of natural languages. Wordlevel, syntactic, and semantic processing from both a linguistic and an algorithmic perspective are considered. The focus is on modern quantitative techniques in NLP: using large corpora, statistical models for acquisition, disambiguation, and parsing. Also, it examines and constructs representative systems.

Prerequisites:
• Adequate experience with programming and formal structures (e.g., CS106B/X and CS103B/X).
• Programming projects will be written in Java 1.5, so knowledge of Java (or a willingness to learn on your own) is required.
• Knowledge of standard concepts in artificial intelligence and/or computational linguistics (e.g., CS121/221 or Ling 180).
• Basic familiarity with logic, vector spaces, and probability. Intended Audience:
• Graduate students and advanced undergraduates specializing in computer science, linguistics, or symbolic systems.

Due to copyright issues, video downloads and lecture slides are not available for Natural Language Processing.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Machine Learning

Post by sam »

Machine Learning

This course provides a broad introduction to machine learning and statistical pattern recognition.

Topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, neural networks, support vector machines); unsupervised learning (clustering, dimensionality reduction, kernel methods); learning theory (bias/variance tradeoffs; VC theory; large margins); reinforcement learning and adaptive control.
The course will also discuss recent applications of machine learning, such as to robotic control, data mining, autonomous navigation, bioinformatics, speech recognition, and text and web data processing.
Students are expected to have the following background:

Prerequisites: - Knowledge of basic computer science principles and skills, at a level sufficient to write a reasonably non-trivial computer program.
- Familiarity with the basic probability theory. (Stat 116 is sufficient but not necessary.)
- Familiarity with the basic linear algebra (any one of Math 51, Math 103, Math 113, or CS 205 would be much more than necessary.)
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

The Fourier Transform and its Applications

Post by sam »

The Fourier Transform and its Applications

The goals for the course are to gain a facility with using the Fourier transform, both specific techniques and general principles, and learning to recognize when, why, and how it is used. Together with a great variety, the subject also has a great coherence, and the hope is students come to appreciate both.

Topics include: The Fourier transform as a tool for solving physical problems. Fourier series, the Fourier transform of continuous and discrete signals and its properties. The Dirac delta, distributions, and generalized transforms. Convolutions and correlations and applications; probability distributions, sampling theory, filters, and analysis of linear systems. The discrete Fourier transform and the FFT algorithm. Multidimensional Fourier transform and use in imaging. Further applications to optics, crystallography. Emphasis is on relating the theoretical principles to solving practical engineering and science problems.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Introduction to Linear Dynamical Systems

Post by sam »

Introduction to Linear Dynamical Systems

Introduction to applied linear algebra and linear dynamical systems, with applications to circuits, signal processing, communications, and control systems.

Topics include: Least-squares aproximations of over-determined equations and least-norm solutions of underdetermined equations. Symmetric matrices, matrix norm and singular value decomposition. Eigenvalues, left and right eigenvectors, and dynamical interpretation. Matrix exponential, stability, and asymptotic behavior. Multi-input multi-output systems, impulse and step matrices; convolution and transfer matrix descriptions. Control, reachability, state transfer, and least-norm inputs. Observability and least-squares state estimation.

Prerequisites: Exposure to linear algebra and matrices (as in Math. 103). You should have seen the following topics: matrices and vectors, (introductory) linear algebra; differential equations, Laplace transform, transfer functions. Exposure to topics such as control systems, circuits, signals and systems, or dynamics is not required, but can increase your appreciation.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Convex Optimization I

Post by sam »

Convex Optimization I

Concentrates on recognizing and solving convex optimization problems that arise in engineering. Convex sets, functions, and optimization problems. Basics of convex analysis. Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems. Optimality conditions, duality theory, theorems of alternative, and applications. Interiorpoint methods. Applications to signal processing, control, digital and analog circuit design, computational geometry, statistics, and mechanical engineering.

Prerequisites: Good knowledge of linear algebra. Exposure to numerical computing, optimization, and application fields helpful but not required; the engineering applications will be kept basic and simple.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Convex Optimization II

Post by sam »

Convex Optimization II

Continuation of Convex Optimization I. Subgradient, cutting-plane, and ellipsoid methods. Decentralized convex optimization via primal and dual decomposition. Alternating projections. Exploiting problem structure in implementation. Convex relaxations of hard problems, and global optimization via branch & bound. Robust optimization. Selected applications in areas such as control, circuit design, signal processing, and communications. Course requirements include a substantial project.

Prerequisites: Convex Optimization I
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

Programming Massively Parallel Processors

Post by sam »

Programming Massively Parallel Processors

Virtually all semiconductor market domains, including PCs, game consoles, mobile handsets, servers, supercomputers, and networks, are converging to concurrent platforms. There are two important reasons for this trend. First, these concurrent processors can potentially offer more effective use of chip space and power than traditional monolithic microprocessors for many demanding applications. Second, an increasing number of applications that traditionally used Application Specific Integrated Circuits (ASICs) are now implemented with concurrent processors in order to improve functionality and reduce engineering cost. The real challenge is to develop applications software that effectively uses these concurrent processors to achieve efficiency and performance goals. The aim of this course is to provide students with knowledge and hands-on experience in developing applications software for processors with massively parallel computing resources. In general, we refer to a processor as massively parallel if it has the ability to complete more than 64 arithmetic operations per clock cycle. Many commercial offerings from NVIDIA, AMD, and Intel already offer such levels of concurrency. Effectively programming these processors will require in-depth knowledge about parallel programming principles, as well as the parallelism models, communication models, and resource limitations of these processors. The target audiences of the course are students who want to develop exciting applications for these processors, as well as those who want to develop programming tools and future implementations for these processors. Visit the CS193G companion website for course materials.
sam
Site Admin
Posts: 499
Joined: Mon Apr 09, 2007 11:56 am
Location: Rochester, NY

iPhone Application Programming

Post by sam »

iPhone Application Programming

Tools and APIs required to build applications for the iPhone platform using the iPhone SDK. User interface designs for mobile devices and unique user interactions using multitouch technologies. Object-oriented design using model-view-controller pattern, memory management, Objective-C programming language. iPhone APIs and tools including Xcode, Interface Builder and Instruments on Mac OS X. Other topics include: core animation, bonjour networking, mobile device power management and performance considerations. Prerequisites: C language and programming experience at the level of 106B or X. Recommended: UNIX, object-oriented programming, graphical toolkits Offered by Stanford’s School of Engineering, the course will last ten weeks and include both the lecture videos and PDF documents. A new lecture will be posted a week after each class meeting. Subscribe to this course, and automatically receive new lectures as they become available. Released with a Creative Commons BY-NC-ND license.
Post Reply