Steven Skiena's Programming Challenges Lectures

Course description:

In this course professor Steven Skiena discusses programming challenge problems and solves them. The course includes 26 lectures.

Course topics:

Data Structures. Strings. Sorting. Arithmetic and Algebra. Combinatorics. Number Theory. Backtracking. Graph Traversal. Graph Algorithms. Dynamic Programming. Geometry. Computational Geometry.

University of Cape Town (UCT) Algorithm Circle

Lectures include:

Basic algorithm review. IOI 2009 Discussion and Solutions. Maths for Algorithms. Data Structures. Testing and Debugging. Complexity and Computability Theory. Computational Geometry. Contest Strategy. Dynamic Programming. Graph Theory.

Programming in Haskell

Course description:

There are 13 lectures in the course. Dr. Erik Meijer teaches Haskell and functional programming in general from the ground up starting with types, includes monads and ends with parsers.

SICP - Structure and Interpretation of Computer Programs

Course description:

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.

Course topics:

Overview and Introduction to Lisp. Higher-order Procedures. Henderson Escher Example. Pattern Matching and Rule-based Substitution. Assignment, State, and Side-effects. Computational Objects. Generic Operators. Symbolic Differentiation; Quotation. Compound Data. Procedures and Processes; Substitution Model. Streams. Metacircular Evaluator. Logic Programming. Register Machines. Explicit-control Evaluator. Compilation. Storage Allocation and Garbage Collection.

Why Macros Matter

Lecture description:

Building new programming languages from whole cloth is a difficult proposition at best. Macro system provide an alternative; they support the construction of new programming languages from existing existing pieces, while still providing the flexibility to radically change the syntax and semantics of the programming language. In this talk, Robby Findler, associate professor of electrical engineering and computer science at Northwestern University, will give a high-level overview of the research area of macros, showing what can be accomplished with them and introducing some of the technical challenges they pose.

Scheme at Northeastern University

Lecture description:

This talk describes how the Northeastern University programming programming in Scheme curriculum has evolved over the last few years and Dr. Felleisen's role in this process. This covers the history, the background, the connections, the context, the successes, and the failures. Dr. Felleisen also sketches out what must be added to make this curriculum the best in the country so that we can prepare every single graduate for a life time of software creation.

Programming Methodology

Course description:

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.

Programming Abstractions

Course description:

This course is the natural successor to Programming Methodology (see above) 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.

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

Programming Paradigms

Course description:

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

Machine Learning

Course topics:

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.

Natural Language Processing

Course description:

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.

Effective ML Programming

Video lecture description:

A guest lecture given by Yaron Minsky of Jane Street about how to program effectively in ML. The talk was given as part of the intro computer science class at Harvard, CS51, where the students had spent much of the semester programming in OCaml.

The Evolution of Lisp

Lecture description:

In this presentation recorded at OOPSLA 2008, Guy L. Steele Jr. and Richard P. Gabriel reenact their presentation called "The Evolution of Lisp" which took place during ACM History of Languages Conference in 1993.

Related Posts

Hey everyone, this month I have various programming video lectures for programmers of all levels.They include: Steven Skiena's programming challenges with solutions. IOI 2009 problems and solutions. Haskell programming. Scheme. SICP. Scheme Macros. Machine Learning. Natural Language Processing. Programming Methodology. Programming Abstractions. Programming Paradigms. Evolution of Lisp. Programming Effective ML.I hope you become a better programming with these lectures. See you next time!