TU Delft > Algorithmics > Neil Yorke-Smith > Teaching
My broad teaching portfolio includes functional courses such as operations and scheduling, and cross-functional courses such as decision models and statistics. My current main teaching interest is applied model-based artificial intelligence.
MSc project? I offer a set of ideas for TU Delft students.
I teach in the Electrical Engineering, Mathematics and Computer Science faculty at the Delft University of Technology (TU Delft). Students are welcome to come to my office in person.
In 2020-21 Q1 I co-taught the BSc class CSE1300: Reasoning and Logic:
CSE1300: Reasoning and Logic is about proving the logical validity of arguments. What is a valid argument? When is an argument logically valid and when is it not? How can we determine whether an argument is logically valid? How can we derive a logically valid conclusion from the premises? Or how can we prove that a conclusion is not a logical consequence of the premises? In this course we will see a number of basic proof techniques. The application of these techniques will be practiced by proving and rejecting simple mathematical theorems. We will also look at elementary set theory. Together, the course provides tools that have important applications across mathematics, informatics, philosophy, and beyond. The course is supported by an open textbook.
A student taking CSE1300? For help, post a question on Stackoverflow, contact a TA or attend the extra lab sessions. For administrative matters, contact the course email address (see Brightspace).
In 2020-21 Q1-2 I co-teach the MSc class IN4301: Advanced Algorithms:
IN4301: Advanced Algorithms asks how to solve instances of intractable problems in reasonable time. By the end of this course, students will have knowledge of and experience with some advanced algorithmic techniques: exact algorithms for NP-hard problems, approximation techniques, and linear programming relaxation techniques. The course is an excellent foundation for studying AI-based optimization.
In 2020-21 Q3 I will co-teach the BSc elective CSE3300: Algorithms for NP-Hard Problems:
CSE3300: Algorithms for NP-Hard Problems studies combinatorial optimization problems such as scheduling or optimally playing a board game, which are often NP-hard. Most of the algorithms in earlier courses run in polynomial time and cannot be directly used for solving NP-hard problems. In this course you will learn some new algorithms, and use these, but also concepts from earlier courses on algorithm design, to solve NP-hard problems.
In 2020-21 Q3-4 I will co-teach the MSc elective CS4210-A: Algorithms for Intelligent Decision Making, and its follow-on MSc seminar CS4210-B: Algorithms for Intelligent Decision Making Project:
CS4210-A: Algorithms for Intelligent Decision Making recognises that decision making is at the centre of artificial intelligence. Students gain practical skills on a solid theoretical base: 1) Modelling realistic combinatorial optimisation problems involving multiple users, and designing systems to solve such problems. 2) Emphasis on problem characteristics seen in decision problems in energy, logistics, and health sectors. 3) Mathematically-grounded techniques with computational feasibility: sequential decision making, algorithmic game theory, constraint programming. The course leads to CS4210-B: Intelligent Decision Making Project in Q4.
Selected Research School Courses
In 2019 I taught a course on constraint programming for the Institute for Programming research and Algorithmics (IPA) in Eindhoven, Netherlands.
In 2018 I taught a course on agent-based social simulation at the 20th European Agent Systems Summer School in Maastricht, Netherlands.
Advice on doing research? See Jan van Gemert's guidelines.
Selected Previous Courses
In 2017-18 I taught the MSc seminar CS4175: Automated Scheduling:
CS4175: Automated Scheduling concerns the effective planning and management of time and resources. It has a crucial role in business, industry, government, and education. Scheduling lies at the intersection of Operations Research, Artificial Intelligence, and Computer Science. In this course we will study real-life scheduling problems from an algorithmic perspective, paying attention also to the challenges of data and system development. We go beyond classical scheduling problems studied in traditional Operations Research, such as the job shop scheduling problem, and focus on realistic problems with complex constraints and objectives.
DCSN200: Operations Management provides a foundation for understanding the operations of a firm. One of the main objectives of this course is to recognize the immense competitive advantages companies can draw from an efficient management of operations. The focus will be mainly on the systematic planning, design, and operations of some of the main processes required for the production of goods and the delivery of services. Operations management touches upon many vital business functions of an organization including product and service design, customer order management, processes design and improvement, capacity and material planning, quality control, inventory and supply chain management.
DCSN205: Managerial Decision Making is a spreadsheet-based introduction to the tools and techniques of modern managerial decision making. It addresses formulation of models that can be used to analyze complex problems taken from various functional areas of management, including finance, marketing, operations, and human resources. The goal is to understand how business decisions are reached, what tradeoffs are made, and how outcomes depend on the underlying data. A broad range of analytical methods is covered, including linear programming, integer linear programming, decision analysis, decision trees, queues and Monte Carlo simulation. Software packages like Excel, Risk Solver, Tree Plan and Arena will be used. DCSN200 is recommended as a prerequisite.
DCSN217: Total Quality Management with Excel focuses on the concepts related to quality in all aspects of enterprise operations with special emphasis on the customer. Total Quality Management (TQM) is a comprehensive and fundamental rule or belief for leading and operating an organization, aimed at continually improving performance over the long term by focusing on customers while addressing the needs of all stakeholders. It is both a philosophy and a set of guiding principles that represent the foundation of a continuously improving organization. The bottom line of TQM is results: increased productivity, efficiency, customer satisfaction, and world-class performance. This course will present the various TQM frameworks, concepts, and quality improvement tools necessary for implementing the quality culture that characterizes world-class organizations of the 21st century.
IIB Statistical Modelling takes an applied perspective to statistics. Lectures cover linear and generalized linear models, which provide a powerful and flexible framework for the study of the relationship between a response and one or more explanatory variables. In practical classes, we learn how to implement the techniques covered in the lectures, by covering several real data sets. Extensive use is made of the programming language R. This course should appeal to a broad range of students, including those considering further research in any aspect of statistics and those considering careers in data-intensive careers (investment banking, insurance, etc).
From 2006-2009, I taught the class CS227: Reasoning Methods in Artificial Intelligence in the Department of Computer Science at Stanford University.
CS227: Reasoning Methods in Artificial Intelligence is a second class in AI, covering methods for (largely) non-probabilistic reasoning in propositional satisfiability, constraint satisfaction, temporal reasoning, and planning. It is complementary to CS228: Probabilistic Models in Artificial Intelligence. Assessment is by group programming projects. The course is appropriate for graduate students (both Masters and PhD students), and for advanced undergraduates with a special interest in AI. Students are assumed to have taken basic courses in AI, algorithms, data structures, and programming, or to have equivalent background in these areas.