Education

My search for a PhD position to study Artificial General Intelligence led me to my current advisor dr. Kristinn R. Thórisson at the Center for Analysis and Design of Intelligent Agents in Reykjavik University's School of Computer Science. My research topic is Artificial Pedagogy: a new area of research for studying how to teach artificial learning systems the knowledge and skills they need to be successful.

As a part of the Faculty of Social Sciences the Artificial Intelligence major in Nijmegen was very multidisciplinary. The obvious computer science and mathematics ties were supplemented with a relatively strong cognitive and neuroscience components. I took many computer science electives to fortify my technical side. During my studies I was consistently at the top of my year and finally graduated with honors (cum laude).

I went to high school in my hometown of Boxmeer. Secondary education in the Netherlands is segregated according to (estimated) learning ability. Approximately 15% of the children in the country go to the highest level (VWO), which is meant to prepare for a career in science. I took the exact sciences course package and electives in computer science and economics. I graduated just short of cum laude with an average grade of 7.9.
University courses
prof. dr. H.J. Schriefers
This course covers central tenets of cognitive science such as perception, memory and attention. The student will also be familiarized with the most important problem areas within cognitive science as well as with important experimental techniques for researching human information processing and cognition.
prof. dr. A.M.L. Coenen
The goal of this course is to provide the student insights into the biological mechanisms that underly information processing and behavior in humans and animals.
dr. J.L. Ellis
The student is taught the basics of construction, validity and reliability of measurement instruments and methods, as well as several important psychological research methods, with a focus on the various experimental and non-experimental designs, experimental controls and their relation with causality.
prof. dr. R.A. van der Sandt
This course provides a general introduction to the contemporary field of logic. Students acquire skill in handling logical symbolism, gain insight into model building and learn to test the validity of lines of reasoning.
Encoding knowledge into the language of predicate logic and the analysis of reasoning are central to the course. The course will also cover logic as a system for the representation of knowledge versus logic as a system for reasoning; basic concepts in set theory, validity and proofs, and logical syntax, semantics and pragmatics; the relation between predicate logic and natural language and deduction; and the relationship between provability and validity, decision methods and decidability.
drs. G.F.M. Paulussen
dr. J.E.W. Smetsers
Programming is instructing a computer how to perform a certain task. Because a computer has no notion of your intention, extreme precision is required on the part of the human. This course introduces the the basic constructs that can be used to create a so-called imperative computer program. The course also covers the accurate analysis of problems and the strategies for their solutions. This analysis method is know as "top down refinement": an initial high-level description of the problem's solution is progressively refined into smaller steps. The result of this process is an algorithm that should be easy to convert into a computer program. We use C++ programming language for the implementation of of these algorithms. However, the ins and outs of the programming language itself are far less important than how to use this tool correctly to construct and maintain programs.
dr. P.A. Kamsteeg
The course is intended to give a first impression of the field of AI without going into too much technical detail. Subjects are: what does AI mean; history of AI; the role of and techniques for knowledge representation; the role of and techniques for search; an overview of research topics within AI with their basic problems and techniques.
dr. L.G. Vuurpijl
It is generally acknowledged that for the development of usable interactive systems, knowledge about the user and his perceptive, cognitive, and motor capabilities deserves a prominent treatment in the design process. The past decennia have resulted in numerous research efforts that have tried to systematically pursue the question of how to achieve this goal. The book from Dix et al. (2004) provides a nice introduction to human-computer interaction (HCI), an area that spans the boundaries between technological advancements and cognitive science. Central theme of HCI concerns the question how usable interactive systems can be designed and how the usability of such systems can be assessed. Students following this course will learn the foundations and prominent novel directions in HCI. They will design and implement interactive systems en evaluate their usability in so called human-factors experiments. Besides techniques and paradigms in HCI that have proven their value in the past (like "the desktop" and "the Internet"), new developments will be studied (like multimedia, perceptive interfaces, multimodality and mobile computing), and it will be discussed what consequences these developments have for HCI of the future. For more information, visit the course website at http://www.ai.ru.nl/aicourses/bki114.
dr. B.D. Souvignier
The course familiarizes the student with fundamental mathematical methods. It covers calculus (differentiation, integration, minima/maxima), probability (combinatorics, distributions, conditional probability, simulation), and linear algebra (systems of linear equations, matrix calculus, eigen values, inner products).
dr. B.T.M. Hofstede
This course covers practical skills regarding the recovery and production of scientific literature. Students learn to find scientific literature with university catalog, PsycINFO, Web of Science and other bibliographic methods. This skill is applied when writing a literary survey that obeys the APA norms.
dr. P.W.M. Koopman
dr. J.E.W. Smetsers
The data structures course teaches students to develop new programs and adapt existing ones in a systematic way. The emphasis in this course is on the representation of data.
Recursive data structures like lists and trees and the associated operations (store, search, sort) and related algorithms (e.g. breadth-first search, depth-first search, backtracking) are the main topics. Abstraction through object orientation is a way to strure programs and build quality software. We use the C++ programming language.
dr. J.L. Ellis
Psychology concerns itself with the behavior of people. It is therefor important to verify with our own eyes how it is that those people behave. The problem with this approach is that the variety of human behavior is more than what any person can comprehend. That is why psychology researchers use statistics. Statistics help with systematically collecting and coding observations, organizing and summarizing data, interpreting results and communicating with other researchers.
The course will cover statistics for four basic forms of research: 1) test administration, scoring and standardization, 2) passive observation, correlation and coherence, 3) experiment, effect size and t-test, and 4) theory, simulation and testing.
dr. P.A. Kamsteeg
The course aims to provide participants with insight into a number of specific aspects that play a role in developing knowledge-intensive systems. The focus is on knowledge modelling and problem solving methods, not so much on implementation and programming techniques. The main developments in a number of relevant topics are discussed and where possible exemplified by existing systems.
After a general introduction, the following topics are discussed: * the meaning of symbols, symbol systems, representations and knowledge; * analytic approaches to knowledge system development; * handling aspects of time, space, uncertainty and vagueness; * formal models of different problem types and examples of classical knowledge systems for those problem types; * advanced techniques such as bayesian networks, machine learning, truth maintenance systems.
dr. P.M.C. Lemmens
Within the field of cognitive engineering and psychonomics models are used to describe different aspects of behavior. In this course, both the notion 'model'and 'modeling'play a central role. The first part of the course will concentrate on the function of models in cognitive-psychological research. The discussed models will be classified on content (process models, data describing black box models, on analogy based biological model) as well as on form (verbal, symbolic, rule based computational; sub symbolic, neural networks based computational and mathematical models). The second part of the course all these aspects will be illustrated by several researchers from the institute, The role of modeling will be the central ssue in the presentation.
dr. P.A.T.M. Eling
prof. dr. H.H.J. Kolk
This course discusses: neuroanatomy and neurophysiology; basic neurology; general principles from cognitive neuroscience (perception, attention, memory, language, laterality, motor skills and executive functions); and clinical neuropsychology (cerebral contusion, depression, strokes, schizophrenia, neurodegenerative disorders and epilepsy).
prof. dr. A.F.J. Dijkstra
The goal of this course is to familiarize students with the major theories and research methods related to the understanding and production of written and spoken language. Students gain insight into the complex mental processes underlying efficient verbal and written communication between healthy adults, as well as into the neurological basis of such processes. The course will cover basic linguistic concepts, language perception (with an emphasis on word recognition and the mental lexicon), language production, and language in the brain.
Where applicable, recent language processing research in cognitive neuroscience will be discussed.
The processes that occur during the understanding and production of language are not just explained using verbal theories, but als using computational models that simulate these processes on a computer. This course discusses and compares some of these symbolic and subsymbolic (connectionist) models. These models cover the following research areas: auditory word recognition, visual word recognition and learning, parsing, sentence production, lexicalization and phonological encoding. The usefulness and limitations of these different computational models will be discussed.
Students learn to understand and compare the theoretical relevance, limitations and implemetations of the discussed models for computational psycholinguistics. They are also taught to make predictions for these models in example situations.
dr. W.F.G. Haselager
Three main themes are discussed in this course:
1) How is the mind related to the body? Are we material machines or does a soul reside within the body? Can machines ever be intelligent and/or conscious? 2) Do recent developments in cognitive science lead to fundamental changes in the human self-understanding. Do, for example, beliefs and desires exist, or are such concepts merely inventions? 3) What are the ethical consequences of research in AI? What are the responsibilities of the designers and developers of autonomous intelligent systems?
These themes will be discussed on the basis of several important papers. Students are required to read these papers before the lectures.
prof. dr. A.F.J. Dijkstra
dr. M. Klein
dr. S.L. Frank
The processes underlying the comprehension and productions of language and speech have not only been verbally described, but have also been simulated by computer models. Some important models of the localist/symbolic and distributed/subsymbolic traditions are discussed and compared. The models are derived from a number of research domains: auditory word recognition, visual word recognition and learning, parsing, sentence production, lexicalisation and phonological encoding. The usefulness and limitations of the various computational models are discussed.
Students must be able describe the theoretical relevance, restrictions, and methods of implementation of prominent models in computational psycholinguistics. They must be able to compare these models on relevant dimensions and make predictions for example situations and thought experiments.
dr. ir. E.C.M. Hoenkamp
This course introduces important aspects of the symbolic approach to Artificial Intelligence. Students will acquire insight in important issues from the "classic" AI that are relevant to modern developments. Main themes are constraint satisfaction problems, planning problems, decision making, and machine learning. After the course, students will be able to apply these techniques to simple practical examples.
dr. L.G. Vuurpijl
The course BKI230 provides students with a thorough understanding of artificial neural network (ANN) models, by exploring fundamental properties like architectural aspects and the processes of information processing, learning, and classification. Among the models covered are feedforward nets (perceptrons, backprop), competitive learning (Grossberg, Kohonen), constraint satisfaction (Hopfield), and modular architectures and recurrent architectures. Furthermore, students will learn more about the practical application of, e.g., multi-layered perceptrons and Kohonen neural networks. The complete pattern recognition pipeline (data acquisition, pre-processing, segmentation, feature extraction, and classification) will be covered. Central theme of the pattern recognition process reads: "How can low-level, sub-symbolic features be transformed into higher-level symbolic features?" In the process of the recognition of handwritten shapes (handwriting, geometrical objects), students will learn about signal processing, feature extraction, data analysis and clustering, and training and testing neural network simulations. Students are required to program feature extraction algorithms and they will participate in a challenge "Who achieves the highest recognition results"! The results of this exploration in feature and classifier space must be documented in an end report, evaluating your findings.
dr. P.M.C. Lemmens
The way of communication is often more important then its contants. C'est le ton qui fait la musique. The course will discuss two main topics:
- Practical training library and academic writing skills
- Oral presentation
In the first part you will learn:
- How to search for field literature and how to assess its value and relevancy
- How to map researchers and their contributions from the field
- The use of the internet and other bibliographic means
- How to write a survey (elementary academic writing skills)
In the second part you will learn:
- How to make a catching presentation
- How to boost your presentation performance
dr. B.D. Souvignier
After completion the student is familiar with a number of mathematical methods that are important for various applications in artificial intelligence. This course covers taylor series, multivariate functions, complex numbers, Fourier analysis, Fourier transform (continuous and discrete), information and entropy, Markov processes and Hidden Markov Models.
dr. D.C. van Leijenhorst
This course is dedicated to complexity theory. Questions are raised that ask "how fast is my algorithm?", "are faster versions possible?", "can we assign classes of 'difficult' algorithms?", etc. The first part of the course will emphasize the analysis on algorithms and basic concepts like calculation models, pseudocode, resource analysis and recursive algorithms. The second part covers the categorization of algorithms into complexity classes such as P and NP. The final part discisses classical theory including arithmetic complexity, sorting, cryptography and graph algorithms.
drs. G.F.M. Paulussen
prof. dr. ir. T.P. van der Weide
In this course students will get a deep understanding of conceptual modeling, and will be able to transform a model into a computational environment in general, and a relational database structure and SQL in particular. This will be related to the Unified Modeling Language UML.
dr. P.M. Achten
prof. dr. ir. M.J. Plasmeijer
In this course advanced programming concepts will be taught. We will address (1) generic programming; (2) combinatorical programming; (3) advanced concurrency concepts; (4) advanced data structures. Students will gain insight in some state-of-the-art advanced programming concepts, their theoretical background and their practical applicability.
The course will cover (1) generic programming: theoretical background, overloading, type constructor classes, kind indexing;practical applications: common generic functions, web-applications, workflow applications; (2) combinatorical programming (monadic programming, parser combinators); (3) advanced concurrency concepts (Software Transactional Memory); (4) advanced data structures (Generalized Algebraic Datatypes).
dr. ir. G.J. Tretmans
Testing is part of almost any software development project. The course "testing techniques" deals with a number of techniques, methods and tools which may help in the systematic and effective testing of software systems. Established testing techniques as well as some new developments, such as model-based testing, will be presented. Some guest lectures will be given by people from industrial software testing.
The goals of the course "testing techniques" are that students: (1) obtain an overview of, and insight in the importance and the place of structured and systematic testing within the software development cycle; (2) are familiar with standard testing concepts, terms, and nomenclature; (3) know and recognize different kinds, phases, and aspects of structured testing; (4) develop skills in applying some techniques for developing tests; (5) get experience in applying some test tools; (6) have knowledge of, and can apply some of the latest research results in model-based testing.
Topics which will be discussed are: kinds, aspects, and phases of software testing, testing within the software development trajectory, test automation and test tools, (code-)coverage, test organization, testing standards, developing test cases (black-box, white-box, equivalence partitioning, boundary value analysis, state-based testing), automatic test generation, the discriminating power of tests (testing equivalences), model-based testing with transition systems.
dr. P.M. Achten
prof. dr. ir. M.J. Plasmeijer
This course treats programming concepts from the perspective of a functional Clean programming language. These concepts include recursive functions and data structures, types, overloading, object abstraction, algebraic data types, higher-order functions, polymorphism and currying.
After this course the student will be able to compare programming concepts and understand the underlying tenets. They will be able to read and write functional programs, as well as reason about them and create correctness proofs.
dr. F.A. Grootjen
Is there life after study? It is smart to think about your future before finishing your study. A realistic view about yourself, your possibilities and restrictions and the choices offered by the job market are the necessary inputs you need to make a sound choice. Questions like ‘what is it what I want?', ‘what is what I am able to do?', ‘what is it what I like?' and ‘where am I heading?' are the core issues that may help you in creating a plan. The course addresses this process in three sequential parts: 1. self reflection 2. targetting 3. planning
Using self reflection you try to formulate your wishes, which (together with information about the job market) may lead to a clear target. Subsequently you should create a plan to achieve that goal.
In this course the students are asked to:
- do a self analysis to determine their strong/weak points
- use the analysis and their personal interest to outline a desirable job (duties, colleagues en job environment)
- use the job outline to make a sketch of desired company
- make a selection out of the present job opportunities
- write a standard, and tailor suited resume/job application letter
- Contemplate about their career
During the course the following topics will be discussed:
- How do determine your strong/weak points, your personality and interests?
- What are your requirements for a perfect job
- Working in the industry: guest lectures by companies and alumni
- What companies suit you, and how do you find them
- Which resources can be deployed to gain information?
- How do I write a good, tailor made resume/application letter
- How to manage my future career?
After this course you will be able to:
- Determine your strong and weak points and establish your own personal profile
- Create a plan to (if needed) adapt your profile
- Select a company that fits your profile
- Select a fitting job from a range of job opportunities
- Write a good, to the point, relevant application letter.
dr. I.G. Sprinkhuizen-Kuijper
Multi-agent systems are systems composed of multiple intelligent, autonomous agents. They are used both for industrial applications as for cognitive sciences. This course introduces the most important aspects of multiagent systems, like: autonomy, beliefs, desires, intentions, goals, reasoning (modal logic), reactivity, and proactivity. The design and simulation of such systems will also be discussed. Emphasis will be given to cooperation and communication between agents.
drs. G.F.M. Paulussen
In this course we use a number of methods and techniques to design and realize administrative information systems in a structured way. An important aspect in this context is that information systems usually are developed in teamwork; such a situation is simulated as in the project-part of the course you will have to cooperate in teams of 4 or 5 students.
dr. P.A. Kamsteeg
This practical work course follows up on the theoretically oriented course Knowledge systems *, in which the aspect of knowledge acquisition is only briefly discussed. Knowledge acquisition refers to interviewing and observing a domain expert with the aim of modelling his/her knowledge about a specialized cognitive task in an implementable form. It uses methods and techniques that are often based on psychometric and cognitive psychological theories. The primary intention of the course is to exercise a number of useful and representative techniques, and a methodical execution of the acquisition process as a whole. In addition, implementing parts of expert knowledge will be exercised.
After successfully finishing the course, a student will:
- have an overview of methods and techniques for acquiring, analyzing and formalizing the knowledge of an expert for use in an expert system;
- be able to apply a number of such methods and techniques;
- have the knowledge and skills to systematically and analytically set up, execute and control the knowledge acquisition process.
prof. dr. H.A. Proper
The behaviour of modern day enterprises, as well as society, are largely determined rules. Examples of such rules include taxation laws, rules governing the application of mortgages and guidelines guiding doctors in diagnosing patients.
Sometimes these rules reflect laws which one would like to enforce strictly. At other times, they represent best-practices that aim to guide people in performing their work. Collectively one may refer to these rules as business rules. Business rules constrain/guide the behaviour of businesses/enterprises/, both with regard to operational processes as well as change processes. In this new course we will investigate several aspects of such rules. For example, the modelling processes required to obtain these rules, the languages needed to express the rules, as well as the measurements needed to enforce them. With regards to the process of modelling business rules, we will take the perspective that this involves a specific kind of knowledge engineering since business rules essentially capture organisational knowledge.
Finally, business rules are a means to an end. Some parties must have some reason to regulate the behaviour of/in an enterprise/society. In this need we find the rationalization for business rules and their deployment. We will take a risk management perspective in reasoning about such regulatory need, allowing us to take a cost-benefit perspective on business rules and their deployment.
dr. L.G. Vuurpijl
This course builds on the bachelor course "Introduction in human-computer interaction (BKI114)". Among the topics in this course are the analysis and formal (cognitive) modelling of HCI, perceptive and multimodal interfaces, and other application areas like image retrieval, interactive maps, and conversational dialog systems. Students will study various prominent papers describing current research in these areas. They will design and implement at least two interactive systems that are used for performing human-factors research, i.e., research that sheds a light on how well humans cope with interactive systems and vice versa. They will write and defend a short project proposal describing their own plans to advance the state-of-the-art in HCI.
dr. P.A. Kamsteeg
Computer programs that provide flexible and tailored user support need a diversity of explicitly represented knowledge: about the domain content; about the user, and about educational strategies and techniques. This type of user support is relevant to all kinds of software, but it is most salient in the prototypical context of intelligent tutoring systems. The course will discuss the following aspects, mainly on the basis of original research papers about existing systems:
- the aims (different types of support) for user modelling;
- the extra requirements for a computer program to enable tailored user support, illucidated on the basis of the architecture of intelligent tutoring systems;
- different types of knowledge about users that can be maintained in a user model, and the corresponding categories of user models that can be used;
- problems in initializing and updating a user model: uncertainty in diagnosis, relevance of data (breadth and depth), non-monotonous nature of user models;
- a number of specific techniques that may solve some of the above problems, but are usually only applicable in restricted contexts.
dr. P.J.F. Lucas
Handling uncertain knowledge has been one of the central problems of AIresearch during the past 30 years. In the 1970s and 1980s uncertaintywas handled by means of formalisms that were linked to rule-basedrepresentation and reasoning methods. Since the 1990s probabilisticgraphical models, in particular Bayesian networks, are seen as theprimary formalisms to deal with uncertain knowledge. Both early andnew methods for represensenting uncertainty are studied in the course, where inparticular various aspects of Bayesian networks are covered.
At the end of this course, the student should be able to:
- understand the principles of reasoning under uncertainty
- understand different numerical models for the representation of uncertainty, such as the CF model, the subjective Bayesian method, Bayesian belief networks, and possibly Dempster-Shafer theory
- have insight into model-based approaches to AI
- have insight into the pros and cons of learning models versus using expert knowledge
- have some experience in experimenting with computational intelligence systems to solve problems involving probability theory
prof. dr. ir. T.P. van der Weide
IR (A constructive approach to Information Retrieval) treats the backgrounds of Information Retrieval:
- How do people search for information, and how can this be formalized?
- How do people describe what they mean, and how can we formalize meaning?
- How can these points be combined?
An important application area is the Internet.
The goals of the course IR (A constructive approach to Information Retrieval) is that its participants
- are familiar with the base models that are used for Information Retrieval.
- have knowledge of query languages, both syntactically and semantically.
- are familiar with information extraction from documents, inter-document relations and their appreciation.
- have insight and proficiency in design and construction of search engines.
- have insight in interaction techniques to support searchers in their quest for information.
- have some experience with scientific literature in this field.
Dr. W.A.J.J. Wiegerinck
Statistical pattern recognition is the research area that studies and develops methods to teach a computer to recognize relationships in noisy data. This course provides an introduction into this field from the perspective of Bayesian statistics. A number of classical (linear discriminants) and modern methods (neural networks, Bayesian learning) are treated from this viewpoint. The course covers probability density estimation, single and multi-layer perceptrons, parameter optimization, learning and generalization and Bayesian learning.
dr. P.A. Kamsteeg
dr. F.A. Grootjen
The course covers principles and objectives of object-oriented design (such as responsible roles and loose coupling), OOD processes, techniques and tools (such as CRC cards and UML), the use of design patterns, and specifics of Java classes. After having completed the course, students should be able to evaluate the quality of object-oriented designs, to effectively make an object-oriented design for a problem, and to implement an object-oriented design in a suitable OO language.
dr. W.F.G. Haselager
Traditional cognitive science emphasizes internal information processing. Representations and computational processing are considered as fundamental for the explanation of cognition and behavior. Recently however more attention is paid to the important role bodily interaction with the environment plays in the emergence of intelligent behavior. During the course we will discuss several papers that examine various aspects of the relatively new view of embodied embedded cognition: the (dis)advantages of representations, the empirical evidence for EEC stemming from psychology, robotics and cognitive neuroscience, and the consequences of EEC for views on the nature of explanation within the philosophy of science. During the meetings students will develop their ‘conference skills' (giving presentations, participating in discussions after a talk, getting ‘inside information', etc.).
prof. dr. ir. P.W.M. Desain
Recently it has become possible to directly use brain activity to control devices. In the design of these so called Brain Computer Interfaces a large part of the effort goes into building a reliable classification of the signals. In BCI I this will be treated in detail. (in BCI II the focus will be on tasks, plasticity, measurement methods, signatures and markers, output control, user interface aspects and performance). Topics in BCI I include preprocessing, feature extraction, time-frequency analysis, spatial filtering, classification, and advanced methods.
dr. I.G. Sprinkhuizen-Kuijper
dr. I.J.E.I. van Rooij
The student performs research in a limited scope and supervised manner and reports on it in a thesis. The subject of this research can be freely chosen within the field of artificial under the provision that one of the teachers can supervise the endeavor. The research could be literary, experimental or the design and implementation of some technique.
In my bachelor thesis I implemented a technique to prevent catastrophic interference when sequentially learning multiple tasks in neural network. The basic idea was to add "meaningful representation" nodes to the network and train those for each individual task while fixing the weights of the network. This worked on extremely simple toy problems if the network was pre-trained sufficiently well. You can find my thesis, conference article and poster on the "publications" page.
Jason Farquhar
prof. dr. ir. P.W.M. Desain
The student does some kind of novel, publishable research and describes it in a thesis. This is usually the research done during the master internship / training period.
My master thesis was about brain-computer interfaces (BCIs) that utilize a brain signal called the steady-state visual evoked potential (SSVEP) and the effects of choosing different characteristics for the visual stimuli required for such a system. I participated in a systematic review of the field (see publications), created a BCI with cutting-edge performance and did experiments to determine stimuli effects. My thesis and a short article about this research can be found on the publications page.
Hilmar Finnsson
Compilers are the most important part of a programming development environment. The course defines the function and objective of a compiler. Lexical analysis of programs is discussed in detail, regular expression and finite automatons defined and the use of Lex introduced. Top-down and bottom-up approaches in parsing are discussed precisely and the use of Yacc introduced. Implementation of error handling illustrated, particularly semantic analysis. Finally, code generation is covered. Construction of a compiler will be a large component of the course.
Knowledge •Understand the structure and design of compilers •Understand the role and function of lexical analyzers, parsers and code generators •Be able to get a theoretical foundation necessary for compiler construction Skills •Be able to use regular expressions and finite machines when doing lexical analyzation •Be able to use fragmented grammar and both above- and bottom up parsing methods •Be able to use the software that makes lexical analyzers and parsers Competence •Be able to design and build a simple compiler
Stephan Schiffel
This course will provide a comprehensive overview of the field of general game playing. The aim of general game playing is to create intelligent autonomous agents that automatically learn how to play many different games at an expert level without any human intervention, given only a description of the game rules. This requires that the agents learn diverse game-playing strategies without any game-specific knowledge being provided by their developers. A successful realization of this task involves the understanding and application of topics from many artificial-intelligence sub-disciplines, such as knowledge representation, agent-based reasoning, heuristic search, and machine learning. This course provided the students with such a background as well as an introduction to different parallel processing paradigms in the context of game-tree search; but parallel processing is fast becoming increasingly more relevant because of the foreseen development of massively multi-core computers.
On completion of the course students should have gained a thorough hands-on experience in building a complex artificial-intelligence based system, capable of both reasoning and learning from its actions. In particular, students should have learned how to - use logic to describe dynamic environments (games) - use logical reasoning to simulate dynamic environments - use search methods for automatic decision making - use heuristics to guide the search process - implement a stable and reliable system that has to deal with a wide variety of input - implement algorithms that have to obey strict time-constraints - build a game playing program
Online courses
Peter Norvig
Sebastian Thrun
A bold experiment in distributed education, "Introduction to Artificial Intelligence" wax offered free and online to students worldwide from October 10th to December 18th 2011. The course included feedback on progress and a statement of accomplishment. Taught by Sebastian Thrun and Peter Norvig, the curriculum drew from that used in Stanford's introductory Artificial Intelligence course. The instructors offered similar materials, assignments, and exams.
Artificial Intelligence is the science of making computer software that reasons about the world around it. Humanoid robots, Google Goggles, self-driving cars, even software that suggests music you might like to hear are all examples of AI. In this class, you will learn how to create this software from two of the leaders in the field.
Andrew Ng
Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. Machine learning is so pervasive today that you probably use it dozens of times a day without knowing it. Many researchers also think it is the best way to make progress towards human-level AI. In this class, you will learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. More importantly, you'll learn about not only the theoretical underpinnings of learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. Finally, you'll learn about some of Silicon Valley's best practices in innovation as it pertains to machine learning and AI.
This course provides a broad introduction to machine learning, datamining, and statistical pattern recognition. Topics include: (i) Supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks). (ii) Unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). (iii) Best practices in machine learning (bias/variance theory; innovation process in machine learning and AI). The course will also draw from numerous case studies and applications, so that you'll also learn how to apply learning algorithms to building smart robots (perception, control), text understanding (web search, anti-spam), computer vision, medical informatics, audio, database mining, and other areas.
Note: The link now redirects to the new course, but I took the original "ml-class" in the fall of 2011 where prof. Ng was pioneering the new wave of massive open online courses alongside professors Widom, Thrun and Norvig. This version did not include programming assignments.
Armando Fox
David Patterson
This course teaches the fundamentals for engineering long-lasting software using highly-productive Agile techniques to develop Software as a Service (SaaS) using Ruby on Rails. Students will understand the new challenges and opportunities of SaaS versus shrink-wrapped software. They will understand and apply fundamental programming techniques to the design, development, testing, and public cloud deployment of a simple SaaS application. Students will use best-of-breed tools that support modern development techniques including behavior-driven design, user stories, test-driven development, velocity, and pair programming. Students will learn how modern programming language features like metaprogramming and reflection can improve productivity and code maintainability.
Sebastian Thrun
Learn how to program all the major systems of a robotic car from the leader of Google and Stanford's autonomous driving teams. This class will teach basic methods in Artificial Intelligence, including: probabilistic inference, planning and search, localization, tracking and control, all with a focus on robotics. Extensive programming examples and assignments will apply these methods in the context of building self-driving cars.
Daphne Koller
Uncertainty is unavoidable in real-world applications: we can almost never predict with certainty what will happen in the future, and even in the present and the past, many important aspects of the world are not observed with certainty. Probability theory gives us the basic foundation to model our beliefs about the different possible states of the world, and to update these beliefs as new evidence is obtained. These beliefs can be combined with individual preferences to help guide our actions, and even in selecting which observations to make. While probability theory has existed since the 17th century, our ability to use it effectively on large problems involving many inter-related variables is fairly recent, and is due largely to the development of a framework known as Probabilistic Graphical Models (PGMs). This framework, which spans methods such as Bayesian networks and Markov random fields, uses ideas from discrete data structures in computer science to efficiently encode and manipulate probability distributions over high-dimensional spaces, often involving hundreds or even many thousands of variables. These methods have been used in an enormous range of application domains, which include: web search, medical and fault diagnosis, image understanding, reconstruction of biological networks, speech recognition, natural language processing, decoding of messages sent over a noisy communication channel, robot navigation, and many more. The PGM framework provides an essential tool for anyone who wants to learn how to reason coherently from limited and noisy observations.
In this class, you will learn the basics of the PGM representation and how to construct them, using both human knowledge and machine learning techniques; you will also learn algorithms for using a PGM to reach conclusions about the world from limited and noisy evidence, and for making good decisions under uncertainty. The class covers both the theoretical underpinnings of the PGM framework and practical skills needed to apply these techniques to new problems.
Scott Page
We live in a complex world with diverse people, firms, and governments whose behaviors aggregate to produce novel, unexpected phenomena. We see political uprisings, market crashes, and a never ending array of social trends. How do we make sense of it? Models. Evidence shows that people who think with models consistently outperform those who don't. And, moreover people who think with lots of models outperform people who use only one. Why do models make us better thinkers? Models help us to better organize information - to make sense of that fire hose or hairball of data (choose your metaphor) available on the Internet. Models improve our abilities to make accurate forecasts. They help us make better decisions and adopt more effective strategies. They even can improve our ability to design institutions and procedures. In this class, I present a starter kit of models: I start with models of tipping points. I move on to cover models explain the wisdom of crowds, models that show why some countries are rich and some are poor, and models that help unpack the strategic decisions of firm and politicians. The models covered in this class provide a foundation for future social science classes, whether they be in economics, political science, business, or sociology. Mastering this material will give you a huge leg up in advanced courses. They also help you in life. Here's how the course will work. For each model, I present a short, easily digestible overview lecture. Then, I'll dig deeper. I'll go into the technical details of the model. Those technical lectures won't require calculus but be prepared for some algebra. For all the lectures, I'll offer some questions and we'll have quizzes and even a final exam. If you decide to do the deep dive, and take all the quizzes and the exam, you'll receive a certificate of completion. If you just decide to follow along for the introductory lectures to gain some exposure that's fine too. It's all free. And it's all here to help make you a better thinker!
Michael Genesereth
Logic is one of the oldest intellectual disciplines in human history. It dates back to the times of Aristotle; it has been studied through the centuries; and it is still a subject of active investigation today.
This course is a basic introduction to Logic. It shows how to formalize information in form of logical sentences. It shows how to reason systematically with this information to produce all logical conclusions and only logical conclusions. And it examines logic technology and its applications - in mathematics, science, engineering, business, law, and so forth.
The course differs from other introductory courses in Logic in two important ways. First of all, it teaches a novel theory of logic that improves accessibility while preserving rigor. Second, the material is laced with interactive demonstrations and exercises that suggest the many practical applications of the field.
Jitendra Malik
Computer vision seeks to develop algorithms that replicate one of the most amazing capabilities of the human brain - inferring properties of the external world purely by means of the light reflected from various objects to the eyes. We can determine how far away these objects are, how they are oriented with respect to us, and in relationship to various other objects. We reliably guess their colors and textures, and we can recognize them - this is a chair, this is my dog Fido, this is a picture of Bill Clinton smiling. We can segment out regions of space corresponding to particular objects and track them over time, such as a basketball player weaving through the court.
In this course, we will study the concepts and algorithms behind some of the remarkable successes of computer vision - capabilities such as face detection, handwritten digit recognition, reconstructing three-dimensional models of cities, automated monitoring of activities, segmenting out organs or tissues in biological images, and sensing for control of robots. We will build this up from fundamentals - an understanding of the geometry and radiometry of image formation, core image processing operations, as well as tools from statistical machine learning. On completing this course a student would understand the key ideas behind the leading techniques for the main problems of computer vision - reconstruction, recognition and segmentation - and have a sense of what computers today can or cannot do.
Robert Sedgewick
Kevin Wayne
An introduction to fundamental data types, algorithms, and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Specific topics covered include: union-find algorithms; basic iterable data types (stack, queues, and bags); sorting algorithms (quicksort, mergesort, heapsort) and applications; priority queues; binary search trees; red-black trees; hash tables; and symbol-table applications.
Andrew Conway
Statistics One is designed to be a friendly introduction to very simple, very basic, fundamental concepts in statistics. This course is, quite literally, for everyone. If you think you can't learn statistics, this course is for you. If you had a statistics course before but feel like you need a refresher, this course is for you. Statistics One also provides an introduction to the R programming language. All the examples and assignments will involve writing code in R and interpreting R output. R software is free! It is also an open source programming language. What this means is you can download R, take this course, and start programming in R after just a few lectures. Statistics may seem like a foreign language, and in many ways it is. The ultimate goal of Statistics One is to get people all over the world to speak this language. So consider this your first course in a new and exciting universal language!
Roger Peng
In this course you will learn how to program in R and how to use R for effective data analysis. You will learn how to install and configure software necessary for a statistical programming environment, discuss generic programming language concepts as they are implemented in a high-level statistical language. The course covers practical issues in statistical computing which includes programming in R, reading data into R, creating informative data graphics, accessing R packages, creating R packages with documentation, writing R functions, debugging, and organizing and commenting R code. Topics in statistical data analysis and optimization will provide working examples.
Keith Devlin
The goal of the course is to help you develop a valuable mental ability – a powerful way of thinking that our ancestors have developed over three thousand years.
Mathematical thinking is not the same as doing mathematics – at least not as mathematics is typically presented in our school system. School math typically focuses on learning procedures to solve highly stereotyped problems. Professional mathematicians think a certain way to solve real problems, problems that can arise from the everyday world, or from science, or from within mathematics itself. The key to success in school math is to learn to think inside-the-box. In contrast, a key feature of mathematical thinking is thinking outside-the-box – a valuable ability in today’s world. This course helps to develop that crucial way of thinking.
The primary audience is first-year students at college or university who are thinking of majoring in mathematics or a mathematically-dependent subject, or high school seniors who have such a college career in mind. They will need mathematical thinking to succeed in their major. Because mathematical thinking is a valuable life skill, however, anyone over the age of 17 could benefit from taking the course.
Martin Odersky
This course introduces the cornerstones of functional programming using the Scala programming language. Functional programming has become more and more popular in recent years because it promotes code that’s safe, concise, and elegant. Furthermore, functional programming makes it easier to write parallel code for today’s and tomorrow’s multiprocessors by replacing mutable variables and loops with powerful ways to define and compose functions.
Scala is a language that fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with Java and its tools. Scala is now used in a rapidly increasing number of open source projects and companies. It provides the core infrastructure for sites such as Twitter, LinkedIn, Foursquare, Tumblr, and Klout.
In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically.
The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series of assignments, most of which are also programming projects.
Brian Caffo
Statistics is a thriving discipline that provides the fundamental language of all empirical research. Biostatistics is simply the field of statistics applied in the biomedical sciences.
This course puts forward key mathematical and statistical topics to help students understand biostatistics at a deeper level. After completing this course, students will have a basic level of understanding of the goals, assumptions, benefits and negatives of probability modeling in the medical sciences. This understanding will be invaluable when approaching new statistical topics and will provide students with a framework and foundation for future self learning.
Topics include probability, random variables, distributions, expectations, variances, independence, conditional probabilities, likelihood and some basic inferences based on confidence intervals.
Kristin Sainani
This course trains scientists to become more effective, efficient, and confident writers. This is a hands-on course that emphasizes interactive examples and practice. In the first four weeks, we will review principles of effective writing, examples of good and bad writing, and tips for making the writing process easier. In the second four weeks, we will examine issues specific to scientific writing, including: authorship, peer review, the format of an original manuscript, and communicating science for lay audiences. Students will complete editing exercises, write two short papers, and edit each others’ work.
The primary audience is undergraduate science majors, graduate students in scientific disciplines, and professional scientists. Students from non-science disciplines can also benefit from the training provided in the first four weeks (on general principles of effective writing).
Geoffrey Hinton
Neural networks use learning algorithms that are inspired by our understanding of how the brain learns, but they are evaluated by how well they work for practical applications such as speech recognition, object recognition, image retrieval and the ability to recommend products that a user will like. As computers become more powerful, Neural Networks are gradually taking over from simpler Machine Learning methods. They are already at the heart of a new generation of speech recognition devices and they are beginning to outperform earlier systems for recognizing objects in images. The course will explain the new learning procedures that are responsible for these advances, including effective new proceduresr for learning multiple layers of non-linear features, and give you the skills and understanding required to apply these procedures in many other domains.
Tim Roughgarden
In this course you will learn several fundamental principles of advanced algorithm design. You'll learn the greedy algorithm design paradigm, with applications to computing good network backbones (i.e., spanning trees) and good codes for data compression. You'll learn the tricky yet widely applicable dynamic programming algorithm design paradigm, with applications to routing in the Internet and sequencing genome fragments. You’ll learn what NP-completeness and the famous “P vs. NP” problem mean for the algorithm designer. Finally, we’ll study several strategies for dealing with hard (i.e., NP-complete problems), including the design and analysis of heuristics. Learn how shortest-path algorithms from the 1950s (i.e., pre-ARPANET!) govern the way that your Internet traffic gets routed today; why efficient algorithms are fundamental to modern genomics; and how to make a million bucks in prize money by “just” solving a math problem!