2:52 AM

Computer science resources for academics

Posted by fateh

Google has a long history of involvement with universities, and we're excited to share some recent news on that front with you. At the main Google campus this week we're hosting the Google Faculty Summit, which involves universities all over participating in discussions about what we're up to in research-land as well as computer science education - something very near and dear to us.

Meanwhile, because we know that between teaching, doing research and advising students, computer science educators are quite strapped for time, we've recently launched a site called Google Code for Educators. While you may have previously heard about our offerings for K-12 teachers, this new program is focused on CS topics at the university level, and lets us share the knowledge we've built up around things like distributed systems and AJAX programming. It's designed for university faculty to learn about new computer science topics and include them in their courses, as well as to help curious students learn on their own.

Right now, Google Code for Educators offers materials for AJAX web programming, distributed systems and parallel programming, and web security. The site includes slides, programming labs, problem sets, background tutorials and videos. We're eager to provide more content areas and also more iterations for existing topic areas. To allow for liberal reuse and remixing, most sample course content on Code EDU is available under a Creative Commons license. Please let us know your thoughts on this new site.

Beyond CS education, another important faculty topic is research. Google Research offers resources to CS researchers,including papers authored by Googlers and a wide variety of our tech talks. You might be interested in learning more about MapReduce and the Google File System, two pieces of Google-grown technology that have allowed us to operate at enormous scale. We also recently put together a few university research programs and we're eager to see what academics come up with.

2:50 AM

Free Computer Science Courses

Posted by fateh

Hi everyone! This month I have a tasty collection of free computer science courses. All the courses have videos included.

The topics include: Introduction to computer science. Computational complexity and quantum computing. Introduction to computing systems. The C programming language. Multicore programming. Statistics and data mining. Combinatorics. Software testing. Evolutionary computation. Deep learning. Data structures and algorithms. Bonus lecture: Computational origami.


Introduction to Computer Science and Programming (MIT 6.00)


Course Website
Programming Video Lectures
Exams and Solutions

Course description:
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 feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python programming language.

Course topics:
What is computation; introduction to data types, operators, and variables. Operators and operands; statements; branching, conditionals, and iteration. Common code patterns: iterative programs. Decomposition and abstraction through functions; introduction to recursion. Floating point numbers, successive refinement, finding roots. Bisection methods, Newton/Raphson, introduction to lists. Lists and mutability, dictionaries, pseudocode, introduction to efficiency. Complexity; log, linear, quadratic, exponential algorithms. Binary search, bubble and selection sorts. Divide and conquer methods, merge sort, exceptions. Testing and debugging. More about debugging, knapsack problem, introduction to dynamic programming. Dynamic programming: overlapping subproblems, optimal substructure. Analysis of knapsack problem, introduction to object-oriented programming. Abstract data types, classes and methods. Encapsulation, inheritance, shadowing. Computational models: random walk simulation. Presenting simulation results, Pylab, plotting. Biased random walks, distributions. Monte Carlo simulations, estimating pi. Validating simulation results, curve fitting, linear regression. Normal, uniform, and exponential distributions; misuse of statistics. Stock market simulation. Course overview; what do computer scientists do?


Computational Complexity and Quantum Computation (Tim Gowers)


Comp. Complexity and Quantum Computation Video Lectures


Course description:
Computational complexity is the study of what resources, such as time and memory, are needed to carry out given computational tasks, with a particular focus on lower bounds for the amount needed of these resources. Proving any result of this kind is notoriously difficult, and includes the famous problem of whether P=NP. This course will be focused on two major results in the area. The first is a lower bound, due to Razborov, for the number of steps needed to determine whether a graph contains a large clique, if only "monotone" computations are allowed. This is perhaps the strongest result in the direction of showing that P and N P are distinct (though there is unfortunately a very precise sense in which the proof cannot be developed to a proof of the whole conjecture). The second is Peter Shor's remarkable result that a quantum computer can factorize large integers in polynomial time.

Course topics:
Equivalence between Turing machines and the circuit model of compuation. Final details needed for the quantum Fourier transform, such as how to "uncompute". Solving the descrete logirithm problem. Definition of P, NP and NP-complete and some examples. A demonstration that clique is NP-complete, and some lower bound complexity proofs which don't work. Razborov's proof that no monotone circuit can solve Clique in polynomial time. No "natural proof" exists for proving a separation between P and NP if one-way functions exist. We then move into a mathematician's description of quantum computation starting from probabilistic computation. Description of quantum computation continued. We start describing Shor's factoring algorithm.


Introduction to Computing Systems


Course Website
Computing Systems Video Lectures
Exams


Course topics:
Computer systems organized as a systematic set of transformations; representation using bits. Bits and Operations on Bits: unsigned and signed integers; arithmetic and logical operations; ASCII; floating point; hexadecimal notation. Digital Logic Structures: gates; combinational logic; storage elements. Digital Logic Structures: memory; sequential logic; clock. The von Neumann Model: basic concepts; instruction processing; sequencing. The LC-3: Instruction Set Architecture. The LC-3: Example program in LC-3 machine language; LC-3 datapath. Programming: problem solving using systematic decomposition, more examples, debugging. LC-3 Assembly Language; examples; assembly process. I/O abstractions: input from the keyboard, output to the monitor. Repeated Code: TRAPs and subroutines; Examples. Stacks; Executing subroutines with stacks. Introduction to C; Variables and Operators: basic data types, simple operators, examples. Operators: simple operators, memory allocation of variables, examples. Control Structures: conditional constructs. Control Structures: iterative constructs, comprehensive examples, problem solving. Functions: introduction, syntax, run-time stack. Functions: activation records, examples. Pointers and Arrays: introduction, problem solving, examples. Arrays: 2D arrays, examples. Testing and Debugging: introduction, error taxonomy, using a debugger. Recursion: introduction, basic example, example showing run-time stack. Input and Output in C: standard library, basic I/O calls, file I/O, example. Basic Data Structures: introduction. Basic Data Structures: structures, defining new types, enumerations, dynamic memory allocation. Basic Data Structures: linked lists. Basic Data Structures: linked lists, linked structure traversal. Comprehensive Case Study: sorting. Simple Guide to C++: Design, abstractions, and implementation. Course Wrap-up and Advice for Sophomore System Builders.


