Photo: Veikko Somerpuro

# Introduction to AI

Welcome to the Introduction to AI! This the Fall 2017 edition of the course at the Department of Computer Science, University of Helsinki. The course is an intermediate level 5 credit course, which is organized by the Data Science MSc programme. We also welcome students in the Computer Science BSc programme as well as all other students as a part of your minor subject studies.

The calculated workload of a 5 cu course is 18 hours per week, so please be prepared to spend time and effort in learning. The course will require hard work. You have been warned.

## Prerequisites: What you should know before starting

Prerequisites are good programming skills, and basic data structures and algorithms, and some university level mathematics.

Field Required skills
Data Structures stack, priority queue, tree traversal, heuristic search, A* algorithm; for example Data Structures and Algorithms (Tietorakenteet ja algoritmit)
Programming good programming skills in one or more languages (Java or python recommended)
Mathematics elements of discrete mathematics and linear algebra (set operations, graphs, vectors), probability calculus – multivariate probability is helpful but not required; for example Probability calculus I (Todennäköisyyslaskenta I)

## Learning objectives

Theme Objectives (after the course, you ...)
Philosophy and history of AI
• can express the basic philosophical problems related to AI (the difficulty in defining AI and consciousness, acting vs thinking, Turing test)
• can distinguish between realistic and unrealistic AI in science-fiction
• can describe the contrast between "Good Old Fashioned AI" (GOFAI) and modern AI approaches
• know the main-stream developments in the history of AI
Games and search
• can formulate a problem as a graph and apply search algorithms to solve it
• can explain and implement A* search
• can formulate a simple game (such as tic-tac-toe) as a game tree
• can explain and implement the minimax algorithm and depth-limited alpha-beta pruning
• can design a reasonable heuristic evaluation function in a game (e.g., chess)
Reasoning under uncertainty
• can express uncertain knowledge in a simple situation using a probabilistic model
• can apply the Bayes theorem to calculate posterior probabilities given evidence in a simple scenario
• can estimate probability values from a sample
• can represent a problem solving situation as a Bayesian network
• can apply an approximate (Monte Carlo) technique to perform inference in a Bayesian network
Machine learning
• can distinguish between unsupervised and supervised machine learning scenarios
• can implement at least two supervised classification methods (e.g., naive Bayes, nearest neighbour classifier)
• know the main types of neural networks (feed-forward, recurrent, self-organizing map) and their main principles
• can implement the perceptron algorithm in a simple binary classification problem
Natural language processing
• can generate sentences from a given context-free grammar
• can parse a sentence using the Cocke-Younger-Kasami algorithm
Digital Signal Processing and Robotics
• can describe the principles of at least one pattern recognition method (e.g., SIFT/SURF)
• can apply at least one pattern recognition method in practice
• appreciate the difficulty of implementing an autonomous robot in the real world
• implement simple functionalities, e.g., following a line on the floor, using a robot with limited sensor capabilities

## Working methods

The course includes lectures (2 x 2h per week) and exercise sessions (2h per week). The exercise sessions are meant for discussing the problems after you have completed them by yourself.

The lectures are not compulsory but they are meant to be useful.

Exercise points are marked in the exercise sessions; see Grading below.

You must register in one of the exercise groups on the registration system. If all the groups are full, please register in the overflow group and contact the lecturer or the TAs for instructions.

In case you have an unexpected constraint and can't make it to your own exercise session, the following options are (prioritized): (a) ask for permission to go to another group; or (b) submit your solutions by email before your own group session AND explain the unexpected situation (NB: being busy at work is not a valid excuse). You can only use the option b two (2) times during the course to gain points.

## Course material

There is no course textbook. The course material consists of lecture slides and other material collected here. You can find the lecture slides and other useful information on the course homepage. The lecture slides are found under Material.

## Support

Questions and answers are most easily discussed on the discussion forum which you can access by clicking 'Chat' in the title bar. The lecturer and the TAs will do their best to answer questions but other students are also encouraged to engage in the discussion – often the best explanation is provided by a fellow student rather than a professor!

Please maintain a positive and supporting attitude in all discussions. There are no stupid questions, and making a mistake is often an excellent opportunity to learn – also for others.

Grading on a scale 1–5. Grading depends on the completed exercises (about 33% of the grade) and the course exam (about 67% of the grade). You get full exercise points for completing 80% of the exercises.

# Accounts and tools

## Creating a user account

You'll need a user account to the Test My Code (TMC) system that will be used to automatically assess some parts of the programming exercises. You should also log in to the course material with the same account.

Account can be created here: https://tmc.mooc.fi/user/new.

## Installing the programming environment

We recommend that you use the Netbeans IDE with the TMC plugin. The plugin makes it easy to return the exercises. These tools are installed in computer labs B221 and BK107 under the name 'TMCBeans'.

If you're doing the course on your own computer you'll need to install the Java JDK 8 and and the NetBeans with TMC-environment.

(*) If you're on linux installing openjdk is probably easier. If you're on Ubuntu you can install it with:

```sudo apt install openjdk-8-jdk
```

If you want to do the exercises in Python instead you can download project templates with tmc-cli. You can also download the templates straight from TMC. TMC also gives you an option to submit full completed exercise folders as a zip files. Note: the Python versions of the exercises contain no tests and are mostly just empty projects.

Next select the right course in the programming environment.

### Selecting the right course in the programming environment

Open the tmc settings and make sure that the server address is: `https://tmc.mooc.fi/org/hy`. Then log in and select `hy-intro-to-ai-17` as your course.

If you're using Python and tmc-cli, select `hy-intro-to-ai-17-python` as your course.

## Research participation

Then to the material...