2023 – 2024 Cognitive Class: Game-playing AI with Swift for TensorFlow (S4TF) Final Exam Answers
Module 1 – Set up your environment Answers
1. What kind of IBM Cloud account doesn’t require payment information and doesn’t expire?
2. Which of the following platforms does Swift NOT run natively on?
- None of the above
Module 2 – Understanding Swift’s basics Answers
1. Which of the following companies did Chris Lattner work at after Apple?
2. For how many years was Swift in development before it was released to the public?
3. What kind of programming language is Swift?
- Compiled to machine code
- Compiled to byte code
4. Which HTTP server for Swift will this course use?
Module 3 – Tic Tac Toe (Minimax) Answers
1. Why does our implementation of Minimax keep track of the depth of the tree?
- Stop at a certain depth
- Memoize game states
- Take into account the “straightforwardness” of moves
2. How is the tic-tac-toe board stored?
- Row-major format
- Column-major format
3. If minimax started from a blank board and had to calculate the best possible move, how many board states would it evaluate? For the sake of mathematical simplicity, assume the board must be filled completely to be considered “over” – players cannot win.
4. The “minimax” function returns the best move to take for a board state.
Module 4 – Cartpole (Reinforcement Learning) Answers
1. The cartpole game is what kind of problem?
2. The @differentiable function decorator is an example of an implementation of what technology/technique?
3. Why do we only train the network with the top 30% of episodes?
- To reduce training time with fewer samples
- To improve network performance with better samples
4. OpenAI Gym…
- Provides easy-to-use game enviroments to test RL agents
- Ships with RL algorithms to use as agents
Module 5 – 2048 (Monte Carlo Tree Search) Answers
1. The implementation of the 2048 game logic is made fast by:
- Using bitboards
- Pre-calculating moves and scores for rows
2. Which framework did we use to enable Swift to host HTTP servers?
3. Monte Carlo Tree Search is…
- Guaranteed to always give the correct answer
4. Which swift file defines dependencies and other package details?
Final Exam – Game-playing AI with Swift for TensorFlow (S4TF)
Note: Final Exam is a Timed Exam (1 hour)
1. Which tier(s) of IBM Cloud require payment information on file?
2. Why would you want to use a single language, Swift, over many languages, each specialized for a certain task?
- It’s easier to maintain a codebase written in a single language.
- Swift is an expressive, performant, and open source language backed by a large company (Apple).
- It’s slow to facilitate communication between components in different languages.
- It reduces the amount of “reinventing the wheel” required across a codebase.
3. Does Minimax plays perfectly all the time? If so, why?
- It’s trained on a lot of game data and learns how to play perfectly.
- It brute forces a solution based off of the rules of the game, and all possible future situations.
- It’s provided optimal heuristics.
- It doesn’t always play perfectly.
4. Classes are passed by reference, and structs are always, indiscriminately passed by value.
5. A computed property is…
- A variable within a struct/class/enum.
- A function within a struct/class/enum that’s accessed like a property.
6. Why is Minimax penalized for looking at moves deeper into the game tree?
- To improve performance by looking at a more shallow game tree.
- So Minimax takes into account how straightforward a move is.
- To make Minimax more accurate.
7. Why is Reinforcement Learning important?
- It’s more accurate than other training methods.
- It can learn by trial and error.
- It doesn’t require as much data to learn from.
- It can play games.
8. Swift for TensorFlow is interoperable with Python, because Python’s written in C
9. What are some reasons Swift for TensorFlow is special?
- Swift now has a wrapper around TensorFlow, enabling machine learning development.
- Swift for TensorFlow can automatically differentiate complex functions.
- Swift for TensorFlow can optimize complex tensor operations.
10. For what reasons did we implement monte carlo tree search in a time-bounded manner?
- To reduce the amount of time the algorithm takes to search.
- To search game states more if they’re closer to the end of a game.
- To make MCTS more accurate.
- To distribute the algorithm across threads.