Multicore Programming (MIT 6.189)


Course Website
Multicore Programming Video Lectures


Course description:
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 use the cutting-edge PLAYSTATION 3 development platform as they learn how to design and implement exciting applications for multicore architectures.

Course topics:
Introduction to Cell processor. Introduction to parallel architectures. Introduction to concurrent programming. Parallel programming concepts. Design patterns for parallel programming I. Design patterns for parallel programming II. StreamIt language. Debugging parallel programs. Performance monitoring and optimizations. Parallelizing compilers. StreamIt parallelizing compiler. Star-P. Synthesizing parallel programs. Cilk. Introduction to game development. The Raw experience. The future.


Statistical Aspects of Data Mining (Data Mining at Google)


Data Mining Video Lecture 1
Data Mining Video Lecture 2

Data Mining Video Lecture 3

Data Mining Video Lecture 4

Data Mining Video Lecture 5

Data Mining Video Lecture 6

Data Mining Video Lecture 7

Data Mining Video Lecture 8
Data Mining Video Lecture 9

Data Mining Video Lecture 10

Data Mining Video Lecture 11
Data Mining Video Lecture 12
Data Mining Video Lecture 13
Course Website


This is a talk series being given at Google by David Mease based on a Master's level stats course he is teaching this summer at Stanford.

Course topics:
1. Discussion of locations of potentially useful data (grocery checkout, apartment door card, elevator card, laptop login, traffic sensors, cell phone, google badge, etc). Note mild obsession with consent. Overview of predicting future vs describing patterns, and other broad areas of data mining. Intro to R. 2. Data. Reading datasets into excel and R. Observational (data mining) vs Experimental data. Qualitative analysis vs quantitative analysis. Nominal vs ordinal. 3. Sampling. 4. Empirical distribution function. Histograms. Plots. 5. Overlaying multiple plots. Statistical significance. Labels in plots. 6. Box plots. Color in plots. Installing R packages. ACCENT principles and Tufte. 7. Association Rules. Measures of location. Measures of spread. Measures of association. Frequent itemsets. Similar to conditional probabilities. 8. More association rule mining. Support and confidence calculations. Personalization using rules. Beyond support and confidence. 9. Review. 10. Data Classification. A negative view of decision trees. Decision trees in R. Algorithms for generating decision trees. 11. More decision trees. Gini index. Entropy. Pruning. Precision, recall, f-measure, and ROC curve. 12. Nearest Neighbor. KNN. Support Vector Machines. Adding 'slack' variables, using basis functions to make the space linearly separable. Some comments on Stats vs ML. Intro to ensemble (uncorrelated) classifiers. Random Forests. AdaBoost - Adaptive Boosting. Some discussion of limits of classifiers (nondeterministic observational datasets). Clustering. K-Means.


Data Structures and Algorithms (COMP1927, UNSW)


Data Structures and Algorithms Video Lectures


Lectures by Richard Buckland from The University of New South Wales.

Course topics:
Abstract data types. Stacks. Queues. Recursion. Time and Space Complexity. Big Oh Notation. Complexity Analysis. BFS (Breadth First Search). DFS (Depth First Search). Trees. Tree Algorithms. Self Balancing Trees. Graphs and Graph Algorithms. C99 Extensions. Unit Testing. Debugging. Pair Programming.


Peter Gibbons Memorial Lecture Series


Peter Gibbsons Memorial Video Lectures


The Combinatorics at the Heart of the Problem


Making Software Testing Easier


Developing Darwin's Computer


Technologies for Deep Learning



Computational Origami


Erik Demaine on Computational Origami


Lecture description:
As a glassblower, Tetris master, magician, and mathematician, the MIT professor has spent his life exploring the mysterious and fascinating relationships between art and geometry. Here, he discusses the potential of lasers, leopard spots, and computer science to breathe new life into everything from architecture to origami. Demaine has a "hard time distinguishing art from mathematics." His approach to art has a strong emphasis on collaboration, which as he says, is a rare thing in art. Demaine is a professor in computer science and mathematics. He realized that "mathematics (itself) is an art form." During the talk, he also mentions Escher's study of mathematics.


Have fun with these lectures!


Related Posts

Free Computer Science Video Lecture Courses
(Courses include web application development, lisp/scheme programming, data structures, algorithms, machine structures, programming languages, principles of software engineering, object oriented programming in java, systems, computer system engineering, computer architecture, operating systems, database management systems, performance analysis, cryptography, artificial intelligence)


Programming Lectures and Tutorials
(Lectures include topics such as software engineering, javascript programming, overview of firefox's firebug extension, document object model, python programming, design patterns in python, java programming, delphi programming, vim editor and sqlite database design)


Programming, Networking Free Video Lectures and Other Interesting Ones
(Includes lectures on Python programming language, Common Lisp, Debugging, HTML and Web, BGP networking, Building scalable systems, and as a bonus lecture History of Google)


More Mathematics and Theoretical Computer Science Video Lectures
(Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)


More Mathematics and Theoretical Computer Science Video Lectures
(Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)


Pure Computer Science
(Includes basics of computation theory, intro to computer science, data structures, compiler optimization, intro to computers and internet, intro to clojure, and some videos from EECS colloquium at Case Western Reserve University.)

2:49 AM

Computer Science Video Courses

Posted by fateh

This time I bring you a mixture of video lectures and full video courses for computer science undergraduates and graduates.

Courses come from engineering, mathematics and comp. sci. departments of various universities.

This post can be considered a follow-up on posts on computer science lectures: 1, 2, 3, 4, 5, 6, 7, 8 .

See the right menu bar for more lectures specifically in engineering and mathematics!


Introduction to Computer Graphics (35 lectures)


Intro to Computer Graphics Video Lectures


Course topics:
1. Introduction. 2, 3. Raster Graphics. 4. Clipping. 5. Polygon Clipping and Polygon Scan Conversion. 6, 7. Transformations. 8, 9. 3D Viewing. 10-15. Curves. 16-19. Surfaces. 20. Hierarchical Models. 21-23. Rendering. 24-27. Ray Tracing. 28, 29. Hidden Surface Elimination. 30-32. Fractals. 33-35. Computer Animation.


Computer Graphics (43 Video Lectures)


Computer Graphics Video Lectures


Course topics:
1. Introduction to computer graphics. 2-5. CRT Display Devices. 6. Transformations. 7. Transformations in 2D. 9, 10. Three Dimensional Graphics. 11. Project Transformations and Viewing Pipeline. 12. 3D Viewing. 13-17. Scan Converting Lines, Circles and Ellipses. 18, 19. PolyFill Scan Conversion of a Polygon. 20-22. Clipping: Lines And Polygons. 23-25. Solid Modelling. 26-32. Visible Surface Detection. 33-35. Illumination and Shading. 36, 37. Curve Representation. 38. Curves and Surface Representation. 39. Graphics Programming. 40. Graphics Programming Using OpenGL. 41. Advanced Topics. 42, 43. Digital Image Processing.


Discrete Mathematics for Programmers (40 Video Lectures)


Discrete Maths Video Lectures


Course topics:
1, 2. Propositional Logic. 3, 4. Predicates & Quantifiers. 5. Logical Inference. 6. Resolution Principles & Application to PROLOG. 7. Methods of Proof. 8. Normal Forms. 9. Proving programs correct. 10. Sets. 11. Mathematical Induction. 12. Set Operations on Strings Over an Alphabet. 13. Relations. 14, 15. Graphs. 16. Trees. 17. Trees and Graphs. 18. Special Properties of Relations. 19, 20. Closure of Relations. 21. Order Relations. 22. Order and Relations and Equivalence Relations. 23. Equivalence relations and partitions. 24-26. Functions. 27-29. Permutations and Combinations. 30-31. Generating Functions. 32-34. Recurrence Relations. 35-37. Algebras. 38-39. Finite State Automaton (FSA). 40. Lattices.


Mathematical Analysis (32 Video Lectures)


Math Analysis Video Lectures


Course topics:
1. Real Number. 2. Sequences I. 3. Sequences II. 4. Sequences III. 5. Continuous Function. 6. Properties of continuous functions. 7. Uniform Continuity. 8. Differentiable function. 9. Mean Value Theorems. 10. Maxima - Minima. 11. Taylor's Theorem. 12. Curve Sketching. 13. Infinite Series I. 14. Infinite Series II. 15. Tests of Convergence. 16. Power Series. 17. Riemann integral. 18. Riemann Integrable functions. 19. Applications of Riemann Integral. 20. Length of a curve. 21. Line integrals. 22. Functions of several variables. 23. Differentiation. 24. Derivatives. 25. Mean Value Theorem. 26. - Maxima Minima. 27. Method of Lagrange Multipliers. 28. Multiple Integrals. 29. Surface Integrals. 30. Green's Theorem. 31. Stokes Theorem. 32. Guass Divergence Theorem.


Introduction To Problem Solving and Programming (23 Video Lectures)


Problem Solving Video Lectures


Topics include:
Introduction to Computers, Algorithms and Programming. Data Types, Strings, and Input and Output. Flow Control. Arrays. Data Structures. Dynamic Data Structures. Recursion. Various Mathematics Problems and their solutions.


Computing I (CSCI 230, Indiana and Purdue Universities)


Computing Video Lectures


Course topics:
Introduction to Computers - Hardware and Languages. C Programming. Basic Input/Output. Variable Declarations, Data Types, Expressions. Program Control. Functions. Information Representation. Arrays. Programming Ethics. Pointers. Characters and Strings. Structures. Models of Computation.


Computing II (CSCI 240, Indiana and Purdue Universities)


Computing Video Lectures


Course topics:
Advanced Programming. C++ Programming. Concepts in Object-Oriented Design. Classes. Stream Input/Output Basics. Abstract Data Types. Operator Overloading. Inheritance. Virtual Functions. Exception Handling. Templates. Standard Template Library (STL). History of Graphical User Interfaces. Introduction To Visual Programming. QT Designer. Boolean Algebra. Digital Logic. Analysis of Algorithms. Elementary Data Structures. Recursion. Abstract Data Types. Elementary Sorting Algorithms. Quicksort. Mergesort.


Numerical Methods and Programing (38 Video Lectures)


Numerical Methods Video Lectures


Course topics:
1. Programing Basics. 2. Introduction to Pointers. 3. Pointers And Arrays. 4. External Functions and Argument Passing. 5. Representation of Numbers. 6. Numerical Error. 7. Error Propagation and Stability. 8. Polynomial Interpolation I. 9. Polynomial Interpolation II. 10. Error In Interpolation Polynomial. 11. Polynomial Interpolation. 12. Cubic Spline Interpolation. 13, 14. Data Fitting : Linear Fit. 15. - Data Fitting : Non Linear Fit. 16. Matrix Elimation and Solution. 17. Solution To Linear Equations. 18. Matrix Elimination. 19. Eigen Values of A Matrix. 20. Eigen Values And Eigen Vectors. 21. Solving NonLinear Equations. 22. Solving NonLinear Equations with Newton Method. 23. Methods For Solving NonLinear Equations. 24. System of NonLinear Equations. 25. Numerical Derivations. 26. High order Derivatives From Difference Formula. 27. Numerical Integration - Basic Rules. 28. Comparison of Different Basic Rules. 29. Gaussian Rules. 30. Comparison of Gaussian Rules. 31. Solving Ordinary Differential Equations. 32. Solving ordinary differential equations. 33. Adaptive step size Runge Kutta scheme. 34. Partial Differential Equations. 35. Explicit and Implicit Methods. 36. Nicholson Scheme For Two Spatial Dimensions. 37. Fourier Transforms. 38. Fast Fourier Transforms.


Convex Optimizations (EE364-a, Stanford University)


Course Website
Convex Optimizations Video Lectures


Read by professor Stephen Boyd in Winter Quarter 2007/2008.

Course description:
Concentrates on recognizing and solving convex optimization problems that arise in engineering. Convex sets, convex functions, and convex 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. Interior-point methods. Applications to signal processing, control, digital and analog circuit design, computational geometry, statistics, and mechanical engineering.

Available lecture notes on topics:
Convex sets, Convex functions, Convex optimization problems, Duality, Approximation and fitting, Statistical estimation, Geometric problems, Numerical linear algebra background, Unconstrained minimization, Equality constrained minimization, Interior-point methods. Convex optimization examples, Filter design and equalization, Disciplined convex programming and CVX.


Introduction to Linear Dynamical Systems (EE263, Stanford University)


Course website
Linear Dynamical Systems Video Lectures


Read by professor Stephen Boyd in Autumn Quarter 2007/2008.

Course description:
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.


Intelligent Systems Control (32 Video Lectures)


Intelligent Systems Control Video Lectures


Course topics include:
Methods for the system analysis. Design of intelligent systems for control. Programming of computation of intelligent systems, and their communications. Numerical methods and optimization. Linear programming. Discrete programming. Dynamic (dynamical) programming. System learning. Reinforcement learning. Optimal solution estimations. Bayesian networks. Neural Networks. Expert systems. Genetic Algorithms.


Programming Systems Seminar Series

See the The Intel Research Berkeley Programming Systems Seminar Series for more information!


Towards a Memory Model for C (by Hans Boehm)
Video Lecture - Low Speed (90 MB) or High Speed (600 MB)
Lecture Notes


Software and the Concurrency Revolution (by Herb Sutter)
Video Lecture
Lecture Notes


Static Extended Checking for Cyclone (by Greg Morrisett)
Video Lecture
Lecture Notes


Design and Implementation of Python (by Guido van Rossum)
Video Lecture
Lecture Notes


Parallel Programming and Code Selection in Fortress (by Guy Steele)
Video Lecture
Lecture Notes


How Simply and Understandably Could The "Personal Computing Experience" Be Programmed? (by Alan Kay)
Video Lecture
Lecture Notes


Contracts in Eiffel: old and new uses (by Bertrand Meyer)
Video Lecture
Lecture Notes


An outline of C++0x (by Bjarne Stroustrup)
Video Lecture
Lecture Notes


Multithreaded Programming in Cilk (by Charles Leiserson)
Video Lecture
Lecture Notes


Faith, Evolution, and Programming Languages: From Haskell to Java (by Philip Wadler)
Video Lecture
Lecture Notes




Have fun with these lectures and get smarter! :)
Don't forget to check out the right menu bar for more lectures! Until next time!


Related Posts

Free Computer Science Video Lecture Courses
(Courses include web application development, lisp/scheme programming, data structures, algorithms, machine structures, programming languages, principles of software engineering, object oriented programming in java, systems, computer system engineering, computer architecture, operating systems, database management systems, performance analysis, cryptography, artificial intelligence)


Programming Lectures and Tutorials
(Lectures include topics such as software engineering, javascript programming, overview of firefox's firebug extension, document object model, python programming, design patterns in python, java programming, delphi programming, vim editor and sqlite database design)


Programming, Networking Free Video Lectures and Other Interesting Ones
(Includes lectures on Python programming language, Common Lisp, Debugging, HTML and Web, BGP networking, Building scalable systems, and as a bonus lecture History of Google)


Computer Science Lectures
(Courses include higher computing (intro to theory of computation), intro to computer science, data structures, compiler optimization, computers and internet, intro to clojure, the akamai story, cryptography, EECS colloquium videos at Case Western Reserve University)


More Mathematics and Theoretical Computer Science Video Lectures
(Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)


More Mathematics and Theoretical Computer Science Video Lectures
(Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)


Computer Science Courses
(Includes introduction to computer science and computing systems, computational complexity and quantum computing, the c programming language, multicore programming, statistics and data mining, combinatorics, software testing, evolutionary computation, deep learning, data structures and algorithms and computational origami.)

Here is a list of video lectures in computer science I had collected over the years.
This list is only two-thirds of all links I have in my bookmarks, I will go through the rest of links later. Check back.

For formal computer science education here is an overview of a bachelor degree in computer science.


Web Applications

Video Lectures at ArsDigita University
Mirror ar ArsDigita
High Speed Mirror at Internet Archive
Course website

Teaches basics of designing a dynamic web site with a database back end, including scripting languages, cookies, SQL, and HTML with the goal of building such a site as the main (group) project Emphasizes computer-human interface and the graphical display of information.


Structure and Interpretation of Computer Programs

Video lectures at MIT
Structure and Interpretation of Computer Programs has been MIT's introductory pre-professional computer science subject since 1981. It emphasizes the role of computer languages as vehicles for expressing knowledge and it presents basic principles of abstraction and modularity, together with essential techniques for designing and implementing computer languages. This course has had a worldwide impact on computer science curricula over the past two decades.


Structure and Interpretation of Computer Programs (a different course)

Video lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

An introduction to programming and the power of abstraction, using Abelson and Sussman's classic textbook of the same name. Key concepts include: building abstractions, computational processes, higher-order procedures, compound data, data abstractions, controlling interactions, generic operations, self-describing data, message passing, streams and infinite data structures, meta-linguistic abstraction, interpretation of programming languages, machine model, compilation, and embedded languages.


Structure and Interpretation of Computer Programs (a different course)

Video Lectures: CS61A (Berkeley)
Course website

The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer's point of view. This first course concentrates mostly on the idea of abstraction, allowing the programmer to think in terms appropriate to the problem rather than in low-level operations dictated by the computer hardware. The next course, CS 61B, will deal with the more advanced engineering aspects of software on constructing and analyzing large programs and on techniques for handling computationally expensive programs. Finally, CS 61C concentrates on machines and how they carry out the programs you write.
In CS 61A, we are interested in teaching you about programming, not about any particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, object-oriented programming, and query systems. To get past generalities you must have programming practice in some particular language, and in this course we use Scheme, a dialect of Lisp. This language is particularly well-suited to the organizing ideas we want to teach. Our hope, however, is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work.


Data Structures

Video Lectures: CS61B (Berkeley)
Course website

The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer’s point of view. CS 61A covered high-level approaches to problem-solving, providing you with a variety of ways to organize solutions to programming problems: as compositions of functions, collections of objects, or sets of rules. In CS 61B, we move to a somewhat more detailed (and to some extent, more basic) level of programming. As in 61A, the correctness of a program is important. In CS 61B, we’re concerned also with engineering. An engineer, it is said, is someone who can do for a dime what any fool can do for a dollar. Much of 61B will be concerned with the tradeoffs in time and memory for a variety of methods for structuring data. We’ll also be concerned with the engineering knowledge and skills needed to build and maintain moderately large programs.


Machine Structures

Video Lectures: CS61C (Berkeley)
Course webpage

The subjects covered in this course include C and assembly language programming, how higher level programs are translated into machine language, the general structure of computers, interrupts, caches, address translation, CPU design, and related topics. The only prerequisite is that you have taken Computer Science 61B, or at least have solid experience with a C-related programming language.


Programming Languages

Video Lectures: CSEP505 (University of Washington)
Course website

Goals: Successful course participants will:
• Master universal programming-language concepts (including datatypes, functions, continuations, threads,
macros, types, objects, and classes) such that they can recognize them in strange guises.
• Learn to evaluate the power, elegance, and definition of programming languages and their constructs
• Attain reasonable proficiency programming in a functional style
• Find relevant literature somewhat more approachable.


Principles of Software Engineering

Video Lectures: CS584 (University of Washington)

Course website

Study of major developments in software engineering over the past three decades. Topics may include design (information hiding, layering, open implementations), requirements specification (informal and formal approaches), quality assurance (testing, verification and analysis, inspections), reverse and re-engineering (tools, models, approaches).


Object Oriented Program Design

Video lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

The concepts of the Object-oriented paradigm using Java. The basic principles of software engineering are emphasized. We study how to design and think in an object oriented fashion.


Algorithms

Video lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

The design and analysis of algorithms is studied. Methodologies include: divide and conquer, dynamic programming, and greedy strategies. Their applications involve: sorting, ordering and searching, graph algorithms, geometric algorithms, mathematical (number theory, algebra and linear algebra) algorithms, and string matching algorithms.

We study algorithm analysis - worst case, average case, and amortized, with an emphasis on the close connection between the time complexity of an algorithm and the underlying data structures. We study NP-Completeness and methods of coping with intractability. Techniques such as approximation and probabilistic algorithms are studied for handling the NP-Complete problems.


Introduction to Algorithms

Video lectures: 6.064J/18.410J (MIT)
Course homepage

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 algorithms; polynomial and matrix calculations; caching; and parallel computing.


Systems

Video Lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

Topics on the engineering of computer software and hardware systems: techniques for controlling complexity, system infrastructure, networks and distributed systems, atomicity and coordination of parallel activities, recovery and reliability, privacy of information, impact of computer systems on society. Case studies of working systems and outside reading in the current literature provide comparisons and contrasts.


Computer System Engineering

Video Lectures: 6.033 (MIT) (first 3 lectures don't have videos)
Course homepage

This course covers topics on the engineering of computer software and hardware systems: techniques for controlling complexity; strong modularity using client-server design, virtual memory, and threads; networks; atomicity and coordination of parallel activities; recovery and reliability; privacy, security, and encryption; and impact of computer systems on society. We will also look at case studies of working systems and readings from the current literature provide comparisons and contrasts, and do two design projects.


Graduate Computer Architecture

Video Lectures: CS 252 (Berkeley)
Course website

This course focuses on the techniques of quantitative analysis and evaluation of modern computing systems, such as the selection of appropriate benchmarks to reveal and compare the performance of alternative design choices in system design. The emphasis is on the major component subsystems of high performance computers: pipelining, instruction level parallelism, memory hierarchies, input/output, and network-oriented interconnections.


Computer Architecture

Video Lectures: CSE P 548 (University of Washington)

Course website
The purpose of this course is to give you a broad understanding of the concepts behind several advanced microarchitectural features in today’s microprocessors and to illustrate those concepts with appropriate (usually modern) machine examples. We will cover the rationale for and the designs of strategies for instruction sets, dynamic branch prediction, multiple-instruction issue, dynamic (out-of-order) instruction scheduling, multithreaded processors, shared memory multiprocessors, and, if there is time, dataflow machines. Some of these topics require some understanding from what is normally thought of as undergraduate material; for these, we’ll briefly review that material, and then go on from there.

You will augment your knowledge of the architectural schemes by doing experimental studies that examine and compare the performance of several alternative implementations for a particular feature. Here you will learn how to design architectural experiments, how to choose metrics that best illustrate a feature’s performance, how to analyze performance data and how to write up your experiment and results - all skills computer architects, and, actually, researchers and developers in any applied subfield of computer science, use on a regular basis.


Operating Systems and System Programming

Video Lectures: CS 162 (Berkeley)
Course website
The purpose of this course is to teach the design of operating systems and other systems. Topics we will cover include concepts of operating systems and systems programming; utility programs, subsystems, multiple-program systems; processes, interprocess communication, and synchronization; memory allocation, segmentation, paging; loading and linking, libraries; resource allocation, scheduling, performance evaluation; I/O systems, storage devices, file systems; basic networking, protocols, and distributed file systems, protection, security, and privacy.


How Computers Work

Video lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

Includes the basics of digital logical design, computer organization and architecture including assembly language, processor design, memory hierarchies and pipelining. Students examine the detailed construction of a very simple computer. A higher level view of a modern RISC architecture is studied, using the Patterson and Hennessey introductory text, from both the programmer's point of view and the hardware designer's point of view. The distinction between RISC and CISC architectures is emphasized.


Performance Analysis

Video Lectures: CSE 597 (University of Washington)

Course website

This course is intended to provide a broad introduction to computer system performance evaluation techniques and their application. Approaches considered include measurement/benchmarking, stochastic and trace driven simulation, stochastic queueing networks, and timed Petri


Database Management Systems

Video Lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

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 alternative and generic approaches to database design and database management system including relational, object-relational, and object-oriented systems, SQL standards, algebraic query languages, integrity constraints, triggers, functional dependencies, and normal forms. Other topics include tuning database transactions, security from the application perspective, and data warehousing.


Database Management Systems

Video Lectures: CSEP544 (University of Washington)
Course website

Databases are at the heart of modern commercial application development. Their use extends beyond this to many applications and environments where large amounts of data must be stored for efficient update and retrieval. The purpose of this course is to provide an introduction to the design and use of database systems, as well as an appreciation of the key issues in building such systems, and working with multiple database systems.
We begin by covering basis aspcts of SQL, and illustrating several data management concepts through SQL features (e.g., views, constraints and triggers). Next, we study conceptual database design and normalization theory. We then study management of XML data, and cover the XPath and XQuery languages. We consider the issues arising in data integration from multiple databases, and more generally, issues in managing meta-data. Finally, we cover the basic aspects of the internals of database systems.


Transaction Processing for E-Commerce

Video Lectures: CSEP545 (University of Washington)

Course website

Course covers Database Concurrency Control, Database Recovery, Basic Application Servers, Two-Phase Commit, Queuing, Replication, Application Servers.


Practical Aspects of Modern Cryptography

Video Lectures: 950TU (University of Washington)
Course website
Course covers Symmetric Key Ciphers and Hashes, Public Key Ciphers, Analysis of Block Ciphers, AES and Attacks on Cryptographic Hashes, Certificates, Trust & PKI, Public Key Cryptography, Digital Rights Management, The Politics of Cryptography


Theory of Computation

Video Lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

A theoretical treatment of what can be computed and how fast it can be don. Applications to compilers, string searching, and control circuit design will be discussed. The hierarchy of finite state machines, pushdown machines, context free grammars and Turing machines will be analyzed, along with their variations. The notions of decidability, complexity theory and a complete discussion of NP-Complete problems round out the course.


Artificial Intelligence (4 lectures)

Video Lectures at ArsDigita University
Mirror at ArsDigita
High Speed Mirror at Internet Archive
Course website

An quick overview of AI from both the technical and the philosophical points of view. Topics discussed include search, A*, Knowledge Representation, Neural Nets.


Applications of Artificial Intelligence

Video Lectures: CSE592 (University of Washington)

Course website
Introduction to the use of Artificial Intelligence tools and techniques in industrial and company settings. Topics include: foundations (search, knowledge representation) and tools such as expert systems, natural language interfaces and machine learning techniques.



Related Posts


Google Tech-Talk Computer Science Video Lectures
(Lectures on theoretical and practical aspects of computer science such as: creative commons licensing issues, grid clusters, debian linux testing, python programming language, computer security, networking, click fraud, reusable software components, ruby programming language, privacy, service monitoring)


More Mathematics and Theoretical Computer Science Video Lectures
(Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)


Computer Science Lectures
(Courses include higher computing (intro to theory of computation), intro to computer science, data structures, compiler optimization, computers and internet, intro to clojure, the akamai story, cryptography, EECS colloquium videos at Case Western Reserve University)


Computer Science Courses
(Includes introduction to computer science and computing systems, computational complexity and quantum computing, the c programming language, multicore programming, statistics and data mining, combinatorics, software testing, evolutionary computation, deep learning, data structures and algorithms and computational origami.)

2:46 AM

Computer Science Lectures

Posted by fateh

Greetings everyone! A new month and a new post on free science online. This month I have a bunch of computer science video lectures.

Video lectures include: basics of computation theory, intro to computer science, data structures, compiler optimization, intro to computers and internet, intro to clojure, and some videos from EECS colloquium at Case Western Reserve University.


Higher Computing (University of New South Wales, by Richard Buckland, COMP1917)


Higher Computing Video Lectures


Course description:
This is the introductory course for computer science at UNSW. This course consists of three strands: programming, systems, and general computer-science literacy. The programming strand is further divided into two parts. For the first half of the course we cover small scale programming, in the second half we look at how to effectively use teams to produce more substantial software. In the systems strand we will look at how computers work. Concentrating on microprocessors, memory, and machine code. In the literacy strand we will look at topics drawn from: computing history, algorithms, WWW programming, ethics and law, cryptography and security, and other topics of general interest. The strands will be covered in an intermingled fashion.

Course topics:
Higher Computing. Inside a computer. Machine Code. Simple C Program. Clarity (C programming #2). Solving Problems. Side Effects. A simple recursive function. The Amazing Alan Turing. The Turing Test. Frames. Arrays. Pass by reference. Game design. Everything you need to know about pointers. Sudoku solver. Stack Frames. eXtreme Programming. VS programming. Programming in the Large. Stress. Random Numbers. The Trouble with Concrete Types. Abstract Data Types in C. Blackadder and Baldrick. ADT. Steganography (hidden messages). Don't give up. File I/O. Linked lists. Experimenting with CMOS. Complexity & Trees. Errors, Risks, Snarks, Boojums. Taste of Graphics. Sample Tree Code: loop detection. Ethics. Hamming Error Correcting Code. Professionalism. What makes a good programmer? Learning and Teaching Computing. Coding samples.


Introduction to Computer Science (Harvard, professor David J. Malan)


Intro to Comp. Sci. Video Course


Course description:
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 solve problems more effectively. As such, its lessons are applicable well beyond the boundaries of computer science itself. That the course does teach you how to program, though, is perhaps its most empowering return. With this skill comes the ability to solve real-world problems in ways and at speeds beyond the abilities of most humans.

Course topics:
How Computers Work, Binary. Introduction to Programming and Scratch. Threads and Programs with Multiple Scripts. Binary Numbers, Programming Languages, Working in Linux, and Programming in C. Secure File Transfer, Variable Types, and Arithmetic Operators. Standard Input Functions, Boolean Expressions, and Loops. Cryptography, Bugs, Integer Casting, and Functions. Local and Global Variables, the Stack, Return Values, and Arrays. Strings as Arrays, Command-Line Arguments, and more Cryptography. Run Times and Algorithms, Recursion. Sorting: Bubble Sort, Selection Sort, and Merge Sort. Hardware, Processors, and Implications for Software. Greedy Algorithms, Software Design and Debugging. Pointers. Pointers and Arrays, Dynamic Memory Allocation. Pointer Arithmetic, Structures, File I/O. Linked Lists. Inserting and Deleting Elements in Linked Lists, Doubly-Linked Lists. Hash Tables, Dealing with Collisions. Pointers to Pointers, Binary Search Tree, Tries, Heaps. Heapsort, Jeopardy. Huffman Coding Theory. Bitwise Operators, Underneath the Hood - From Code to Executable File. Dangerous Functions, Secure Code. The Internet and Webpages - HTTP and XHTML. Introduction to PHP. User Input, Setting up a Login Page, SQL. Threats. Introduction to LISP. Brief Introduction to System Programming and Machine Organization. Conclusions.


Data Structures (Berkeley, professor Paul Hilfinger)


Data Structures Video Lectures


Course description:
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.

Course topics:
Developing a Simple Program. More on Simple Programs. Values and Containers. Simple Pointer Manipulation. Arrays and Objects. Object-Oriented Mechanisms. Interfaces and Abstract Classes. Abstract Methods and Classes, Continued. Examples of Interfaces. Misc. Support for Abstraction; Exceptions. Numbers. Algorithmic Analysis. Collections Overview. Paradox of Voting. Resource Curse. Getting a View - Sublists. Data Structures Exam Review. Trees. Trees, Searching. Generic Programming. Priority Queues, Range Queries. Hashing. Sorting. Balanced Search Structures. Pseudo-Random Sequences. Backtracking Search, Game Trees. Enumeration Types, Threads, and Concurrency. Graphs, Introduction. Graphs, Minimal Spanning Trees, Union-find. Dynamic Programming. Storage Management. Storage Management, Continued, Reflection. Data Structures Course Summary.


Compiler Optimization


Compiler Optimization Video Lectures


Course description:
This course introduces students to modern techniques in efficient implementation of programming languages. Modern processors and systems are designed based on the assumption that a compiler will be able to effectively exploit architectural resources. This course will examine in detail techniques to exploit instruction level parallelism, memory hierarchy and higher level parallelism. It will examine classic static analysis approaches to these problems and introduce newer feedback directed and dynamic approaches to optimisation.

Course topics:
Scalar Optimisation - Redundant Expressions. Scalar Optimisation - Dataflow Framework and SSA. Code Generation. Instruction Scheduling. Register Allocation. Dependence Analysis. Program Transformations. Vectorisation. Parallelisation. Adaptive and Profile Directed Compilation. Iterative + Dynamic Compilation. Dynamic Compilation. Machine Learning based Compilation.


Understanding Computers and the Internet


Understanding Computers and the Internet Videos


Video course description:
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 others, and how your computer can become infected with a worm just by turning it on. In this course we demystify computers and the Internet, along with their jargon, so that students understand not only what they can do with each but also how it all works and why. Students leave this course armed with a new vocabulary and equipped for further exploration of computers and the Internet. Topics include hardware, software, the Internet, multimedia, security, website development, programming, and dotcoms. This course is designed both for those with little, if any, computer experience and for those who use a computer every day.

Course topics:
Hardware - Computation. Overview. Bits and bytes. ASCII. Processors. Motherboards: buses, connectors, ports, slots, and sockets. Memory: ROM, RAM, and cache. Secondary storage: floppy disks, hard disks (PATA and SATA), CDs, and DVDs. Virtual Memory. Expansion buses and cards: AGP, ISA, PCI, PCI Express, and SCSI. I/O devices. Peripherals. How to shop for a computer. History. The Internet - Networks: clients and servers, peer-to-peer, LANs and WLANs, the Internet, and domains. Email: addresses; IMAP, POP and SMTP; netiquette; spam; emoticons; snail mail; and listservs. SSH. The World Wide Web: URLs and HTTP. Blogs. Instant messaging. SFTP. Usenet. Network topologies. The Internet: backbones, TCP/IP, DHCP, and DNS. NAT. Ethernet: NICs, cabling, switches, routers, and access points. Wireless: IR, RF, Bluetooth, and WiFi. ISPs. Modems: dialup, cable, and DSL. Multimedia - Graphics: file formats, bitmaps and vectors, and compression. Audio: file formats and compression. Video (and audio): file formats and compression. Streaming. Security - Threats to privacy: cookies, forms, logs, and data recovery. Security risks: packet sniffing, passwords, phishing, hacking, viruses and worms, spyware, and zombies. Piracy: WaReZ and cracking. Defenses: scrubbing, firewalls, proxy servers, VPNs, cryptography, virus scanners, product registration and activation. Website Development - Webservers: structure, permissions, and implementations. Static webpages: XHTML, well-formedness, and validity. Dynamic webpages: SSIs, DHTML, AJAX, CGI, ASPs, and JSPs. Programming - Pseudocode. Constructs: instructions, variables, conditions, branches, and loops. Languages: interpreted and compiled. Scratch.

4:35 AM

Overview of Computer Architecture

Posted by fateh

Your computer system consists of thousands of individual components that work in harmony to process data. Each of these components has its own job to perform, and each has its own performance characteristics.

The brainpower of the system is the Central Processing Unit(CPU), which processes all the calculations and instructions that run on the computer. The job of the rest of the system is to keep the CPU busy with instructions to process. A well-tuned system runs at maximum performance if the CPU or CPU are busy 100% of the time.

So how does the system keep the CPUs busy? In general, the system consists of different layers, or tiers, of progressively slower components. Because faster components are typically the most expensive, you must perform a balancing act between speed and cost efficiency.

CPU and Cache


The CPU and the CPU’s cache are the fastest components of the system. The cache is high-speed memory used to store recently used data instructions so that it can provide quick access if this data is used again in a short time. Most CPU hardware designs have a cache built into the CPU chip. This internal cache is known as a Level 1 (or L1) cache. Typically, an L1 cache is quite small-8-16KB.

When a certain piece of data is wanted, the hardware looks first in the L1 cache. If the data is there, it’s processed immediately. If the data is not available in the cache, the hardware looks in the L2 cache, which is external to the CPU chip but located close to it. The L2 cache is connected to the CPU chip(s) on the same side of the memory bus as the CPU. To get to main memory, you must use the memory bus, which affects the speed of the memory access


CPU Design


Most instructions processing occurs in the CPU. Although certain intelligent devices, such as disk controllers, cam process some instruction, the instructions these devices can handle are limited to the control of dada moving to and from the devices. The CPU works from the determine how quickly these instructions are executed.
The CPU usually falls into one of two groups process:

Complex Instructions Set Computer(CISC) or
Reduced Instructions Set Computer(RISC).

4:28 AM

Plotter

Posted by fateh


Plotter


Plotter
is an important output device. Used to print high quality graphics and drawings. Although the graphics can be printed on printers, the resolution of such printing is limited on printers. Plotters are generally used for printing/drawing graphical images such as charts, drawings, maps. Of engineering and scientific application.

Some important types of printers are:

a.) Flat Bed Plotters:
These plotters print the graphical images by moving the pen on stationary flat surface material. They produce very accurate drawings.

b.) Drum Plotters:
These plotters print graphical images by moving both the pen and the drum having paper. They do not produce as accurate drawings as printed by flat bed plotters.

c.)Inkjet Plotters: These plotters use inkjet in place of pens. They are faster than flat bed plotters and can print multi-colored large drawings.